React Native vs Flutter: What to pick?

- By Nasir Zaidi

React Native vs Flutter

Are you choosing between React Native and Flutter for App development? Discover the difference between these two and which one would suit you better.

Both Flutter and React Native are one the best cross-platform development frameworks. They both use native widgets to deliver a highly customizable, responsive UI while sharing code across different platforms.

The Flutter framework is developed by Google while the React Native framework is developed by Facebook.

While Flutter and React Native apps are both native, they are advantageous over traditional native app development because they allow significant sharing of codebase across different platforms.

Before we delve further into the comparison between the two SDK’s, let’s take a quick overview of Flutter and React Native in this table:

Features Flutter React Native
Release Date May 2017 March 2015
Creator Google Facebook
Language Dart JavaScript
Type Software Development Kit Software Framework
License Free, Open-source Free, Open-source

What is Flutter?

Flutter is Google’s portable, free and open-source Software Development Kit (SDK) and includes widgets and tools.

Flutter enables cross-platform app development. It gives developers an easy way to build and deploy visually appealing, natively-compiled mobile (both Android and iOS), web, and desktop using the same codebase.

According to a survey by Statista, in 2020, 30% of developers chose Flutter for App development. Whereas in 2021, this number grew to 39% and is expected to grow further over the coming years.

Features

Flutter 3.0
  • Free and Open-source

  • Supports multiple devices-Mobile, Web, Desktop

  • Cross-platform development

  • Based on Dart language, a general-purpose object-oriented programming language. The latest version Dart 2.17 was released at the recently concluded Google IO.

  • It provides its own widgets, drawn from its own high-performance rendering engine – these are fast, attractive, and customizable

  • Based on the Popular Reactive Programming. Reactive programming is programming with asynchronous data streams. A data stream is an object that emits multiple pieces of data over time. Thus, we are regularly notified of any changes in data that happen.

  • Flutter’s desktop support also extends to plugins — developers can install existing plugins that support the macOS, Windows, or Linux platforms, or they can create their own.

Popular Apps Built using Flutter

Apps built with Flutter

Advantages of Flutter

Using one codebase across Android, iOS, Web, and Desktop save you cost and time. Moreover, Hot reloading’ (faster development) means that developers can make changes to the code on the go and it will take only milliseconds for the changes to display. This makes bug resolution and experimentation easier

User-friendly designs: Flutter has its own set of custom widgets, rendered and managed by the framework’s graphics engine. This makes it easier for the user to customize and create their own widgets. Flutter uses the Skia Graphics Library, which smoothly delivers 60 frames per second.

Since you can deploy the same code across multiple platforms, you do not need to write these tests separately thus saving you around 50% testing time. Using Flutter, you can deploy the same App User Interface even on older Android and iOS versions

Some Areas where Flutter needs to work on

A relatively smaller developer community means that the community needs more time to grow and educate its audience. However, the Flutter community is growing exponentially, especially in the past year. On Udemy, there were over 600,000 students enrolled in 75 Dart courses in May 2021.

Libraries & support are impressive but considering that Flutter is a new SDK, you might at times have to build custom functionalities yourself. Another area is larger App Size, which Google is working on currently

What is React Native?

React Native

React Native is a free and open-source mobile framework that uses JavaScript. It was released in March 2015 by Facebook.

Features:

React Native is an effective framework for:

  • Cross-platform development

  • Building mobile apps using JavaScript language

  • Developing applications for both Android and iOS using a single codebase

  • Using the same design as React

  • Apps created using React Native are not mobile web apps. React Native uses the same fundamental UI building blocks as regular iOS and Android apps: this means that instead of building in Java, Kotlin, or Swift – you’re putting the same building blocks together, using JavaScript and React

  • React Native uses components that are similar to Flutter Widgets

Popular Apps built using React Native

Apps built with React Native

Advantages of React Native

Extensive libraries and base packages due to the wide use of React Native enable ease in the app development process for developers. React Native also has the ‘Fast refresh feature’ that combines live and hot reloading. It’s more resilient to typos and mistakes compared to the previous version.

Using a single codebase that is supported on both iOS and Android platforms supports cross-platform development on React Native. Also, React Native’s language JavaScript is quite popular, and its community is quite extensive, with multiple libraries, tutorials, and UI frameworks making it easier for aspiring developers to learn

Areas where React Native needs improvement

The ‘Native’ experience needs work. Like any cross-platform solution, neither the UI experience nor performance will be the same as in native apps – just close to them.

Developer freedom of choice means that once a developer has created a new project, they then need to decide which navigation package – as well as which global state management – to use, which can be quite complicated to learn which solution would work best.

Quite a lot of Abandoned Packages are another area where improvement is needed. While React Native boasts extensive libraries, a lot of these are abandoned or low-quality ones. Therefore, it is important to check the commits in a repository to avoid using such packages

Fragile User Interface: The fact that React Native uses native components under the hood should give you confidence that, after every OS UI update, your app components will be instantly upgraded, as well. That said – this can break the app’s UI. What’s worse, updates can become even more dangerous if they cause certain changes in the Native Components API. Whereas Flutter app UI is a lot more stable.

Large App Size: Applications written in React Native must be able to run Javascript code (JavaScript Virtual Machine). Android doesn’t have this functionality by default – meaning applications need to include a library that supports JavaScript code, resulting in apps that are bigger than their native Android counterparts.

When to go for Flutter and When is React Native best?

The built-in native components and hot reload feature make Flutter a perfect tool for iterative development. If you need to create an MVP in a short period, go with Flutter. On top of that, it’s the best choice if your app is UI-centered. With its customizable widgets, Flutter would be an ideal fit for you.

React Native is a good tool for creating complicated cross-platform apps. If your project is expected to be large and deeply rooted, with extensive documentation use React Native.

Where does the Future lie: Flutter or React Native?

Which is best Flutter or React Native?

Flutter and React Native both have pros and cons, but the idea is to boost cross-platform development and fill the gap between two platforms i.e. iOS and Android. Many industry experts believe Flutter will lead the future of mobile app development, as has been the trend in the past few years.

Moreover, Flutter doesn’t require a bridge to communicate with native components. It has everything packed within itself, including frameworks like Cupertino, Async, and Material Design. Thanks to this, apps are more stable and predictable on different platforms than React Native apps. 

More and more companies are attracted by Flutter. Companies like Alibaba are already using Flutter – which is indicative of the toolkit’s promising future. Further, the expanding developer community is always helpful and enthusiastic. Flutter is now not a mobile app-centered toolkit but is making significant inroads in web and desktop. The recently announced Flutter 3.0 includes desktop support for Mac and Linux)

React Native enables the communication between JavaScript and the native language via the JavaScript bridge by sending JavaScript Object Notation (JSON) messages. The messaging is asynchronous, which means the app’s UI should be smooth. However, there’s still a chance of a lagging UI because the bridge affects the rendering speed.

React Native has built some popular apps like Facebook, Airbnb, and Instagram and is currently dedicated to a large-scale revamping of the framework.

Previous
Previous

What’s New in Flutter 3.0.2

Next
Next

How to Manage Remote Work Effectively