The popularity of hybrid or cross-platform development (read more about that here) is growing every day, and the performance of applications written using this approach is almost as good as native development. There are already a huge number of frameworks for mobile apps that are not based on native components, but which one should we choose? Let's compare two the most popular frameworks 2020 for cross-platform development to better understand their advantages and disadvantages.
In an attempt to make a cross-platform app as productive as a native one, Facebook released the React Native framework. Something turned out, something did not, but the community and the number of applications built on it are growing rapidly.
Example of use
React Native is popular and is already being used by tech giants such as Instagram Facebook, Walmart, Tesla, Pinterest, UberEats and others.
IDE and code writing
"Learn once, write anywhere" is the main principle of React Native. There is a Hot Reloading function here to add code and make edits at runtime — this is very useful if you are configuring the interface. The environment comes with a set of ready-made components, but they do not always adapt to the platform, which requires adjustments in code, but there is a rich selection of third-party libraries.
Since React Native is aimed at performance comparable to native development, this framework is often preferred in the pursuit of results. Native allows developers to use custom modules in Java, Objective-C, or Swift, but they should be written separately for each platform.
Flutter is the brainchild of the Google team, which has already gained an excellent reputation in cross-platform development. Its main principle is to create applications with a single code base for mobile platforms, web and desktop.
Dart is an object-oriented language developed by Google; Java, Objective-C is for native modules. It is worth noting that Flutter can create modules that fit into the native code without problems (in React Native, you can do exactly the opposite - add native modules to the React Native app).
Example of use
Flutter has recently appeared on the market and its popularity is growing very quickly. Flutter-written apps have been created for Hamilton Musical, Google Ads, Yandex.Taxi.
IDE and code writing
Flutter is supported by IDE's such as Android Studio/IntelliJ and Visual Studio Code. As for writing code in Dart — if you know such languages as C++ or Java, you will not find it difficult to master Dart, but the threshold for entering it is much higher than that of React Native.
Flutter uses the same code for all platforms. For Windows, macOS and Linux the semi-official Flutter Desktop Embedding is used.
With it, you can easily create beautiful user interfaces. But if you need to create different styles for different OS, you will have to work a little, because automatic adaptation is not aimed at this. This is because Flutter uses its own graphics engine instead of native components. The engine is written primarily in C++, it supports low-level rendering using the Google Skia graphics library, and can also interact with platform-dependent SDKs for Android and iOS.
It keeps up with React Native and also offers a Hot Reloading feature and a large set of ready-made widgets. With Flutter, you can release apps for different versions of Android and iOS without any additional gestures: programs can run smoothly even on older versions such as Android Jelly Bean and iOS 8.
We can say that Flutter is in many ways superior to its competitors and demonstrates high performance thanks to the use of the modern Dart language and its own graphics engine. But still, it can't be called the best at this stage of development yet.
React Native VS Flutter
It is difficult to say which framework is better than another, but it is safe to say that it is easier to solve problems on React Native due to the community and the use of web technologies. The Flutter community is still young and the technology has recently entered the world of cross-platform development, so some atypical tasks may take much longer. However, due to the gradual increase of the popularity of this framework and increase in the number of developers using it, the knowledge base is growing and it is developing at an incredible speed. That is why we decided to study it now and contribute to its development.