From faster development and simultaneous app updates, thus saving a lot of time, to easy maintenance, Flutter has a lot of advantages, and we often recommend it to our clients. However, it won’t suit every project. Read the article and find out, if it’s a good fit for yours.
I know that if you follow Betteridge’s law, the answer to the question placed in a headline should be „no”, but in the world of mobile development, nothing is that simple. It depends on what you want to achieve and what are your project’s business goals. Flutter is a really good framework for some things, but as all cross-platform technologies it also has limitations.
You shouldn’t consider it as a magic bullet for all your troubles. In this article, I’ll list the pros and cons of using Flutter, that you, as a business owner, should consider before starting a project in Flutter. We are using a similar list at 10Clouds to recommend our potential clients technology that they should pick for their next product.
Disclaimer: This article was written just after the publication of Flutter 1.5.4 and my experience is based on that and previous stable versions of Flutter.
Flutter for Your Project: Pros
1. Faster Development
Flutter is a cross-platform solution, so one codebase can be run on both Android and iOS. This saves a lot of development time. Of course, it will not be cut in half, but it is safe to bet that writing one codebase for both platforms will take “at least one quarter less” than writing separate projects for both platforms. I and other of our developers also think that writing Flutter apps is easier than writing native applications – we wrote an article about it some time ago.
2. Simultaneous App Updates on Android and iOS
The same codebase for both platforms allows you to release app updates simultaneously. This one is hard to achieve when there are separated projects for both platforms. Different availability of developers, or longer implementation on one platform makes synchronizing difficult. The problem grows when an application update also requires changes in backend infrastructure.
Flutter and other cross-platform tools remove this problem because we make applications for both platforms at the same time. Of course, it is worth remembering that iOS application must pass Apple review each time it is updated.
3. Easier to Maintain and Develop New Features
When your apps are ready and published, you can focus on expanding the user base. This often means moving the app to the maintenance mode, in which fixing bugs is a top priority, and adding new features goes on a second track.
On this step, startups often think about creating their own team. With Flutter, it can be easier because you have to hire one developer instead of one for iOS and the other for Android.
4. Future-proof: Instant Fuchsia Support
Google is working on a new operating system called Fuchsia. There is vague info right now what this system can be, but there are speculations that Fuchsia will eventually replace Android. Flutter is a native framework for Fuchsia apps. If you write an application in Flutter, you will be ready to release it on Fuchsia from day zero. This can give your app an early adopter boost.
5. A Perfect Choice for Advanced UI
Flutter renders all parts of the interface using internal graphics engine called Skia – the same that is used in Google Chrome, Mozilla Firefox, and Sublime Text 3. This fast and well-optimized piece of software allows Flutter to behave differently than most of the other mobile development frameworks.
Using Flutter is closer to writing a game. From the operating system, you get a blank canvas, and all UI elements are drawn by application. Flutter team put tremendous work to recreate Material UI components and Apple Design System elements internally. Of course, you can also make your own components, and this is a point where Flutter will shine. Creating good looking custom UI elements is very easy, and you will have them working on both Android and iOS. This makes a Flutter a perfect choice for apps with advanced, custom UI designs.
6. Easy Adapting to Different Screen Dimensions
Flutter layout system and declarative nature of framework itself makes writing and fitting views to different screen dimensions easier than in iOS SDK. Making animations is also smoother than in native iOS and Android. Moreover, looking at the roadmap of Flutter, we shouldn’t wait long for support for desktop and web applications.
7. One UI Design
If you want an application that looks native on iOS and Android, we probably won’t recommend you Flutter. This will be explained in the cons section, but now let’s get back to the pros.
With one codebase for both platforms, you will only need one UI design prepared by designers. The cross-platform application usually follows Material Design principles, with only small adjustments for different platforms (which Flutter usually handles by itself) or makes the whole UI look custom, with elements based on the best solutions taken from iOS and Android.
8.Technology Tested by Giants
Flutter is still relatively new (the first stable version was published on December 4th, 2018) but it is already tested in the field by such companies as Google (Ads and Greentea apps, an interface of NEST Hub device), and Alibaba (Xianyu app). Google is a maintainer of Flutter, so this may be not authoritative, but Alibaba with over 50 million users or Reflectly mentioned in “New Apps We Love” category by Apple gives you the idea that you can trust in Flutter as a technology for your next product.
With one codebase for both platforms, you will only need one UI design prepared by designers
9.Access to Device Features
One of the main reasons why people are scared of cross-platform solutions is a problem with access to native features. After all, that makes your app outstand simple webpage is the usage of camera, GPS, or haptic feedback. It could be easier, but of course, you can use these features in Flutter as well.
You have to prepare iOS or/and Android code (in Objective-C/Swift or/and Java/Kotlin) and send data to Dart (which is the primary language used in Flutter) by a special mechanism called platform channels. Flutter core team and community prepared channels for most native functionalities of your phones, so you don’t have to write them on your own. If you want to use something more unpopular (like a native library), channels are waiting for you.
10. Compiled Code: Stable Performance
1. Platform Specific Look and Feel
As already mentioned in the pros section, if you want to make your app follow Apple Design System on iPhones and Material Design on Android devices, it will be better to prepare two separate applications.
Of course, in Flutter, you can check which platform the app is running and render different components on the screen. We use this when we want to display Dialogs/Alerts that look like native ones of the system. However, making a whole application that way will burn more time than writing two separate applications. After all, Flutter is a cross-platform framework.
2. Young Technology
With every new technology comes a risk that it will evolve in the way we don’t want to follow, or maybe (God forbid!) it will be dimmed by the maintainer. The fact that Flutter is sponsored and developed in Google, and they plan to use it in their new OS make this scenario unlikely. Nevertheless, it is good to know about this.
The second thing is, there are fewer Flutter developers on the market than native iOS and Android ones. Personally though, I would not demonize this point, because experience from 10Clouds shows us that mobile developers are willing to learn Flutter, and learning it turns out to be a quite enjoyable experience.
3. Platform Limitations
Flutters own UI rendering nature adds some limitations. For example, if some features are integrated into the UI on native platforms, there must be recreated by the Flutter team. There are two examples that we already identified:
- video player – there are implementations of a video player in Flutter but they look different than the system one (especially on iOS).
- iOS profile data completion – do you remember this email or password prompt above keyboard? This feature is not supported in Flutter (yet). To overcome this problem you have to write native view for a text field in iOS and embed it in Flutter (yes, this is possible and we tested it on exactly that case). NOTE: SMS code suggestion works in Flutter without any code changes.
Solving these problems is possible, but it is also time-consuming.
4. Handling of New System Features
All new features of iOS and Android will be introduced in Flutter later than in their native SDK-s. You will have to wait until your application can support foldable screens or dark system mode. However, the truth is that in native development we usually can’t add new system features from release day because we have to keep system compatibility.
5. Native SDK Knowledge
In every Flutter project, you will need people experienced with native development – from simple things like building an Android version, through more complicated, like flavors and making builds on iOS, to writing native views for both platforms. In 10Clouds, we are in a comfortable situation – we can always ask native developers for help. But if you consider creating your own team, you have to keep in mind that Flutter developer must be open minded for both platforms.
So, is Flutter Good For Your Business?
As you can see going full steam ahead with Flutter is not a decision that you can make in no time. There are more pros than cons, that’s true, but if you will push on implementing many platform-specific features or different UIs for both platforms you will lose all the advantages of that framework. It will also complicate your code and may result with problems in future development. On the other hand, you will get your app faster, and faster development saves you money and allows to validate your MVP idea quicker.
10Clouds is a mobile application development team from Poland. We develop outstanding mobile apps. Check out our mobile services website to get more details or just contact us. We can build an excellent product for your company.