January 10, 2020
What is Flutter? How is it different from React Native? Is it a good choice for MVP (Minimum Viable Product)? And is it really the future of mobile application development?
In this post, I will be covering all of these questions to give you a better understanding of the benefits that this fledgling technology offers.
These days, mobile applications are more prevalent than ever before. This sweeping expansion has been driven primarily by the fact that smartphones have become much cheaper and faster, while mobile networks have spread to the point to allow us to remain connected to the Web almost constantly. This trend, in turn, forced companies to better meet user expectations and create native versions of their products for major mobile platforms, making them fast and easy to use, and thus ensuring they stay competitive on the market.
If you’re interested in building sleek mobile apps, there are a couple of technological options to choose from, particularly when you’re interested in having only a single codebase for your project. Facebook’s React Native, the younger sibling of React, is one such framework. Flutter, a framework developed and supported by Google, which I’ve recently heard about at one dev meeting, is another.
So what exactly is it? Well, in theory, Flutter is a software development kit:
"for building beautiful, natively compiled applications for Mobile, web, and desktop from a single codebase”.
offered as open source, free of charge.
When it comes to cross-platform mobile application development technology trends, both RN and Flutter are pretty similar in terms of popularity, and both are still quite young (React Native was released in 2015, Flutter in 2018). As of this writing, RN has a bigger community, but given Flutter’s rate of growth, I think it’s safe to say that it will catch up to React Native very soon.
Interest in Flutter and React Native in 2019. Source: Google Trends
Staying for a second longer in purely technical matters, installing and running either Flutter SDK or React Native is rather straightforward and the available documentation is on par with that of any other mature environment.
Below, I listed five particular aspects of Flutter, which make using it a pleasant, enjoyable experience:
1. One codebase. Flutter supports both Android and iOS mobile platforms, and because it renders everything by itself, it lets you run everything off one codebase.
2. Widget tree. In Flutter, the user interface is built with widgets, small UI building blocks assembled using a technique called Composition. The whole somewhat resembles using React components. There are two sets of widgets available out of the box: Material Design, which is compatible with Google’s design guidelines, and Cupertino, compatible with Apple's Human Interface Guidelines for iOS.
3. Pixel rendering. Flutter manages every pixel of the screen, so we can be sure that our widgets will look the same on every device (even the older ones), essentially removing our potential device support woes. This, in turn, allows us to create amazing-looking user interfaces that look exactly the same on both Android and iOS with a single codebase.
4. Hot reload. This is where Flutter truly shines: hot reload feature provides the ability to introduce changes on-the-fly, allowing you to see them immediately during development.
5. Cross-platform. As already mentioned, the Flutter SDK is a cross-platform tool, that allows us to develop for desktop, mobile, and the Web using a single codebase. Google is still working on support for all platforms, so some features may not be available yet (e.g. the API for desktop is still in development), but it’s possible that Flutter will offer fully cross-platform support quite soon.
In the development process, the MVP is an important step taken before the product becomes a full-fledged app. Such an approach offers a number of benefits:
2. It allows us to test ideas and get rapid feedback.
3. It offers a linear increase in feature improvement.
Flutter helps save developer time primarily due to cross-platform support, because it eliminates the need for platform-specific codebases. On top of that, the hot reload feature, which helps tremendously when it comes to adding new features or fixing bugs using the well-rounded debugging process, makes Flutter a highly performant tool. These qualities make it a highly appealing candidate when considering the technology to choose for Minimum Viable Product development.
We’ve already covered Flutter’s essential characteristics and how it differs from its fellow cross-platform frameworks, so one last question remains: is it really the future of mobile development? In my opinion? Yes. Flutter offers a bevy of features that can help us develop beautiful looking mobile applications, with a better user experience, and do it faster. Many sources, citing the steady rise in Flutter’s popularity over the last couple of years, predict that the trend will continue in 2020.
Interest in mobile development technologies in 2019. Source: Google Trends
Of course, every application presents a different case and choosing the right technology is something that should be discussed from the very start with the rest of the team, so that the choice is ultimately made based on the pros and cons of all the solutions taken into consideration. Although Flutter is still a very young technology, it has already made a name for itself in the mobile application development world, and I think 2020 is the perfect time to finally give it a shot if you’re considering it for your next MVP.