Subscribe to our newsletter
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.
It's been more than a year since I wrote this article. A year is an eternity in technology and computer science. During this time, Apple made the move to processors for macs; Microsoft bought Github, and SpaceX became a private company taking astronauts into space.
It also was a significant year for Flutter. We had big Flutter conferences (I attended Flutter Europe) and two substantial online Flutter events organized by Google. During the course of the year, we also had many updates to the core library and many new third-party libraries.
With all of this in mind, I took a look at this article and decided to update it in light of what we know now. Some topics have changed during this time, and I’ve also added a couple of new points. I hope you find it useful.
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 Adaptation to Different Screen Dimensions
Last year Apple introduced SwiftUI, a new declarative framework for writing UI. This framework makes writing UI on iOS very easy. And with this year's WWDC announcements, SwiftUI code will be portable to macOS and iPadOS. On the other hand, the Flutter team has worked hard to bring desktop and web support for Flutter. It's still not production-ready, but it works and can be used for internal or not end-user tools.
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
As I mentioned in the introduction, now we have a lot of libraries for third party providers. I have to write some native code only once, and the reason for this was a bug in a QR Code Scanning library, which I fixed and committed to that library. Nowadays, if you are a mobile SaaS, you should offer your SDK for Flutter; otherwise, you may lose many potential clients.
10. Compiled Code: Stable Performance
Flutter is created with animation support in its foundations. Making custom interactions and rich animation is much easier than in native iOS or Android. Of course, adding animations to the application is a time-consuming task. I don't want to create the impression that in Flutter, you will get an animated app in the same time that it takes to build an unanimated native one. Still, I can assure you that you should consider Flutter if animations play a significant role in your application.
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
The number of Flutter developers on the market has dramatically increased in the course of the past year. Some companies have a Flutter-only mobile department and others like 10Clouds have added Flutter to their existing offer. And I'm not surprised by that. Writing Flutter code is a very satisfying task, so most of our developers want to do just that.
3. Platform Limitations
One of the limitations that I pointed out - the Flutter team already handles autocompletion support on iOS and makes this available on Flutter. The second limitation is that video support doesn't change very much. There are better libraries, but I couldn't find anyone that supports Airplay, for example. There may also be problems with the new iOS Picture in Picture functionality too.
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.
6. Bigger Project Size
With Flutter, we are adding a third-party library to our project. The outcome of that is the fact that our application will be bigger in terms of file size. But don't be scared of that. In a current time where people have a broadband internet connection, a difference of 10-20MB on the iOS application is not a big deal. Additionally, Flutter for Android supports this app bundle, making application updates smaller. But you should consider that point when you are creating a demand for countries with reduced internet availability (usually in those cases, you don't need cross-platform solutions and iOS applications at all).
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.