Throughout the years, there have been a plethora of cross-platform mobile application development frameworks. While they offered ease of development and reduced costs for maintaining the app on multiple platforms, most of them failed to gain a lot of traction due to performance, stability, or compatibility issues. The two most recent contenders in the scene of cross-platform development, React Native and Flutter, solve a lot of these issues by providing comparable performance and stability to native apps, but they have left developers in a conundrum as to which framework to choose.
React Native is a great tool for making modern, performant, cross-platform mobile apps. It has a large number of contributors and has grown to become a very viable alternative to native development. Flutter, in a similar vein, is rapidly growing and frequently updated. While React Native is backed by Facebook, Flutter gets the support of Google.
In terms of Performance, while neither framework is as good as native apps, Flutter still beats React Native by a large margin. Whether it’s rendering large lists or showing heavy animations, Flutter does the job using less memory, less processing, and less power consumption.
Flutter is also supposed to be more stable and resilient to changes introduced by platform updates than react-native since it renders its own widget components instead of rendering native components.
But React Native has npmjs.
Flutter does have something called pub.dev but the sheer number of JavaScript developers means that the number of available packages and libraries dwarfs anything else. Developing with React Native has mostly boiled down to finding the right packages and combining them together to get the desired functionality. While it may not be the most optimal way, it’s certainly possible to get the most common functionalities by simply using existing packages and not writing a single line of original code in React Native.
The ease of use of npmjs, combined with the fact that React Native uses JavaScript, which is a language that’s become synonymous with frontend development, gives it a very clear edge over Flutter, which uses dart, a relatively unknown language outside of Flutter development. Sure, Flutter is a lot more performant, but it’s easier to find JavaScript developers.
Considering these points, React Native does seem like the obvious choice. But Flutter can still win the game in the near future.
The most interesting thing, in favor of Flutter, is the upcoming OS by Google called Fuchsia. It’s supposed to be designed from the ground up to support phones, tablets, wearables, TVs, cars, and home automation devices. Unlike Android, it’ll be a much more well-integrated ecosystem, and it’s supposed to be free from Java.
Flutter will be the primary way of developing apps for Fuchsia. Since it’s still not released, things may change by the time it’s released.
What may also happen is that Google doesn’t release Fuchsia on its own, but instead gradually patches android and replaces certain modules slowly to keep both device manufacturers and existing developers happy by providing a slow transition.
This doesn’t mean that flutter isn’t usable now. The community is small and the lack of third-party libraries, unlike react native, is what’s holding it back right now. If you’re not dependent on third-party packages, then Flutter is mostly better than React Native considering performance and stability.
The current popularity of React Native stems mostly from web developers, who suddenly found a tool that allowed them to make native mobile apps just like a web app. Apart from that, React Native has a ton of issues, but the existing momentum may keep it going long enough until it matures to a decent level.
Coming to the question of which has more scope for progress, it’s Flutter. But this is a high-risk high-reward situation. The early adopters will benefit but this is contingent on Google releasing Fuchsia with Flutter as the main way to develop apps for it. It’s certainly possible that this never happens. There have been a ton of Google products that were never released and many that did not go beyond a public beta. If it does happen, Flutter may soon see itself becoming the de facto standard for cross-platform development, but until then, React Native reigns supreme.