The increasing demand for cross-platform apps which can perform on both iOS and Android (and some other systems as well) using one codebase and so save time, money and effort companies put into creating apps brought to the need of developing technologies to build them. Although a few solutions have been created, two has already gained the ground in hybrid app development - Flutter and React Native. Maybe first of them is more recognizable but Google is not going to throw in the towel and it arms his framework with some competitive features. So what’s the state of this duel right now? Which solution should you choose for your business? Let’s compare them considering a few most important issues typical for cross-platform mobile development and the business-oriented approach.
Source: Google Trends
To evaluate the frameworks’ stability we need to take into account a few issues like who supports its growth, when it was released and who uses it. This can tell us a little bit more about the maturity of the technology and the further perspectives of its development. Credibility means everything when you consider using such fresh solutions and their current state is not the only thing that matters but also a high probability that the technologies will evolve and still be supported by founders and community in the future.
- Stories of the frameworks
Cross-platform technologies are still novels in app development landscape so most of them don’t have an impressive history behind them. React Native was launched in 2015 and its creator - Facebook puts a lot of effort to improve it. Flutter is 2 years younger (and the stable version actually came in 2018) and the author standing behind is a worthy opponent for FB - Google.
- Flutter vs React Native communities
Both solutions are open source and free cross-platform app development frameworks and managed to assemble active communities around them. React Native has almost 2000 contributors who made over 17 000 commits and in Flutter's Github analogous figures are 415 and around 15 000. So the community around Facebook’s framework is much bigger but the engagement and the improvement intensity is pretty much comparable.
- Who uses them?
Performance and UI
This is probably the most difficult field for cross-platform mobile development technologies and their biggest complex in relation to native apps but at the same time, those aspects are actively improved to provide hybrid apps the very best native feeling. Smooth and quick performance, intuitive navigation, delightful design - these are the challenges for Google’s and Facebook’s frameworks. How do they deal with them?
Although there’re many factors contributing to the performance what mostly matters in Flutter vs React Native competition is the way they communicate with native modules. RN needs JS bridges to do it which slows down the app’s work. Flutter doesn’t. Why? Because the whole app created with Flutter it is compiled into a native code so the access to the native components is immediate.
- UX and UI
The difference in the mentioned way of communication arise from the distinct approach to User Interface used in Flutter and React Native. First of these cross-platform mobile development frameworks provides its own widgets for Material Design and Cupertino so you can implement designs of the particular platform and even customize them. React Native uses native components so all the changes in UI of iOS or Android will be implemented in RN apps.
Speed and simplicity of development
Time- and cost efficiency are the key values of cross-platform mobile development. Speeding up app delivery together with money savings is a perfect mix for some companies like startups. This powerful worth stems mostly from the ability to reuse the code but also from some other attributes like mentioned below.
- Learning Curve
Flutter uses Dart which let’s say is not in the programming languages mainstream. Nevertheless, software developers admit that Dart is easy to learn and use as it has a lot of similarities with Java, JavaScipt, and C#, and also provides understandable documentation appreciated for its transparency.
Rady-made add-ons provided by both - creators of the frameworks and community around them make cross-platform app development even easier and faster. React Native can boast a massive collection of libraries and other ready to use components which really shorten the time to market. At the same time, Flutter has maybe less of them but mostly own, not a third-party one which makes the framework more independent.
- Making changes
Dynamic app development requires a fast implementation of changes so features shortening the time to introduce modifications are very welcomed in cross-platform technologies. React Native milks it to the last drop ensuring the hot reload option and OTA (Over-the-Air) updates (using Expo or CodePush). First of them enables to tweak the UI and fix some minor bugs while the app is running and second empowers to deploy updates directly to users’ devices without the necessity of publishing the changes on the Apple App Store or Google Play Store. Flutter supports only hot reload with some limitations. The solutions simplifying the process of modification are also useful in maintaining the apps as cross-platform mobile development is still very fresh technology and involves frequent upgrades.
Flutter vs React Native - and the winner is…
...none of them. Neither React Native nor Flutter is a silver bullet to create apps using cross-platform mobile development technologies. In this current moment, Facebook’s framework is more mature and stable, facilitating the coding by using the most popular programming language - JavaSript and assuring the support of the wide community around it. But Flutter seems to grow much faster and it might be just a matter of time for it to reach popularity and approval in software development.