🤝 Handling the tool

There are already many comparisons between Dart and JS, native components, scaffolding, etc… I won’t develop it more here, feel free to Google for it and you’ll end with many relevant results.

Briefly: Dart is natively typed and it’s a really good language that was originally designed to replace Javascript (but Google didn’t succeed on making other browsers than Chrome to ship a Dart VM). On the other hand, JS is not natively typed but can be extended with Typescript.

We could then talk about your favorite IDE, you favorite scaffold CLI or tool…

But this is not what’s really matters. We care about the liberty and the flexibility a framework gives us to reach our goals, not how it’s to take in hand at first glance. You get used to everything.

So let’s talk about popular arguments we can read about everywhere, the same arguments I’m hearing from my colleagues at work 😄

🚫 False argument in the Flutter VS React Native battle

Dart is a typed language while JS is not. It’s safer.

Type safety is definitely a first-class choice for any application, especially mobile ones which have greater inertia on rollout due to the build and store validation.

JS can use Typescript and Flow to get this too. This doesn’t give performance optimizations of dart currently, but this might changes in the future, especially with the new engine/architecture of RN that’s coming in 2020.

But remember that having a non-static typed language is also a really good thing in some cases. Sometimes it allows replacing the type of a variable without the need for recompiling. I experienced one case with a tennis app where the game points were returned using an integer of the 0 , 15 , 30 , 40 enumeration. Then we added AD string for game advantage, that was not provided at the beginning. We could have done that without releasing a new build because of non-static types by just changing the GraphQL scheme and return that new value. In Dart, this would have resulted in a crash or an error.

Flutter and Dart are powered by Google and new Google Fuchsia OS is the future. RN will die smoothly as Flutter will be so much better optimised for their new OS.

No one can predict the future, but one thing is certain: Some of the greatest companies in the world are betting on react native at the moment.

Microsoft as an example is building a lot of tools such as CodePush or RN windows / Mac and some part of the most popular tools such as Word are being ported to RN.

Discord one the greatest messaging/audio communication startup is also posting nice articles on react native and they succeed to get close to native performances using RN.

RN is also used in banking: https://callstack.com/blog/secure-your-react-native-app/ as Callstack showed us at React Native EU 2019.

Flutter is for sure a strong choice and will keep growing, but I think both frameworks will be competitors for Fuchsia.

✅ True arguments for Flutter VS React Native

Flutter has better performances than react native

Nothing to say, thanks to native compilation we can only agree on that currently. But with some optimizations, you can have a nice experience of RN without noticing issues.

Flutter is easier to take in hand when you come from a Native background.

And in fact due to the default typed language and the implementation logic, that’s also true. Flutter is closer to Android and Ios than RN. Most of the logic is taken from Java, the only major difference is the declarative aspect that is different than the Android imperative one

You’re writing widget with kind of props that describe your app expected state and layout, where you were writing classes and calling functions before.

Flutter devtools are great while react one are currently poor

Honestly, there is a huge gap between flutter and react here. The flutter team has awesome integration for VSCode and Android studio with a lot of rendering debuggers and analysis tools.

On the other hand, React native has poor dev tools besides the ReactDevTool and small plugins, most of the native debugging relies on native libraries for android/ios. Facebook recently released Flipper to improve this, but this is still experimental when I’m writing this.