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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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,
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:
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.