What are Flutter’s pros & cons in mobile app development? Is Flutter a good idea for every app? In this article, you will find essential information about Flutter for App Owners, Product Owners and everyone who wants to develop a mobile app.
Guest blog by Agnieszka Czapla, content marketing manager at Droids On Roids. The original post appeared on Droids On Roids blog.
Droids On Roids is a full-service mobile & web development company from Poland, building high-performing applications for great brands and start-ups like GIPHY, Skybuds & Electric Objects. With 50+ projects in their portfolio, Droids On Roids' solutions serve millions of users across platforms and channels. Member of Google Developers Agency Program. Ranked twice in the Deloitte Technology Fast 50 Central Europe.
Google I/O 2018 dedicates a lot of attention to Flutter. About 25 different talks will refer to this SDK! At the same time, the rate at which Flutter apps are published on Google Play continues to increase. And this is just the beginning.
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 website).
Flutter enables a smooth and easy cross-platform mobile app development. You don’t need to develop an iOS and Android app separately. All you need is one codebase for both platforms.
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 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)
- The architecture of Flutter is based on the very popular reactive programming of nowadays (the same that React has been made from)
- It’s becoming a serious competitor to React Native, but also to native app development
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 thus: 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 are actively working 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.
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.
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 has 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.
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.
However, we can expect that the support for Flutter will improve in 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, it 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.
Is Flutter a good idea for every kind of mobile app?
There are a few cases when you should not consider if Flutter is the 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.
- Apps which communicate with any hardware via Bluetooth
These kind of features, like BLE connections, must be developed separately for iOS and for Android. You can develop them natively and add them to the main Flutter app. In this case, it’s hard to say if it will save you time.
- 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 which fit your custom needs and requirements. It’s worth considering Flutter, especially if you want an app 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.
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. (Tomasz Polański - Senior Android Developer at Groupon)
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
- About Flutter features from an Android developer’s point of view: Flutter 5 reasons why you may love it
- About Flutter’s unique possibilities: What’s Revolutionary about Flutter
- More helpful links at GitHub