As you probably remember there were a lot of hybrid (cross-platform) technologies like: PhoneGap, Sencha, Cordova, Ionic, Xamarin and many more. Most of them are dead or it is their endgame now, mostly because they were limited and needed knowledge from many areas including framework itself and platforms natively. Currently, only React Native and Flutter are in the game for most of new hybrid projects. This game of throne for a hybrid leader is very even but we are comparing newbie (Flutter) with 4 years old technology (React Native).
You can see below the google trend comparison between flutter and react native.
What about performance?
The way how these two frameworks work is also totally different: React Native uses the same fundamental UI building blocks as regular iOS or Android apps and the JS runs in a separate thread and communicates with native modules through a bridge.
Flutter, on the other hand, is ahead of time compiled to machine code and gives better performance. Not just the UI components are compiled, but the whole logic also — sometimes Flutter app is even faster than the native Android app, but it depends mostly on device type and OS version.
In terms of performance, React Native has many optimization areas like lazy requiring or native module loading as they are the most draining tasks. Developers usually face issues while following React Native hybrid application architecture. Flutter makes it easier and allows to reuse the existing code with the implementation of each architecture concept. This can also help apps to be more stable.
Is it a Dart Time?
A number of lines of code for Android app are also usually a few times lower for Flutter in comparison to Java and even Kotlin. Of course, developers may have code generators of boilerplate code like Butter Knife, many IDE plugins and even AI solution like Codota. They can also use existing solutions like libraries to not reinvent the wheel. The number of available libraries and ready solutions, of course, changes dynamically in case of Flutter and Dart because of the big community aspect and rapidly growing popularity.
In case of Flutter we have language, rather not popular, but it is the same family as C/C++, Java, so around a week or two is needed to kick in. The big potential of Dart development is hidden under Fuchsia — an experimental operating system developed by Google. It has been planned to be next Android and Dart was mention as main language used by it. That means your Dart developers should allow you to be on new products or platform from the early beginning.
What should I choose?
Flutter as a framework is very promising and right now has big dev community. Even currently we can find complex apps in the market which are based on Flutter, like Alibaba, Google Ads, Reflectly, Birch Finance, Hamilton Musical, Hookle.
In my opinion, this technology is a good choice for small and medium size applications or when content and basic features require constant iteration. Your choice should depend also on level of security needed by your app and required platform features. For example, I would recommend native solutions apps in banking & finance for which security is important, virtual reality or augmented reality as to them, a lot of work needs to be done natively. For most of the others, you can think about the cross-platform framework which should reduce time and cost of development.
Which technology to choose based on your goal?
Hybrid is usually better for:
- Fetch and display data app
- App for a marketing campaign
- App for event or conference
Native is usually better for:
- Scalable mobile apps
- App which required a high-security level
- App mostly demanding on platform API
- App with VR or voice assistant
- Single platform app
In my opinion, Flutter has entered the industry very strongly and currently should be the first choice for cross-platform solutions.