When I was a student, I created my first mobile application with ionic 3 and Angular.
Then I joined BAM, a mobile agency based in Paris, as a software developer, and worked a year and a half with React-native. I loved It. There are so many things that make this technology awesome, and I still recommend using it.
Today, I'm still a developer at BAM, but now, I'm working with Flutter.
So, do I like it?
Yes.
Do I think it's awesome?
Yes.
Do I recommend using it?
Yes.
Do I think Flutter is better than react-native?
Well, no.
Both technologies achieve the same purpose: building premium cross-platform applications.
How do we choose the technology to build our apps?
I don't think there is a universal answer. There are a lot of articles explaining how the technologies work, or matrices of comparison out there. Let's try another approach, what problems do you want to solve with your app? What are the key features? What are the technical requirements of your app?
If you want to build a mobile application, this decision will help you chose the right technology.
Let's explain.
If your app needs to be deployed on iOS and android, you should consider using cross-platform technology.
If you like working with hot reload, choose Flutter or React-Native.
If not, then to solve a problem, use the right tool. Kotlin or Swift might be the best solution.
Flutter web works. But it has some flaws:
On another hand, React-native web is more close to web conventions. It's easier to use all web technologies and libraries.
You can definitely use Flutter web to use deploy your Flutter app on the web. But React-native web might be a better choice if the web is the main platform of your app. Or maybe another technology that is web-based.
"Write once, run anywhere" doesn't only apply to Java, but also to Flutter.
With native support of iOS, android, web, macOS, windows, linux, Fuchsia, and smart object, Flutter is the clear winner of platform integration.
Toyota's infotainment systems will be powered by Flutter. (Is Flutter the leanest framework ?)
Google Nest Hub, start to implement fuchsia, therefore Flutter.
If your app needs to run on an IoT device, go Flutter.
Your app may need to do a lot of computation. Dart is faster than JavaScript.
React-native is single-threaded, Flutter is multi-threaded.
Some benchmarks show that Flutter apps run calculation algorithms as fast as natives apps.
To build the fastest cross-platform application, choose Flutter.
If you want to put a lot of animations in your app, choose Flutter.
Create, Read, Update, and Delete data. If you're building a crud application, you might not need fancy animations or impressive performances. What you might need, is an easy and fast way to do API calls and store data.
React-Native and React have been around for a while, the community had time to build a very efficient state-management library. The Flutter community is younger, and there is no consensus on how to handle state management, especially to handle server-state.
With React-Native, you will be able to develop an application faster, using tools like Apollo or React-Query.
Unlike a web application, which can be deployed in a few minutes, to reach more users a mobile app must be deployed and distribute by proprietary stores. Like App Store and Google Play.
That means:
So how do you do when you have a critical bug in production, and you want to deploy an immediate fix to all users?
With a Flutter or a native app, you can't.
But with React-Native, you can update your app without the stores, by using CodePush.
If you need instantaneous updates of your app, choose react-Native.
At this point, if you haven't decided what technology to use, it probably means that you can build a great app with either React-Native or Flutter.
We are trying to compare the two champions of cross-platform development, both technologies are awesome, both technologies can answer most business problems.
How to choose, then? Well, there are still arguments that can help you make a decision.
By the way, I recommend you to read this article by Andrei Calazans. It takes the matrix approach to answer this question.
The skills of your teams' members must be a primary driver of your decision.
👉 The developers will be more comfortable with React-Native.
👉 Your team will have an easier time working with Flutter.
Which ecosystem best integrates this functionality (ADR)?
Your app has a key feature. It could be an audio player, direct messaging, or collecting data from the device's sensors.
You should write an Architecture Decision Record, that will help you find what technology is best suited for the features that bring the most value to your users.
I had a great time working with React-Native and Flutter. I chose to work with Flutter for all the cool opportunities that come with new technology.
As developers, we have the chance to choose between those two frameworks.
Both Flutter and React-native are great and will continue to improve in the future.
Choose your fighter.