Inverita and its mobile development team continue to study the performance of mobile cross platform solutions available in the market, aiming to answer the question: which technology is the best choice for your product, or even for your career?
some people think that we don’t use react native to do repeated calculations many times every day, but if the tasks with high CPU utilization are completed by fluent or native applications, the effect will be better. So this paper decided to study the performance of the user interface, because it has a greater impact on the daily users of mobile applications.
measuring user interface performance is complex and requires engineers to implement the same functions in the same way on each platform. This paper selects gamebench as a unified testing tool to ensure the objectivity of the test. Although gamebench has a lot of room for improvement, we managed to put each application into a separate test environment with its help.
the source code is open source, users can share their own experience and ideas. User interface animations usually require different tools on different platforms, so we limit the scope to the libraries supported by each platform, or at least do our best to achieve this.
of course, different test results may occur if different running methods are used. For the real technical experts in a certain field, they must be able to use their own set of testing tools incisively and vividly, which may exceed our test results. Let’s take a look at our tests!
in each case, there are 1000 items in our list view, and the same scrolling time is used to reach the last list element. We use image caching of different libraries on each platform.
3. React native requires maximum CPU utilization. The reason is that using jsbridge between JS and native code will lead to a waste of resources in serialization and deserialization.
today, most Android and IOS phones have powerful hardware configurations. In most cases, the FPS decline is not obvious with normal commercial applications, which is why we decided to do some tests with heavy animations that are heavy enough to cause a significant decline in FPS.
2. Flutter’s results were surprising, even though it performed poorly in performance tests.
we found that deleting a specific animation from the grid can increase FPS on the fluent by up to 40%. We think flare is heavier and not optimized for such tasks, which is why FPs in the flutter is falling so fast.
4. Application cold start. Flutter performs best on this metric, while IOS and react native take about 10 seconds.
Please note that in this use case, flutter uses a different library, which is much heavier than the library we use on other platforms, which may be the reason for the decline of FPS. Although the performance of native [888.888] is almost as good as that of native [888.888], it has more than twice the performance as that of native.
the general business application looks cool and uses small animation, so it doesn’t matter which technology to choose. But if you want to do some heavy animation, native has the best performance, followed by fluent and react native. It is not recommended to use react native in operations with high CPU utilization, and flutter is very suitable for such tasks from both CPU and memory perspectives.
which tool to choose depends on the specific product and business case. If you want to develop a single platform MVP – in a native way – but remember that flutter applications can be built in mobile, web and desktop environments at the same time, and flutter is expected to be the king of cross platform development in the near future. Even today, flutter is a strong competitor to native development tools, especially when the development budget is barely enough, but you want your application to have good performance.
there may be many factors that affect the implementation and benchmarking of each technology, and many people may be true experts on a particular platform, and can get more benefits from the tool set.
we try to improve the transparency of the whole testing process as much as possible by creating a single test environment for each application and using a single set of tools to measure performance. We hope the test results can help you.