Native Mobile App Development or React Native vs Flutter vs Cordova: What to Choose in 2021

Apiko
8 min readOct 7, 2021

Table of contents

  1. Native mobile app development: Android vs iOS
  2. Native vs cross-platform development
  3. What is Cordova?
  4. What is React Native?
  5. What is Flutter?
  6. Comparison of cross-platform frameworks: React Native vs Flutter VS Cordova
  7. Conclusion

Native mobile app development: Android vs iOS

The first time I faced an issue of choosing between Android or iOS app development was in 2012. Two of my friends from the biomedical engineering department were about to build an app for senior people providing real-time messaging with their doctor. Yet, they couldn’t prove to each other which operating system was better: both certainly had a point.

There are several things to consider if you need to pick a native platform, including:

  • target audience: is it a particular little community or users all over the globe?
  • locale: where do the potential app users live?
  • monetization, if any: do you plan to sell the app itself, or, possibly, get revenue from paid ads or other indirect ways of monetization?

According to statcounter Global Stats data, the worldwide market share of Android devices is 72.73%, while for iOS gadgets it’s just 26.42%.

Source: statcounter

However, the general picture is not enough for making a definite decision, and should not discredit iOS. Platforms ‘ popularity differs for each particular region, e.g. in the USA iOS market share is substantially higher than the one of Android.

Source: statcounter

At the same time if, let’s say, you develop an app for Ukrainians, you can not count too much solely on iOS.

Source: statcounter

Despite the difference between them, both operating systems constantly improve and create excellent user experience. Here is a closer comparison of iOS and Android that highlights their peculiarities.

Native vs cross-platform development

Both Android and iOS provide seamless user experience, and if a couple of years ago cross-platform frameworks struggled to repeat the native feel, today they have hit this target.

Pros of cross-platform app development

  • One programming language to develop apps both for Android and iOS
  • Completely shared codebase, resulting in time and cost efficiency: one team of developers is enough to handle mobile app development for both platforms
  • Reach both Android and iOS users in significantly shorter period of time and with lower cost of development
  • Ease of app support due to shared codebase

Cons of cross-platform app development

  • Compatibility issues: the most common reason is that it takes time to adjust to native frameworks updates
  • Developers need to take into account design requirements and devices’ peculiarities for both Android and iOS platforms
  • Despite drastic improvement of cross-platform frameworks, some performance limitations still occur
  • Applications require more storage memory compared to the native ones

Although nowadays there are several frameworks for cross-platform development, in this article we’ll take a closer look at three of them: Cordova, React Native, and Flutter.

What is Cordova?

Once a game-changer in mobile app development, Cordova (former PhoneGap) has been one of the very first cross-platform frameworks. At the beginning of the rise of mobile technology popularity there was a high demand for rewriting web applications into the mobile ones. Cordova, using HTML5, CSS3 and JavaScript, is fast for developers to pick up, allowing getting small mobile apps almost in no time.

To achieve cross-platform development, Cordova provides native wrappers for app components, and uses a HTML Rendering Engine — WebView. Core plugins enable access to all hardware functionality. Besides, it’s possible to use third-party plugins or create the new ones whenever necessary.

Advantages of Cordova

  • Free and open source
  • Easy learning curve due to being written with well-known HTML5, CSS3 and JS
  • Perfect solution for rewriting little JS web apps into the mobile ones
  • High speed of mobile app development
  • Works well for development of little cross-platform mobile applications like MVP or PoC

Disadvantages of Cordova

  • It’s a hybrid framework unable to provide fully native experience
  • WebView slows down app’s performance, which is more noticeable in larger applications with multiple features
  • Comparatively tiny community, which means that you may not get the required app development support on time… or even at all.

What is React Native?

RN was developed by Facebook as an extension of React.js. It uses components to build mobile applications both for iOS and Android. It is possible to work with native modules, and to create your own ones.

React Native reaches native modules through JavaScript bridges, which once used to be a source of performance bottlenecks when it came to animation. In the latter RN release this issue was eliminated as animation runs with a native code without necessary passing of every frame through the JS bridge.

