Uses custom rendering engine based on Skia.
Can write UX just once for all platforms if you don't mind fixing the widget set.
Custom widgets work on all supported platforms.
Can in theory be ported to Desktops also, assuming someone writes flutter engine bindings for Win/MacOS/Linux. If this occurs, then you will truly have a modern, cross-XP, write-once-run-anywhere, compile-to-pure-binary, reactive UX framework
Nothing stopping it, nope. I'm surprised there isn't something currently.
That said, it isn't so bad using different render functions for different platforms. The state management and event handling should be 100% consistent.
Besides, going all in on a single render engine limits you to creating special "holes" to utilize controls native to the platform. Im not sure if flutter supports this, but I doubt it.
There is - ironically, by the owners of Xamarin:
https://microsoft.github.io/reactxp/
Hadn't heard of it practically at all since the initial announcement. It seems it's a very small team: https://github.com/Microsoft/reactxp/pulse
- Flutter renders the UI itself rather than using native components, so you get the same experience on both iOS and Android.
- Flutter uses Dart, which can be compiled AOT, rather than relying on an interpreter.
- Flutter is completely open source, tools, engine, all of it. You can go a long way down before hitting iOS platform code, for example, that you don't have source access for.
There others, but those are the biggies for me.
I thought this was an antipattern in modern mobile device Dev, since you're supposed to make your app "look and feel native" by always using native widgets where possible (and was a major argument for why, eg. Cordova was inferior to react native). Has the collective agreement turned on this, or it is simply contentious?
My personal opinion has definitely shifted, maybe partly because I'm tired of inferior Android experiences of the same app, but also because the looks of Android and iOS seem to be converging anyway.
While maybe they couldn't before, many apps seemingly can now get away with one UX for both platforms - that is a strong simplifier and gives a potential branding advantage.
It may be a good idea to still implement some "platform sensitive" widgets (some behaviors are still slightly different), but the demand for them seems to have drastically gone down.
Dart still has a huge hill to climb for mindshare. The staggering amount of community and documentation around react makes it difficult to carve out a competing solution without the same size of community to write documentation, examples, and answer questions on Stack Overflow.
A lot of React Native isn't "Native", but that term is hard to define. They certainly display plaform-own widgets, but afaik they use their own layout functions and such.
It's not JavaScript.