Google I/O 2019 dedicated a lot of attention to Flutter and announced an almost overwhelming amount of news about this technology. Just to name a few:
- Google released a preview version of Flutter for the web. It’s not called Hummingbird anymore, now it’s called Flutter Web (An example of Flutter Web is New York Times puzzle game)
- Google released Flutter 1.12 with many improvements (check out the Flutter changelog that documents noteworthy changes)
- The latest Flutter release adds support for building Chrome OS applications
- Google released Dart 2.3 with new support for UI-as-code features
Tim Sneath, Product Manager of Flutter made an aggregation of all the big news announced for Flutter in I/O 19: A roundup of Flutter news at Google I/O.
At the same time, the rate at which Flutter apps are published on Google Play continues to increase. Flutter is becoming a hot topic and, whether you decide to use it or not, if you want to develop or improve your mobile app, you should be aware of what Flutter is, as well as what pros & risks it carries. Let’s start with the basics.
What is Flutter?
Flutter is Google’s mobile app SDK, complete with a framework, widgets, and tools, that gives developers an easy way to build and deploy visually attractive, fast mobile apps on both Android and iOS platforms (official Flutter website).
What’s more, Flutter:
- Is free and open source,
- Is based on Dart – a fast, object-oriented programming language which is in itself easy to learn,
- Provide its own widgets, drawn with its own high-performance rendering engine. They are fast, pretty, and customizable,
- Thanks to the rich widgets, Flutter apps look and feel great (you can create your own custom app design, but also use readily available UI elements following specific platforms’ guidelines). Check out the article about Top Apps Made with Flutter
- The architecture of Flutter is based on the very popular reactive programming of today (the same that React has been made from)
- It’s becoming a serious competitor to React Native, but also to native app development. Read the articles: Flutter vs React Native – what to choose in 2021? and React Native Pros and Cons.
Let’s go to the pros & cons of Flutter!
Why Flutter? 7 top advantages for mobile app owners
From the perspective of an app owner, the crucial advantages are as follows: Flutter speeds up the mobile app development process, reduces the cost of app production, and helps your team to build a beautiful app UI with smooth animations. Let’s take a look at it more deeply. We have prepared the below lists for you with Paulina Szklarska and Karol Wrótniak – our Android Developers who work with Flutter.
1. Faster code writing
For developers, Flutter means faster & more dynamic mobile app development. We can make changes in the code and see them straight away in the app! This is the so-called Hot reload, which usually only takes (milli)seconds and helps teams add features, fix bugs, and experiment faster. It is one of the things about Flutter loved by every top Flutter app development team.
Hot reload is also very comfortable in developer-designer cooperation when we want to improve or experiment with an app’s look and check the effects on the spot. In other words, with Flutter, your designer or tester can work together with a developer on the UI, making changes – for example, “Put it 2 pixels right” or “Make the animation faster” – and see them immediately.
Most types of code changes can be hot reloaded. But there is a list of changes that require a full restart: Hot reload Limitations.
Whereas, in the case of native app development the project needs to be rebuilt and that takes much more time. You have to wait for every single change – sometimes, even up to several minutes.
2. One code for 2 platforms
Developers write just one codebase for your 2 apps – covering both Android and iOS platforms. Flutter doesn’t depend on the platform, because it has its own widgets and designs. This means that you have the same app on two platforms. Yet what’s important is that, if you want to differentiate your apps – it’s possible.
3. Less testing
If you have the same app for 2 platforms, it means less testing! The Quality Assurance process can be faster. Because of one codebase, the developers write automatic tests only once. What’s more, Quality Assurance specialists have less work to do, because they have only one app to check. Of course, if your apps have some differences, they need to be tested on both platforms.
4. Faster apps
Flutter apps work in a smooth and fast way, without hanging and cutting while scrolling. If you want to understand why and how it works from the technical point of view, read this article. Also, check out this amazing page in the Flutter documentation that talks about best practices for app performance.
5. Designs which your users will love
Flutter is designed to make it easy to create your own widgets or customize the existing widgets. Here you can browse a catalog of Flutter’s widgets and view, for example, Material Design widgets and Cupertino widgets.
6. The same app UI on older devices
Your new app will look the same, even on old versions of Android and iOS systems. There are no additional costs for supporting older devices. Flutter runs on Android Jelly Bean or newer, as well as iOS 8 or newer.
7. Perfect for MVP
Do you need an MVP (Minimum Viable Product) for your app to show it to your investors? Flutter will be perfect, especially if you have little time.
If you want to see some apps built with Flutter, check out the Flutter Gallery app, which is a demo of some of Flutter’s features, widgets, and vignettes.
Does Flutter have any cons? 3 risks for mobile App Owners
1. Flutter is still in beta In April 2018, Flutter beta 2 has been announced. The Flutter team hasn’t released the stable version yet. “Our APIs are stabilizing, and we continue to improve parts of the system based on user feedback. Some key features are not yet ready for broad deployment” – we read on the official Flutter website. So this means that we can expect changes and improvements that can demand future changes in our code if we ship an app before the stable version of Flutter is ready.
Edited: Flutter is no longer in beta
On May 2019, Google announced the availability of the new stable build, Flutter 1.7.
2. Libraries & support – impressive, but still not so rich as for the native development
Google support for Flutter is impressive, and there are many helpful libraries with functionalities ready to be implemented. But Flutter is still new and not every functionality which you need can be found in these libraries. This means that your developers would need to build them by themselves, which can be very time-consuming.
Here you can find Flutter Packages – a list of features ready to be added to your app. What’s important is that these packages are checked, analyzed and rated for factors like health, popularity, and maintenance.
can expect see that the support for Flutter is improving at a rapid pace. What’s more, the Flutter team is actively involved in supporting Flutter users by frequent solving and answering requested issues.
3. Continuous Integration support
Since Flutter is still in beta, For now, Flutter is not widely supported by CI platforms like Travis or Jenkins. So, to achieve automatic building, testing, and deployment, your development team needs to use and maintain custom scripts like this one. However, Bitrise.io is the exception where you can find a ready to use build step.
- There is a new CI/CD system for Flutter applications called Codemagic that was announced at Flutter Live 2018.
- In January 2019, Bitrise announced the full-featured Flutter CI.
- Worth to mention: one of our team members, Karol, is continuously working on Flutters build step for Bitrise. The last release added the possibility to build appbundle for Android releases (read more about it here).
Is Flutter a good idea for every kind of mobile app?
There are a few cases when it’ s worth to consider if Flutter will be a proper solution:
- Progressive Web Apps & Instant Apps
They need to be small and Flutter apps – even optimized – are bigger than native ones. The overhead varies from just a few to 20 megabytes, depending on whether it is a release or development build. Note that Google allows apps of max. 10MB.
- Apps which communicate with any hardware via Bluetooth
If you want to develop an app with this kind of features and use Flutter, you can:
- Develop these features separately for iOS and for Android and then add them to the main Flutter app using platform channels. In this case, it’s hard to say if it will save you time more than if you would develop two 100% native applications.
- Develop these features for both platforms at the same time, using an existing Bluetooth plugin for Flutter – e.g.– FlutterBlue.
Which option is better? Hard to say.
As we can see on FlutterBlue repository on Github (06.12.2019), there are more than 200 opened issues and 36 pending Pull Requests. These numbers suggest that this library might require more maintenance and development.
In the case of technologies such as Flutter, which are improving rapidly, frequent plugin’s updates are essential – and it has been updated very recently.
How essential is it? We do not know, because the technology is still too young, but in the case of iOS apps, if a library is not maintained for six months (it’s a lot of time), we keep away from it, and the plugin for Flutter is basically a library for Android and iOS implementing the same features.
Last, but not least – if your app needs an advanced Bluetooth feature, FlutterBlue might be not enough.
In our opinion, FlutterBlue might not be mature enough to be used in a commercial product, but we see promising potential in it.
For now, a less risky option would be choosing native development for apps that communicate with any hardware via BLE – especially if you will need some advanced BLE functionalities.
- Apps demanding rare, little-known native libraries
If in your app development, you expect to use any specific and rare native libraries and they are not already in Flutter’s repository, it can still be possible but it will be complicated. Developers would have to implement the custom platform channels by themselves – separately for both Android and iOS. This is what can take time.
Wrap up & our recommendation
In our opinion, Flutter has many more advantages for business and development teams than risks. It’s a great chance to build beautiful, high-performance, and outstanding mobile apps that fit your custom needs and requirements. It’s worth considering Flutter, especially if you want an app both for iOS and Android.
What’s more, it can save you time & money.
The major risk comes from the fact that Flutter is still improving and is not 100% completed. So, if you want to use Flutter, consider if you want to wait for the stable version release. It’s hard to say when this will be ready. Hopefully, it’s only a matter of months. Flutter 1.17 is already available, so it is worth at least to give it a try!
We also asked our friend – Tomek Polański – for his opinion about Flutter. Tomek is a Senior Android Developer at Groupon and, at the TOAST – Android Developer Meetup #17, he gave a presentation: “I convinced Groupon to Flutter. Do the same with your company”. Here’s what he said:
Flutter is perfect for creating a customized application experience. Time and time again it has been shown that award-winning applications (MWC’s Glomo Awards, TIME’s Best Apps of the Year and the Webby Awards Mobile Apps) focus on delivering beautiful custom experiences rather than the pixel perfect native iOS/Android look – and Flutter delivers on this.
On one hand, you have the ability to create a simple UI rapidly and, on the other, Flutter is a powerful tool to create beautiful custom applications thanks to its extensibility. The thing that I’ve found positively surprising is that we have communicated that developing applications in Flutter is much faster than native, product people were still astonished that’s true in practice.
We wish you good luck with Flutter! If you already have tried it out, share your impressions and leave a comment 🙂
Useful links about Flutter
- Roadmap for Flutter developers in 2021 – feel invited you to contribute!
- Official Flutter website
- Dart language
- Announcing Flutter 1.0 (Flutter Live, Keynote Part 1)
- Announcing Flutter 1.7
- Material Components Widgets
- Cupertino (iOS-style) Widgets
- Flutter Gallery
- Flutter Packages
- Flutter issues requested on GitHub
- Build step on Bitrise
- Flutter Weekly