Flutter vs React Native: Performance Rundown

Trung Tran

Trung Tran | 23/11/2021

Flutter vs React Native: Performance Rundown

Flutter and React Native are the two common options when it comes to choosing the right cross-platform framework to develop your desktop, mobile, and web application.

Together, these frameworks provide a range of unique benefits. These include, though are not limited to:

  • Powerful features like Hot Reload (the ability to see a change take effect in real-time)
  • Garbage collectors that help reduce memory leakage (resulting in faster performance)
  • Support for native and third-party UI components
  • A strong community and official documentation.

With benefits like this, it’s no wonder that both frameworks are thriving. Around 42 percent of developers use React Native, and 39 percent of developers use Flutter.

Comparing Flutter and Reactive Native Performance

Outside of their popularity, there is one source of contention among software developers. It relates directly to the speed and performance of the two frameworks. ‘Flutter vs. React Native performance, which is faster?’ is one of the questions developers often ask.

Unfortunately, there seems to be no easy answer to this question.

There are many contributing factors that determine the performance of a cross-platform application, from the complexity of the application and the quality of the source code to the reliability of the native and third-party plugins.

Even something as simple as removing a single animation slide can dramatically boost an application’s FPS (Frames Per Second).

Things to Consider When Testing Cross-Platform Frameworks

Because of this, it is important that when it comes to discussing the performance differences between Flutter and React Native, the tests being performed are as unbiased and objective as possible.

Producing accurate results is highly dependent on having developers who use the right testing software and compare devices with the same (or similar) specifications. Furthermore, it is important to ensure consistency with each benchmark tested (execution times, loading times, scrolling speed). Finally, it is essential that the operating system of each device is up to date with the latest firmware. That’s precisely where hiring a professional software development company, especially one versed in a wide range of technology, can help you.

When these considerations are made, they significantly improve the odds of any performance comparisons between Flutter and React Native to produce consistently accurate, reliable outcomes.

Let’s Analyse Some Real-World Performance tests

Let’s have a closer look at a few real-world Flutter and React Native performance comparisons.

These tests were carried out by trustworthy and reputable independent testers. They used the latest testing tools, methods, and processes to accurately determine Flutter and React Native’s speed and performance under various testing situations.

This way, the results are completely unbiased and objective, with scores that accurately reflect the performance capabilities of each framework.

List View Benchmarking

Android Performance

According to independent research from the software development company inVerita, Flutter is the best-performing cross-platform framework for Android.

In the test, the company ran a series of third-party libraries on each device, setting up the software so that it would automatically scroll down a list of items predictably and consistently.

Based on the test results, while the native framework took the top spot, Flutter was the clear winner between the two cross-platform frameworks. It was able to produce a consistent 60 FPS. And it had a low CPU usage of just 5.4 percent and maximum memory usage of 114Mb.

Meanwhile, in comparison, React Native had a maximum FPS of 58, with a CPU usage of 11.7 percent and maximum memory usage of 139Mb.

Another interesting point is that React Native consumed the most battery of either framework, with a battery consumption of 79.01 mAh – compared to 65.28 mAh for Flutter and 49.7 mAh for Native Android.

iOS Performance

Similar to the Android performance test, Flutter was again the clear winner.

Aside from producing a consistent 60 FPS, Flutter also had a CPU usage of 33.3 percent and GPU usage of 10.75 percent. In comparison, React Native had an average CPU usage of 113.13 percent and a GPU usage of 19.56 percent.

In terms of CPU usage, that is an astonishing difference of 79.83 percent.

Heavy animation tests

At this stage, you might think that Flutter is a performance powerhouse that can do no wrong. However, the results of this next test will change your mind. It will also demonstrate why it is important to test various aspects of a cross-platform framework instead of just focusing on one particular element.

Below are the results of a heavy animation test performed by inVerita.

The purpose of this test was to push the limits of current smartphones. The test was carried out so that FPS drops were inevitable, regardless of device or framework. This way, it was easy to tell when a particular framework ‘cracked’ (began to drop in FPS) to determine which framework could handle the most activity.

Here are the results:

Android Performance

React Native was the clear winner here. It produced a consistent 29 FPS with an average CPU usage of 15.6 percent and memory consumption of 280Mb. Flutter, in comparison, struggled with an average of 9 FPS, followed by a CPU usage of 12.8 percent.

In saying this, Flutter did have one advantage: the fastest cold start out of both React Native and Android Native. It had a 2-second startup, compared to 4 seconds for the other two frameworks.

iOS Performance

In a similar outcome, React Native was the better of the two cross-platform frameworks, with an average of 23 FPS (compared to 9 FPS for Flutter). In addition, it achieved an average CPU usage of 72.1 percent (compared to 123 percent for Flutter) and an average GPU usage of 65.1 percent (compared to the slightly better 57.71 percent for Flutter.

Again, in terms of speed and performance, React Native has a slight upper hand when it comes to processing heavy animations.

Points of Contention

However, in the research team’s words, they admit that they used a heavier third-party library when testing Flutter on iOS. This may have contributed to the significant FPS drops.

This is backed up by the fact that Flutter pulled ahead of React Native in the Android division in a heavier version of the same animation tests. This leads us to believe there are more underlying factors at play here.

Therefore, under the right circumstances, Flutter has the potential to outperform React Native. This is the case when the framework does not have to process graphics-intensive elements.

What Sets Flutter and React Native Apart?

There are a few reasons why Flutter and React Native are so different when it comes to performance.

Programming languages

Flutter is built on the Dart programming language, while React Native is built on JavaScript code.

This is an essential distinction between the two frameworks. Why? Because one advantage of Dart is that it can automatically translate Dart code into machine code without the need for an additional bridge interpreter. This explains why Flutter had a faster cold start speed in the previously mentioned tests. It also explains the overall higher performance in the list of benchmark tests.

Put simply, there are fewer steps for Flutter to perform to translate Dart code into machine code, resulting in faster mobile performance.

Fast redrawing

Frameworks are often required to ‘redraw’ the view of an application every time a change occurs. When the framework has to change the whole view, as opposed to the elements that have been changed, this can hurt performance.

By using the open-source Skia Graphics Library, Flutter excels in this respect. Why? Because it allows the UI to be redrawn each time a change is made in the application view. Plus, the graphics processing unit makes it faster for an application to load.

Summary

Flutter vs React Native Conlusion

Based on the results of these tests and the features unique to Flutter, there are many cases where Flutter is the ideal framework.

It depends on the complexity of the application you wish to build, the use of graphics and animations, and the performance capabilities of the device in question.

After all, when it comes to building mobile applications, you need to consider the capabilities of older devices – not just what is the hottest, fastest product on the market.

For these reasons, when choosing the right cross-platform framework, it’s important to ask yourself what features and benefits are most important to you. And it’s good to ask what framework will make the development process as easy as possible while delivering the best outcome for the end-user.

Related articles