Unless you want to redevelop the same application, every year, or have unlimited funding, it is important to choose the right technology for your application development upfront. Obsolete technology will give you satisfaction at the time but you risk being limited if you want to make changes to your application. A technology that is too recent and used by a community of developers that is too small represents a risk in terms of maintenance and could force you into a forced marriage with your service provider.
So opt for a framework that is widely used and has a growing user community.
First of all, a few definitions.
Native development is a specific development for each mobile OS (iOS, Android, Windows, etc.). Developing natively is like developing a specific application because the frameworks are not the same and require different skills. There will be little mutualization possible between these different frameworks. If you want to be able to develop an app available on iOS and Android, it will cost you roughly the price of two apps.
Hybrid development allows a single development to serve different types of OS. Before 2015, this type of mobile development was quite deceptive from a performance point of view, and the design leeway allowed. Since 2015, new frameworks have allowed impressive results, largely meeting the expectations of even the most demanding. Even if only one code is developed, it uses the native functions of the devices, which gives a user experience very similar to that obtained with native development… but with a much more attractive economic model.
Here is schematically what can guide your choice between native development and hybrid development:
If your choice turns to hybrid development, then you will have to choose between different frameworks.
With the launch of its Flutter framework in 2018, Google is providing an interesting new alternative for the development of cross-platform mobile applications.
Having multiple platforms for which different applications need to be developed has been a problem for some time. In addition to having to maintain two teams, one for Android and one for iOS, there is always a gap between the applications developed because they are created by totally different teams. This is what gave birth to the idea of creating cross-platform mobile applications.
React Native and Flutter, both are designed for developing cross-platform applications. React Native and Flutter both deliver superior, fast, high-quality performance for apps on multiple platforms including Android, iOS.
A quick comparison of the areas that are important for the adoption of new technology will give us the trends to come and allow us to get an idea of where Flutter is.
|Component Library||Smaller, not included||Very large inclusive library|
|Adaptive Components||Some are adaptive automatically||Components are not adaptive. Need to configure manually|
|Learning Curve||Easy to use, especially if you have used React or JS||Pretty quick|
|Main Architecture||Flux and Redux||Block|
|EcoSystem||Fairly mature, used in the production of many large enterprises around the world, many packages are available||Not yet mature, fewer packages|
|First Exit||Jan 2015||May 2017|
We have already seen in the previous parts that Flutter used Dart, which was not invented for mobile applications either. However, it is Google that is behind it, ensuring that Dart works with mobile platforms and does not suffer from any API problems.
So, let’s compare the performance of React Native and Flutter.
As explained earlier, Flutter does not need a gateway to interact with operating system components. Since Flutter can solve many problems using the Skia engine, this helps minimize the interactions required with the device hardware. In addition, Flutter uses C ++ in addition to the Dart programming language. The result of this is to allow Flutter to offer performance equivalent to native applications.
React Native was launched in 2015. In 5 years, many popular mobile apps have been developed with the help of React Native – Facebook, Instagram, etc. (not entirely, only a few screens). Additionally, React Native has a much larger community than Flutter. The developers have had the time to create various tools and libraries to automate and aid in the development of an application.
On Flutter’s side, immaturity is his biggest flaw. Unveiled to the developer community in 2017, it was announced operational for production only during 2018 and has yet to expand its functional spectrum.
Developers around the world are just starting to get their hands on it, which doesn’t prevent it from already owning an impressive collection of tools and libraries. Unfortunately, many services still haven’t started supporting Flutter, including payment systems, software, and even Apple TV and Android TV systems. Many tools are under development.
Currently, React Native is the more mature of the two but Flutter is rapidly gaining popularity in app development like Alibaba is an example and more to come.
Since announcing the launch of its Beta, Flutter has seen strong adoption with developers around the world. Good indicators on the adoption of technology in the development environment include the number of contributions to an “Open Source” project, the number of questions about the technology on support forums such as “Stack Overflow” or still the trend within Google searches.
2018 was the year of the explosion of PWAs in the eyes of the general public. 2020 will surely be the year of the cross-platform app. Both frameworks have shown us that we can already count on it for simple applications. At the same time, you can continue with your existing native Android / iOS apps and start building new features in them.
We are experts in the development of React Native as well as Flutter mobile applications. Do you have a project? Let’s talk about it!