As you may already know, there were tons of hybrid (cross-platform) mobile technologies such as:

  • PhoneGap
  • Sencha
  • Cordova
  • Ionic
  • Xamarin
  • and a lot more.

But, most of them are dead, or it’s their endgame now. Mostly because they were limited and desperately needed knowledge from many, many areas such as the framework itself and native platforms.

Currently, React-native and Flutter are at the top of their game for most of the new hybrid projects. This game of thrones, if I may, for a hybrid leader is very even, but we’re comparing a newbie (Flutter) with a 4-year-old technology (React-native).

Below you can see the google trend comparison between the two:

Google trends for Flutter and React-native
Google trends for Flutter and React-native




Performance

The way these two framework work is completely and totally different – React-native uses the same fundamental UI building blocks as regular iOS and Android; the JS runs in a completely separate thread and communicates only via native modules through a bridge.

Flutter is, on the other hand, an ahead of time compiled to machine code and gives way better performance. And not just the UI components that are compiled, but the whole logic too – sometimes the apps developed with Flutter are even faster than the native Android app. But, it clearly depends on the device type and the OS version.

Speaking in terms of performance, React-native has a lot of optimization areas such as lazy requiring or the native module loading – they’re the most draining task.

Developers always face issues while following the React-native hybrid application architecture. On the other hand, Flutter makes it all way easier to reuse existing code with the implementation of each architecture concept. This also helps apps to be more stable than with React-native.

Is it a Dart Time?

The good (or bad?) thing is that there’s only one programming language possible in both frameworks: JavaScript for React-native and Dart fro Flutter. The usual mistakes (and the biggest one) many companies make is to ask a JS/React-native developer to design a project big and complex and build it.




Web and Mobile are two very different worlds apart, and understanding iOS and Android’s ecosystem is so much more difficult than to learn React-native. Additionally, for most of the hybrid apps, there is always the risk that some functionalities will need separate native implementation – and a developer who knows it is a value. On the other hand, the libraries for Flutter is, and I say this with complete confidence, are a whole topic on their own.

A number of lines of code for Android are most of the time a couple of times lower for Flutter compared to Java – and even Kotlin! But, developers may have implemented code generators of boilerplate code like the well-known Butter Knife, IDE plugins and perhaps even an AI solution like Codota

They can also use existing solutions like libraries if you don’t want to re-invent the wheel. The number of available libraries and ready-solutions changes drastically and dynamically for Flutter and Dart. This is all becuase of the ever-growing community aspect and the rapidly growing community.

So, to sum it up, in the case of Flutter we have a language (though not yet popular) in the family of C/C++, Java, so you would probably need a week or two to kick in. The huge potential of Dart development is hidden under Fuchsia which is an experimental operating system developed by Google. It’s been planned to be the next Android, and Dart was mentioned to be the main language. That is great news for Dart developers as they would be allowed to be on new products of platforms from the very beginning.




What should you choose?

Flutter is a very promising framework, and right now has a very big dev community. Even now we can find some very complex apps in the market based on Flutter like Alibaba, Google Ads, Reflectly, Hamilton music and many more.

In my opinion, this technology has a very good choice to be part of a small and medium-sized application – or when content and basic features require constant iteration.

Your choice should solely depend on the level of security your app needs and the required platform features. For instance, I would highly suggest native solution apps for banking and finances where security is a top priority. On the other hand, virtual reality or augmented reality as to them, a lot of work needs to be done should you choose natively.

For most of the other fields, you can think about the cross-platform framework that does the best work in reducing time and cost of development.

Which technologies to use based on the goal?

Hybrid is mostly used for:

  • Fetching and displaying data
  • Apps for marketing campaigns
  • App for event of conferences




Native is usually far better for:

  • Scalable mobile apps
  • Apps that require a high-security level
  • Apps that mostly depend on platform API
  • Voice-assistants or VR apps
  • Single platform apps

Did we miss something worth adding to the article? Contact us and let us know!

Shares