Why Flutter and React Native are both great

Our enthusiasm for Flutter notwithstanding, the DEVTALENTS team is equally happy to work with React Native. The technologies are very similar in terms of the results they deliver, and the choice between them often comes down to minor factors.

The main differences between React Native and Flutter

While Flutter offers near-native performance and comes with a large (and growing) array of widgets, React Native is often praised for its developer-friendliness and support for specific platforms. The most important areas in which these two technologies differ are as follows.

Performance

For a long time, Flutter’s performance was simply better. The framework uses the Dart programming language, which means that the Skia engine compiles code directly, using binary memory buffers. A lot of the work is performed by the GPU, which means that Flutter-built UIs look smooth and run at 60fps as a standard.

What React Native does is render platform-specific elements of the UI on the basis of state changes of React components. It’s JavaScript code in a JS engine, and it communicates with the platform via a JSON-based, asynchronous bridge. The result is slower performance, particularly when more JavaScript code is added.

This used to be a problem particularly for low-end devices – their users experienced slow startup times. But with the introduction of Hermes and its ahead-of-time compilation, this problem has largely been solved. It also reduced React apps’ battery consumption through lower resource usage.

The next major upgrade for React was a new component, JSI (JavaScript Interface), replacing the previous bridge module. It can invoke native methods and manipulate JS objects directly. Additionally, lazy loading provides even more speed at start-up. This changes make performance a non-issue when choosing between React Native and Flutter.

Flexibility

Because Flutter doesn’t rely on native UI elements, replacing it with its own UI toolkit with an embedded 2D rendering library, apps built with this framework look more or less the same on any device. If whatever you want to build isn’t part of Apple UX guidelines, you can bypass this limitation. The obvious drawback is that the guidelines tend to be there for a reason, and ignoring them can negatively impact user experience.

This means that, while React Native has to follow stricter rules, it offers a more assimilated look. Apps built with this framework seamlessly fit the environment they are displayed in. They are also easier to build, as React comes with a cross-platform layout system that is comparativelyl quick and easy to apply.

Universality

With Flutter, you can produce a single codebase that will work for almost any platform: iOS, Android, as an app on MacOS, Windows, and Linux, as well as on modern browsers. It will even work on some smart devices, including home appliances. But these are all Flutter apps, further away from the native experience than what React can deliver.

It’s important to note that Flutter on desktop comes with plugin support. This means that existing plugins for macOS, Windows or Linux can be installed, or you can build your own. Flutter’s desktop support features are still in the beta stage – usable, but not complete. From our perspective, this only means that there are more useful tools to look forward to.

Development speed

A photo of a screen filled with lines of code

Thanks to Flutter’s Hot Reload feature, developers can make real-time changes to the code and immediately see their effects. This translates into very dynamic coding and efficient testing. It can also support a more experimental, creative approach to development. Additionally, because Flutter uses only one codebase for all platforms, the number of automated tests that need to be written for a proper QA process goes down by about a half.

One aspect that may make Flutter slower to work with than React Native is that, when your app needs a more complex UI, different code files need to be provided for Android and iOS systems. This can be solved with third-party libraries, but in some cases, time may need to be taken to work out UI details.

React Native comes with fast refresh, which is pretty much the same as Flutter’s Hot Reload. Fast refresh takes the best features of live and hot reloading, bringing resilience to typos to the table. On top of that, React Native also uses one codebase, and through JavaScript, can make adjusting the app for web platforms easier.

However, because React Natives give development teams a lot of freedom in terms of what tools they want to use, the decision-making process can stretch out a bit. The sheer number of libraries provided for React Native makes its full offer (which includes abandoned packages) difficult to navigate. But if your team is highly experienced, they will be able to take advantage of this instead.

User experience

Flutter follows Google’s Material Design principles. It uses a vast library of widgets, and custom ones can be created for unique features. As a result, Flutter encourages a high focus on the visual aspects of building apps. And of course, the app will look and perform well on any device.

On the flipside, React Native gives users exactly what they expect within the environment they are accustomed to. For example, if you market is mostly iPhone users, you might prefer to cater to their specific taste in app design. An added benefit is that you app components will be upgraded along with the OS UI. The downside, on the other hand, is the precariousness of this situation. Your UI can be broken with such an upgrade. It’s a rare occurrence, but one you have to keep in mind when developing a React Native app.

Maturity

React Native has been around since 2013. Over time, it has had the time to stabilize, fix arising issues, and deliver tools that the community asked for. Flutter is a younger technology, which means it may not have some of the specific resources available for React, but it’s already stable and highly reliable.

Documentation

Flutter’s documentation is incredibly well-organized and easy to navigate. It’s also exhaustive. React Native’s documentation is somewhat less impressive, but some members of the development community see it as more user-friendly.

Community

According to the data, the Flutter community is about the same size as the React Native community. It can be slightly smaller on some platforms, but considering the frameworks’ respective ages, this is still an amazing achievement for Flutter. For React, it’s good to see that the community is still going strong and producing helpful content.

Who uses Flutter?

Flutter has been officially launched in 2018, which makes it a relatively young cross-platform framework. Despite this fact, several major players have already adopted it. They include:

  • The e-commerce giant Alibaba – their Xianyu app is built with Flutter,
  • Tencent, the Chinese entertainment conglomerate,
  • The Google Ads app,
  • eBay’s Motors app,
  • Groupon.

Who uses React Native?

React Native has had more time to gain popularity and widespread use. Before Flutter, it was the leading global cross-platform solution. Apps that use React Native include:

  • Instagram,
  • Facebook,
  • Pinterest,
  • Skype,
  • Bloomberg
  • Wix.

Should you choose Flutter or React Native?

There is no fast answer to this question. Each app and project should be considered separately, with special attention paid to its business goals and target audience. Both Flutter and React Native are great frameworks that empower cross-platform development teams, allowing them to work quickly and efficiently. Each has more advantages than drawbacks, and can support successful large-scale projects.

If you’re not sure what framework to use for your cross-platform application, we’d be happy to advise you based on our commercial experience.

Olga Trąd

Marketing Manager

Fascinated by the spirit of innovation that permeates the IT industry, Olga has never abandoned her roots as an IT content marketing specialist. She draws on years of experience in the technology sector to shed light on interesting trends, solutions and practices.

Continue reading
Branded graphic with the text: building fault tolerant software

6 minutes read

Developing fault-tolerant software: best practices, process & tips

Olga Trąd
Continue reading
Branded graphic with the text: chatbots and virtual assistants

6 minutes read

How chatbots and virtual assistants can help businesses achieve their goals

Olga Trąd
Continue reading
Branded image with the text: different types of platform as a service

7 minutes read

All you need to know about PaaS: what it is, its types, and the best platforms

Olga Trąd
Continue reading
Branded graphic with an illustration of a computer screen

6 minutes read

Introducing PaaS: the Platform-as-a-Service model for software development

Olga Trąd