Flutter vs. React Native – Which is The Better Framework?

By Uri Shamay May 20, 2021

Mobile development has exploded over the past decade. In the beginning, we tried to cheat the system by wrapping up JavaScript frameworks to masquerade as a native app on Android and iOS. However, Flutter and React Native isn’t like your regular ionic or bootstrapped native apps — they’re much better than that.

Facebook released React Native back in 2015, and Google came out with Flutter in 2017. React Native and Flutter are two names that often appear in the mobile development community when choosing the right platform or framework of native dev work.

Flutter and React Native are comparable in popularity. They both sit in the 80k mark for stars on GitHub. But what is Flutter? What is React Native? And how do Flutter and React Native compare against each other?

What is Flutter?

At its core, Flutter is a portable UI toolkit written in Dart. It comes fleshed out with its own stand-alone SDK, with the ability to hot-reload your work rather than having to re-compile each time you make a change. Your state remains intact during this process, allowing for faster on-the-fly code changes mid user experience processes.

Under the hood, Flutter’s engine is C++ based and interfaces with platform-specific SDKs provided by iOS and Android. While Flutter is mostly associated with cross-mobile platform development, it also supports web and native desktop apps as well under the same code base.

The advantages of Flutter

  • Supports reactive programming style, making it a ‘web-first’ software suite that is designed to deal with the asynchronism of data streams
  • Comes pre-built with widgets that are highly customizable and configurable, giving it a bootstrapped feel while remaining open for developers to create their own designs
  • Based on Dart — an OOP based language with a UI first approach. Being OOP means that it’s easy for Java and C# developers to pick up quickly.
  • Completely free and open-sourced, with backing from Google

Where is Flutter being used?

Popular apps that use Flutter include Alibaba, Google Ads, Reflectly, Nubank, Tencent, and Square.

What is React Native?

React Native has roots in React. But to understand how React Native works, we also need to understand that React itself is a stand-alone JavaScript-based UI library. React Native takes it one step further by making it compatible with native mobile application development.

While React Native may work natively on iOS and Android, it remains JavaScript under the hood. This is because React Native operates through a “bridge” that communicates with the various native components (such as Bluetooth, camera, and file access). However, it differs from other “wrapper” frameworks like Ionic and Cordova because it is not relying on webviews to work.

What are webviews? In short, it’s a browser masquerading inside your native app. React Native uses a native UI system and uses the “bridge” (which is built in C/C++) to allow it to run on multiple platforms.

The advantages of React Native

  • Great for web developers who are already well-versed in JavaScript
  • Cross-platform with Android and iOS via a single code base. While you will need support for each platform, it is not as extensive as coding for each platform separately.
  • Uses the same design patterns and ideas as React

Where is React Native being used?

Popular apps that use React Native include Instagram, Facebook, Facebook Ads Manager, Pinterest, Skype, and Tesla.

Flutter vs. React Native

Now that we’ve got a brief introduction to what Flutter and React Native is, how do they compare?

Coding Speed

Our productivity as developers is linked to how quickly we can code something. While it’s nice to think that we can just churn away the lines, there are little flow stops like refreshing our views, re-compiling, and state reloads that can slow us down.

Flutter supports hot reloading, which equates to faster coding. You can make changes on the fly and see them immediately in the application. All without having to spend that extra minute or two each time re-compiling your application. This allows for more dynamic application development and is more akin to developing in a web-based environment than for traditional compilation required languages like Java and C++.

This hot reload feature also comes in handy if you’re approaching your application with a design first methodology — which Flutter advocates for through the way things are structured.

In contrast to native application development, Flutter works on its own UI toolkits. This means that it comes out of the box fully bootstrapped across all the supported platforms. Which in turn enables you to develop your app in a visually cohesive manner. So your UI remains the same — even across platforms and older devices, where the default native UIs may look different from each other based on model, brand, and platform type. This makes it perfect for rapid prototyping and MVP-based application development.

React Native does essentially the same with the hot reloading feature. However, because of how React Native compiles, it doesn’t exactly hot reload in the same way as Flutter. Rather, it “repaints” the views and components, akin to how a React web app would. The almost automated view refresh feature automates refreshing.

However, unlike Flutter, React Native supports the bare minimum basics in components. UI is ugly to begin with, and it is up to the developer to bootstrap it into an acceptable state across the different platforms. It doesn’t support material design out of the box like Flutter, and pre-made components are often community-based rather than platform-based. While this may sound cumbersome to do, it gives developers extensive freedom to choose how UIs are arranged, configured, and packages to use.

Verdict:

Flutter is better if you’re after MVP style speed. React is better if you’re after extensive customizability and full control from the get-go.

Community Support

The size and activeness of a dev community can make or break frameworks and libraries. Where do Flutter and React Native stand with community support?

For Flutter, the community size is much smaller than its React Native counterpart. This, in part, is due to Flutter being based on Dart — which is still quite niche. In contrast, React Native is JavaScript and therefore comes with a massive add-on community of developers with experience in the scripting language.

React Native also has 2 years on Flutter, meaning more time to develop projects and convince various hierarchies to adopt the JavaScript-based framework. However, there is a steadily growing interest in Flutter and online materials available.

Verdict:

React Native is better in community size and support.

Platform

While the React Native community is extensive, the quality of libraries and publicly available components can range from being no longer supported and abandoned to being widely used across different enterprise projects.

For a new React Native developer, finding the right tools, repositories, and libraries that are up to date and compatible with React Native can feel like wading through a sea full of fish — creating a higher level of uncertainty over continued support from third-party providers.

In contrast, Flutter comes pre-defined with an official SDK that has everything that you will most likely need to get started. This reduces the overall size of the app because they created everything to integrate seamlessly into the development process. React Native, however, can lead to code bloat over time and extensive management of integrations that are not part of the original React Native suite.

Verdict:

Flutter is easier to use and maintain. React Native requires a higher level of care and commitment as a development team to keep libraries and packages cohesive and in line with one another.

Some people swear by Flutter, while others are avid advocates for React Native. Whatever the case, both can equally enable the development of quality native mobile Android and iOS apps.

Flutter or React? The answer really depends on your team’s strengths and their history with application development work.

For example, if your team is primarily web-based with extensive JavaScript experience, React Native will most likely be the best choice if we had to choose between Flutter and React Native.

However, if the team consists mainly of backend developers with experience in object-oriented programming languages like Java and C++, then Flutter might be the better choice.

Related articles

The Essential List of Terraform Modules and Their Purposes

The Essential List of Terraform Modules and Their Purposes

Rapid and constantly-evolving software development cycles have increased the need for reliable and fast infrastructure changes. Thus manually carrying out infrastructure changes has become an unscalable

A Developer's Guide to Comparing Yarn vs. NPM

A Developer’s Guide to Comparing Yarn vs. NPM

Are you caught in a Yarn versus NPM debate? It is not only because of personal choice – the selection can alter the course of your

5 Things to Look Out for with AI Code Review

5 Things to Look Out for with AI Code Review

Imagine slashing the time spent on code reviews while catching more bugs and vulnerabilities than ever before. That’s the promise of AI-driven code review tools.  With

Stop leaks at the source!