Why Flutter Is, in Fact, the Next Big Thing in App Development
It’s an unstoppable train coming towards us, and you’d better hop on early
Last week, Michael Long wrote an article explaining in detail why Flutter won’t be the “next big thing.” It evoked some passionate reactions from readers, most of them disagreeing with what he wrote. Because I strongly disagree as well, I wrote this article to explain exactly why Flutter will, in fact, be the next big thing!
What Is Flutter?
Flutter is a cross-platform toolkit for developing GUI applications developed by Google. A Flutter app natively compiles to:
- iOS and Android
- Windows, Linux, and macOS
- The web
Many developers have already discovered Flutter and consider it to be a fresh breeze compared to traditional app development frameworks. Most of those who work with it are raving about the increased development speed.
In fact, a notable feature of Flutter is the way it leverages the Dart virtual machine during development. Flutter allows you to develop your application interactively and quickly inspect its current state. Any changes to your code are instantly injected in the running app, so you can directly see the effect.
But why is Google pushing so hard to develop this new toolkit? And why is Flutter going to be the next big thing in app development?
Cross-Platform Development Done Right
There are other cross-platform toolkits out there like QT, React Native, and Xamarin. I’m not going to argue which one is best.
What I would like to lay out, though, is that Google is doing many things right here:
- The overall design of the Flutter project is excellent and future-proof.
- The developer documentation is solid and keeps improving.
- The ecosystem of Dart and Flutter packages is quite impressive for such a young project.
- The way everything is composed of widgets feels very natural to many and allows for lots of creativity and adaptability.
- The speed with which Flutter as a project is progressing is astonishing.
- All the major platforms are supported already (some are still in beta).
There are more than 90,000 Flutter apps in Google’s Play Store, up from 50,000 just a few months before. There are no stats for iOS, but it should be similar.
Look and Feel
I’ve heard the arguments about Flutter not looking like a native app. Although I get where that’s coming from, I don’t see the problem. People don’t care about the exact and native look and feel of a button. As long as it looks nice and the overall design conforms to what they know (e.g. Material Design), it’s fine!
In fact, not relying on the native layout elements of a platform — minimizing the reliability on the underlying platforms — is one of Flutter’s biggest strengths. Flutter developers don’t have to worry about what the upstream operating systems will do in their next update. As long as Flutter has its canvas to draw on, it will keep working just fine.
If you haven’t heard of Fuchsia yet, I don’t blame you. It’s a new open source operating system that Google has been creating since at least 2016. It is designed from the ground up for security and updatability.
Note that this is not a 20% project from a few Googlers. It’s a real OS that’s being developed to run on many platforms: phones, watches, car entertainment systems, PCs, and laptops! Big names from tech are quietly working on it, and it’s being developed for “production devices and products used for business-critical applications.”
So why am I telling you this? Well, guess what the Fuchsia developers are integrating into their new OS? Yep, it’s Flutter! Once Fuchsia is ready for release, it will have a headstart if hundreds of thousands of apps can run on it with little to no modifications.
Canonical, maker of the most popular Linux distribution Ubuntu, has contributed to the Flutter project as well. With the GTK+-based host they created, Flutter apps can run on Linux too. It’s a smart move. With a relatively small investment, Linux might start getting much more end-user desktop apps — something that has been lacking for years.
Existing Platforms Are a Mess
I started learning Android, for the second time in my life, about a year ago. What I found was a big, ugly mess. Learning Android, as a newcomer, is torture.
The project switched to Kotlin as the primary language, but many examples and tutorials still use Java. Although Kotlin is an excellent alternative to Java, it also obfuscates (or abstracts away) some critical concepts and makes Android development even more confusing. Also, it’s one more language you need to learn. Java was not the problem and Kotlin didn’t solve much. But it did introduce extra noise and a scattered landscape.
Android also has seen many iterations of its libraries that often try to be downward-compatible. It’s hard to know what, right at this moment, is the best way to do something in Android. You’ll usually find two or three alternative methods, all doing things differently.
I truly tried and I’m convinced I started the right way by focussing on Jetpack, which is supposed to be the latest and greatest. But even Jetpack seemed unnecessarily complicated to me, and documentation was scarce too.
For advanced, single-page web apps, Flutter is an excellent alternative to this mess. The bonus, getting the Android and iOS apps pretty much for free, will save companies precious time and money.
I’m convinced that Flutter will replace many Android and iOS applications in the coming months and years. It’s so easy to build cross-platform apps with Flutter that these apps will start to pop up in the Windows, macOS, and Ubuntu Linux app stores as well.
With Flutter’s support for the web, more and more apps will start to become available right from the browser. That’s ideal for one-time usage or for teasing people to install the app on their devices.
Flutter is an unstoppable train that’s coming towards all of us. You can either hop on early or get crushed by it sometime in the future.
But that’s just my opinion. I’d love to hear your take on this in the comments!