React Native vs Flutter – FAQ

React Native vs Flutter cover

The time for websites with messy UIs that deliver the bare minimum a user asked for has been over for a while and the same can definitely be said for mobile applications. Today, users want top-notch apps that are easy to use, fast and reliable – and give them no more and no less than what they promise. Needless to say delivering these kinds of apps does not come in the snap of a finger nor with the smallest of cost. Coming to aid companies and organizations are cross-platform frameworks. They shorten the development cycle from design to delivery and thus decrease the costs as well. 

Now you might ask “should I even go cross-platform”. That’s another topic for another day, but for the sake of this blog let’s answer yes. Going cross-platform means that an app can be developed for Android, iOS and often also for the web using a single codebase. This means that there’s a strong possibility that design, development and even testing will require less time and less money than when going native.

The following question usually is “what cross-platform framework is the best”. Let’s dive in to the two most used ones to get you an answer.

What are my top two choices?

React Native and Flutter – they are some of the most used mobile frameworks for building cross-platform mobile apps. They’re both open-source, support a single codebase for Android and iOS, and include a hot reload feature that will speed up both development and testing.

What is React Native?

Released in 2015 by Meta’s Facebook, React Native is an open-source mobile app framework that uses native components of each platform giving apps native look and feel. Under the hood, React Native uses JavaScript and JSX (the latter allows writing HTML in React) which means developers who are familiar with JavaScript can usually learn it rather quickly. React Native also has a large developer community behind it. Apps such as Discord, Instagram and Pinterest have been developed using it.

What is Flutter?

Released in 2017 by Google, Flutter is an open-source mobile framework that uses Google’s own object-oriented language called Dart. Its developer community has been growing rapidly and on StackOverflow’s online survey of 2023 it bypassed React Native in the “Most popular technologies of the Other frameworks and libraries category”. Apps such as Google Pay, Etsy and Phillips Hue have been developed with Flutter.

How difficult are React Native and Flutter to learn?

As of now Google’s Dart language has no other popular use cases than Flutter so a developer without experience with it will have a completely new language to learn in a Flutter project. However, the experience of our consultants at Identio is that the learning curve with Dart isn’t as steep as it might seem. I also need to point out that the syntax of Dart is similar to JavaScript so a developer who can read JS can probably read at least 90% of Dart as well. Google has also put a lot of effort into providing comprehensive and easy-to-understand documentation, in addition to a swift project setup.

“We had a workshop at Identio about learning Flutter. About ten of us without previous experience gathered for a weekend, and everyone had a running app at the end of it.”

– Julius Rajala, Software Engineer

To compare, a developer who has experience with ReactJS is likely to learn the ropes of React Native quite quickly and most likely you have developers who’ve used ReactJS or at least JavaScript. But the documentation pales in comparison to Flutter in both structure and content. 

Regarding documentation the point definitely goes to Flutter but all in all I’d still give a point for React Native for an easier learning experience.

Any differences regarding building the app UI?

React Native comes with about 25 UI components. Any features that cannot be built with them will need to either be implemented using third party libraries or by writing them from scratch. Using third party libraries can lead to compatibility issues and the latter is expensive. However, React Native is considered stable for using third party packages for things like payment handling or geo-location and there’s a wide range of actively maintained libraries to choose from. And as mentioned, React Native uses native components which is always an optimal route since native components are built exactly for the specific platforms and devices. An example of a native component is the camera app.

Flutter, on the other hand, includes a comprehensive UI component library as it’s integrated with Google’s Material Design. Developers can expect smooth sailing when it comes to compatibility if the UI can be built using just that. However, options with third party libraries are not as broad than with React Native if there’s a need for anything else. The advantage here is that the Material Design library is well designed and answers to the needs of most modern apps. An app could even be designed using FlutterFlow (read our blog about it here) meaning that the design would use these built-in UI components making implementation quite straightforward.

Which has better performance?

Due to its efficient compilation Dart does offer better performance so Flutter takes the lead here. However, the impact for the user isn’t that significant that you should choose Flutter only for the improved performance. Due keep it in mind though.

Which is easier to maintain?

Now with maintenance it’s like they say “with great power comes great responsibility” but here it’s “with third party libraries comes headache”. Jokes aside, using third party libraries means you need to trust that those libraries are being maintained as well in order to prevent security and compatibility issues, and you must keep tabs on when they have been updated and if those updates keep that library compatible with your app. This goes for both Flutter and React Native. If we then don’t consider the use of third party libraries, the experience this writer has is that for maintenance, React Native loses a point because updating React Native itself can be a wild experience and a developer responsible for it will benefit from having steady nerves. Something almost always breaks and debugging the broken update isn’t usually swift at all.

Developing with React Native

What about bugs and app updates?

Let’s consider here that your app uses the most common form of delivery – the app stores. Then delivering app updates is the pretty much the same for both Flutter and React Native. The differences are most likely visible in debugging and testing so they won’t be visible to your users but rather to your developers. Flutter has integrated testings features while React Native has no official testing framework using frameworks like Jest instead.

Any other things to consider when choosing between React Native and Flutter?

Well, as a fair warning we might never know if a framework will cease to exist so going native is in that way the safest of options. This doesn’t mean that cross-platform is a bad choice. React Native has been here for almost a decade now and some of the most popular apps in the world have been developed with it. Flutter on the other hand has Google behind it and Google can be said to not have the best track record with giving long-time support for their technologies, but Flutter’s future has been looking very promising.

Which one suits my needs best?

Totally depends on your needs here. What’s your budget and timeline? Do you have a design ready already? Who will be working on the app? Depending on your app’s functionalities the differences between developing it with React Native or with Flutter might be either significant or insignificant. What I can promise is that you will get a working app with either, the road to that just might be different. If you have difficulties deciding do ask from people or companies with more experience. 

Writer’s notes

As React Native might be more familiar to many of you readers, me and my colleagues thought it would be good to shake things up and point out that there is another great option out there – Flutter. I’ve myself used React Native more and despite its faults still enjoy working with it, but I cannot say I’m biased and can definitely see the opportunities Flutter offers. Hopefully with any future decisions Flutter is taken into consideration as well and the framework is chosen with the app and the developer in mind!

Author


+358 40 568 4617


+358 40 568 4617

Scroll to Top