Mobile development with Flutter for executives
Among 50+ mobile apps developed by me or with my participation, the latest 3 (one already in production) were made with Flutter cross-platform framework. And I see no significant impediments for using it for projects of different scale: from a quick PoC to MVP to a full scale superapp with millions of users and high demands for reliability.
There are two conceptual approaches to developing mobile applications:
Native approach utilizes different tools for each mobile platform, iOS and Android: programming languages, frameworks and libraries, development environments etc. Hence, separate engineers dedicated to each of the platforms are usually needed as well. That allows you to target the best possible outcome: optimal performance, native look and feel.
Cross-platform approach aims for reusing the same codebase for both platforms as much as possible. There are plenty of different cross-platform mobile frameworks alongside Flutter: React Native, Titanium, Ionic, Cordova etc. Each one has its own pros and cons.
What makes Flutter stand out between the competing cross-platform frameworks, is its most “native” nature. Instead of using Javascript programming language at its core, which is comparatively slow at runtime, it boasts compiling the Dart code directly to machine code. That ensures performance close to native. Also, it draws the user interface with the powerful Skia rendering engine, not inside a slow web view, like some others do.
Two obvious advantages of using Flutter in your mobile development projects are reduced cost and increased speed. Which, for sure, are expected to be comparable for all cross-platform technologies.
In case of Flutter, it’ll be safe to say that more than 50% of effort can be reused for both platforms on the initial development stages, when a lot of platform-specific work needs to be done: setting up App Store and Play Market projects, different integrations for notifications, payments, analytics etc. Reusability can easily exceed 90% on later stages, when mostly UI, business logic and other common parts are being actively developed.
Less effort effectively means less developer-hours, or even less engineers involved. In a simple reduced case, only one developer instead of both iOS and Android engineers. That can make a significant impact on the overall development speed: less developers means decreased need in management, amount of decisions made, synchronization. Higher speed — faster testing of hypotheses, faster time-to-market.
Recommended by LinkedIn
Of course, there are certain drawbacks and risks of using Flutter, which need to be considered.
First one is fully technical and tends to be minor: Flutter app has a slightly larger download size, as compared to native one. We are talking of additional 10-20 MB, on average — really insignificant.
Also, while Flutter offers Material (Android) and Cupertino (iOS) libraries of UI components, sometimes the final look is not 100% native. There are means and approaches to overcome it. Another option is to use fully custom design for some components, such as alert dialogs or date/time pickers. Again, not a major issue in my opinion.
Flutter is being developed and supported by Google. The company is well known for shutting down lots of its projects. While there is a risk of Flutter being discontinued by Google, there are some signs that it’s not that probable. First of all, Google uses Flutter to develop some of its own apps: Google Ads, Google Pay, Stadia to name a few. Also, there is a huge open-source community actively supporting the core development, as well as development of an ocean of additional libraries. The official documentation boasts that over 1 million apps developed with Flutter are currently available. In the worst case scenario, there are a lot of hands to be able continue to support Flutter development.
To finish on a high note, there are also a few interesting positive side-effects of cross-platform Flutter development. For example, there is no need to start developing and shipping for both platforms from day one. You can focus on a platform of your choice, moving even faster, then add the other as the need arises.
Another example: due to some differences in iOS and Android nature, as well as their userbases, some apps can be more popular and profitable only on one of them, but not the other. Sometimes it can lead to abandoning or even discontinuing the app on one of the platforms to cut the costs. In case of cross-platform, the cost of further supporting the second (say, not profitable) platform for the app tends to be almost zero.
Oh, and have I mentioned that Flutter also supports building apps for desktop (macOS, Windows, Linux) as well as Web? There is even an extreme case of using the same Dart programming language for backend needs. Truly cross-platform!
Is there anything else you’d like to know about Flutter? I’d be more than happy to discuss it.
Full Stack Engineer @ Snapshot Labs | High Load Architecture, Web3.js
1yCan you share insights on how Flutter's performance compares to native apps in terms of memory usage and responsiveness?