Hermes , a JS engine that achieves 2–3 times shorter app’s start time and reduces memory usage, is compatible with RN versions starting from 0.60.4. It is available for iOS starting from 0.65 release as well, which means that the same JS engine is used both for iOS and Android applications. This ensures similar code execution for both platforms, and eliminates bugs e.g. when something works well on Safari, but fails on Chrome.

Several limitations have been removed, concerning React Native compatibility with Expo , so it’s much easier to streamline cross-platform app development. Now it’s possible to

  • use all Expo libraries for an RN project initially built without Expo
  • add your own native components to an Expo project
  • create a hybrid RN application combining both Expo and native module

Here is a step-by-step guide on how to deploy React Native apps to the App Store and Google Play . Also here you can find two articles that highlight popular React Native apps, their value and functionality , and demonstrate some practical RN capabilities.

Advantages of React Native

  • Free and open source
  • Provides native feel and high-quality user experience
  • Quite easy learning curve, especially for those familiar with React: it’s written with JS, and has explicit documentation
  • UI components reusability
  • Fast Refresh shows how the changes to app code work as soon as you save them, no recompilation required
  • Much better performance compared to the frameworks that use WebView. It aims to reach 60 frames per second, that makes it similar to native apps
  • Expo and Hermes benefits
  • Framework’s maturity
  • If you already have a web application built with React, a mobile RN app can be supported by the same team
  • Moreover, some React code can be reused for React Native application
  • Large active community, including support from Microsoft, Shopify, Twitter, Callstack and many others

Disadvantages of React Native

  • Some libraries are not supported any more, *but you can easily find their more recent alternatives or build your own components
  • A few components right out of the box. *However, there are plenty of open-source components developed by the community, 3rd-party tools support, and possibility of custom component development

What is Flutter?

Flutter is a cross-platform app development framework created by Google. It offers a wide variety of widgets to build the application with. Flutter uses Dart programming language, which is relatively easy to pick up if you are familiar with JavaScript, Java or C++.

If you need to implement a unique feature and can’t find a corresponding widget, it’s easy to use the device’s native APIs. A huge advantage of Dart is that it directly compiles into native code without having to use bridges or third-party tools to do it.

Flutter’s rendering engine Skia also greatly contributes to the high level of app performance. It’s easy to build a great design for any screen size with native feel and 60 fps frame rate.

The main difference with React Native consists in Dart programming language, otherwise these two platforms are pretty much equally performant. Here is a more detailed comparison of React Native vs Flutter .

Advantages of Flutter

  • Free and open source
  • A complete set of tools for app development right out of the box
  • Dart directly compiles into native code without any auxiliary tools
  • Hot Reload shows the results of any code changes directly on real or virtual device almost in no time
  • Perfect for apps with customized or even intricate design, native performance guaranteed

Disadvantages of Flutter

  • Rather challenging learning curve: you have to learn Dart and get acquainted with numerous widgets. However, once you do it, the productivity of development will steadily increase
  • Dart is a platform-specific language, which means that there is smaller pool of developers to provide app support

React Native vs Flutter vs Cordova

To summarize, let’s take another look at the three platforms compared with one another.

Let’s sum it up!

It looks like the times when you had to choose between iOS and Android operating systems are over. Cross-platform application development confidently reaches native level, and opens access to broader audiences within significantly decreased time and budget.

The last releases of React Native and Flutter provide developers with nearly equal capabilities. The platform choice may depend on the programming language required. While RN uses JavaScript, it may be easier to find a dedicated team for your project. Dart is a less widespread programming language, but its popularity increases.

If you have any questions, or would like to discuss your project idea, feel free to contact us ! You also can get a free approximate cost estimate for developing your application at Apiko.

TechHub

Originally published at https://apiko.com on October 7, 2021.

--

--

Apiko
Apiko

Written by Apiko

Apiko is a software development company that enters markets with digital businesses, using a solid process and clever strategies.

No responses yet