Bonus: since most of my logic is C++, I am still able to ship the app using two RN versions: 0.59 for Windows 7 and 0.67 for Android
https://reactnative.dev/docs/hermes#confirming-hermes-is-in-...
As far as I know it’s:
- less popular (https://gist.github.com/tkrotoff/93f5278a4e8df7e5f6928eff986...)
- worse performance
- much more frustrating developer experience (inherently subjective but not a particularly controversial opinion)
- less supported / actively developed (some very core parts of the RN ecosystem got punted to “community supported” where they basically died in place) but also worth comparing GitHub activity for Flutter https://github.com/flutter/flutter/pulse/monthly and RN https://github.com/facebook/react-native/pulse/monthly
I think Flutter is a much better long term bet despite the fact that it’s a much newer project.
I think a lot of people have their opinions based on an image of React Native in the past. It evolved a lot to be better performant and easier to work with. And for many people the React ecosystem is way more familiar than Dart.
There's also new rendering engine being worked on for Flutter called Impeller. It's not just React Native that's improving.
edit: silly mistake Android is open source, not sure how much it helps when compatibility layer is not a priority for the OS developers
Flutter has big advantage in this area as it doesn't wrap OS's controls, but has build it's own controls on top of lower level OS's APIs.
Avalonia (which also renders it's own controls) has posted an article, describing how it's easier supporting new platforms this way: https://dev.to/avalonia/avalonia-platform-support-why-its-si...
Avalonia GUI apps can run on Linux without a desktop environment installed because of this.
Either way thanks for the link, I’ll check it out.
However, framework developers often develop controls that emulate platform controls. Not all are 100% match. Depends on the quality of the implementation.
The quality of Flutter controls is not yet on par with iOS's controls, but if they continue to improve at the same rate as they currently do, in 1-3 years they could match or even surpass them.
Reason is simple. React Native abstracts only platform away by exposing base components. If you really need something for a specific platform it is very easy to write a custom plugin - so you will need some platform knowledge. I have used flutter as well but must admit it feels not the way as I would like to have - especially the shader compilation if a component gets shown for the first time I feel annoying.
So to me react native is best - but comes with its own pain points like updates...
If you can afford it go pure native and try to write business logic in a shareable language e.g. Rust, C, C++, Kotlin native... and integrate the UI based on the platform.
If thats not an option I recommend react native + if needed custom modules and try to not use too many third party libs.