In the sea of products currently on the market, companies, startups and individuals are striving towards much faster but high-quality application development. This is where cross-platform technologies are developed - they help programmers save much time and focus on the development of both Android and iOS applications.
But what is the best and the most efficient cross-platform technology? More and more of such platforms are being developed, and this is a frequent question among developers.
Lately, React Native and Flutter are the platforms which are used to develop both Android and iOS applications.
Basically, React Native enables the development of applications for Android, iOS, Web and Desktop using a well-known React, including a few things that have been added and fixed for each of the platforms. React Native was officially announced in 2015 by the Facebook company.
Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. It has fast development, expressive, and flexible UI according to its official documentation.
It was officially announced in 2017 at Google I/O 2017 conference by Google. Since then, it has been used for cross-platform app development, and also for web and desktop applications.
Both are powerful, but let’s compare them in a few critical aspects.
(Source: “The most popular programming languages in 2021” published by StackOverflow)
The main benefit of both technologies is the speed of application development. When it comes to the installation process, it is quite simple. You can set React Native and Flutter in a few easy steps. The main difference between the two are the components which can be used and which affect the speed of application development.
React Native contains a few key components which are mapped on native components and used to model others. Unlike that approach, Flutter has an extensive offering of already made components which can additionally speed up the work on the application.
Another benefit of both technologies is the fact that they have a functionality called hot reload (Flutter), that is, fast refresh (React Native) which enables the application to automatically refresh while writing code. This means that the written code is automatically run (in most cases).
Regarding the documentation, both are well-written and solid, but one might get an impression that Flutter is better because it has a few special cases and a few additional things like testing.
Performance is probably the most important difference between these two technologies. The architecture is written in two different ways. React Native translates its UI components into native components. In the past, this could slow down the application during runtime in some cases because there was the need for communication via a bridge across JS thread where a blockade may occur. Nowadays, with the latest reimplementation of the React Native architecture, this is not the case anymore. React Native uses Fabric as a renderer, enabling direct communication between React part and Mobile platform via C++ modules.
On the other hand, there is no mapping into native elements with Flutter. Instead, it uses canvas and draws all the things needed to make the applications look the same on both old and new devices. Since it uses Dart language, Flutter compiles it in x64 or ARM, and elements are drawn using the SKIA engine.
If you want to know how Flutter is built, check this video.
In the past, Flutter had better performances. However, React Native reimplemented the architecture which significantly increased performance. The current issues are the 3rd party packages. They will need to adapt their implementation to align with the latest changes. The React Native team is willing to help in these cases. We are still waiting to see the outcome and how fast they can do this.
If you want to find out what other benefits this new architecture brings, you can watch the video from one of the React Native conferences here.
Basically, the biggest advantage of React Native at this very moment is the support of the community which uses it. The fact that it has been longer on the market has drawn bigger support as opposed to Flutter which is a younger platform.
If you are looking for jobs which are related to React Native and Flutter, you will most definitely find more jobs related to React Native. However, since Flutter has been gaining popularity in recent years, it is unlikely that Google will discard Flutter at some point. It is even said that Flutter might be used for the upcoming (still not confirmed) operating system Fuchsia.. According to the Latest Google trends, Flutter has been gaining much interest in the community.
The fact is that there are more Github issues with Flutter than for React Native which is why React Native is more popular. However, this doesn’t mean much because React Native keeps its libraries in separate repositories, and Flutter keeps all of them in one repository.
In addition, React Native has an autobot. React Native closes it if there has not been any issue activity for some time. The thing that can help is the information that React Native, as a project, has 106K stars on GitHub, and Flutter has 146K stars. Either way, it seems unlikely that any of these two technologies will stop growing in a near future.
If you are still asking yourself which technology to choose, then you should first pay attention to the UI content of your application. If your application is rich in UI content without 3D, OpenGL and other similar components, feel free to choose Flutter. The above mentioned components are not currently supported, but will certainly be in future. Also, if your performances are crucial, or you need a fast MVP, Flutter is what you should focus on.
However, if you are looking for an application which is complex and contains UI design with a lot of native components, then you should use React Native. React Native enables a quite easy transition of web applications to mobile applications, especially if a web app is developed in React. We get the impression that React Native is more frequently chosen for enterprise applications.
Whatever technology you choose, you will not make a mistake because both of them are supported by good documentation, their communities and it seems that we will make progress regarding development, which is supported by the fact that new versions often come out on the market.
A lot of “big players” of the mobile application development industry turn to these technologies. Apart from Facebook and Instagram, Wix, Tesla and Discord have chosen React Native.
On the other hand, Alibaba, Google Ads and Google Pay adapted their apps in Flutter.
You could say that both of these technologies will have a bright future, but let’s wait and find out.
A tech enthusiast who is always eager to learn new things in mobile development, mainly.