4 ms·
Its day and night difference compared to 3 years ago (internally), but situation with libraries is still pretty much same: they die off randomly and you have to
by deliriumchn 3y ago
Its day and night difference compared to 3 years ago (internally), but situation with libraries is still pretty much same: they die off randomly and you have to search a new solution, spending your time. Expo's stuff is mostly good and well maintained, thats something.
I use it, mostly with expo. Everything works out of the box and performance is actually surprising (because of Hermes engine), I'd say its a lot better than all other alternatives when it comes to cross platform development solution, simply because flutter is the only real competitor and flutter has few problems that makes it unbearable for me:
1) lots of copy-paste boilerplate code
2) ios apps behave weirdly in flutter (maybe they still havent fixed 1 frame lag with touch/swipe/scroll events? idk)
3) they're not using native components but implementing them on canvas. This sounds extremely prone to issues and bugs and requires them to catch up to update stuff once platform holders change something in their UI kits.
If I had to pick a tech right now, I'd go
React Native -> Jetpack Compose/Swift UI -> Flutter -> Anything else
- zigzag312 3y ago> 3) they're not using native components but implementing them on canvas. This sounds extremely prone to issues and bugs and requires them to catch up to update stuff once platform holders change something in their UI kits. Every native UI draws on canvas. So, drawing on canvas is technically as bug prone as a native UI. Also, nothing breaks when platform holders change something in their UI kits, because Flutter is not using their UI kit (except of few fundamental things). Components continue to behave and look exactly as they did before. If you want to mimic new design/behavior of platform's native components after an OS update, Flutter widgets need to be updated independently.
- lockhouse 3y agoYes, but not using native controls, while still trying to look and feel just like them creates an uncanny valley where things are just inexplicably off. iOS in particular uses a lot of animations for context clues, and it is very hard to get right when you try to copy it. There’s also a lot of functionality that is baked into native controls, such as accessibility and localization that are often missing from canvas drawn controls.
- throwaway60707 3y agoI don't get why nobody tries to make something like React Native that would provide interface to the native components.
- gorbypark 3y agoThat is React Native isn’t it? A lot of people end up making custom components (using pure JS), but it’s completely possible to wrap native components and use them. The downside is someone needs to make the native component wrapper as React Native doesn’t really provide much in terms of that out of the box besides maybe a button component. Expo has a new system that’s in beta that should make doing this much, much simpler (check out expo-modules).
- throwaway60707 3y agoWell yeah - you'd need to write that native code wrapper, which kind of defeats some of the purpose of React Native (not having to write native code).
- gorbypark 3y agoAs a user, I suppose it is disappointing there aren't bindings for _everything_ offered on the native platforms. However, there are a ton of packages provided by the community, especially since the "slim core" initiative from Facebook is pretty much done. They removed almost everything not essential from the core or React Native to make it much more focused and I suppose easy to maintain.
- zigzag312 3y agoThat's true. IMHO, solution to this is not trying to look and feel exactly like native controls, but focusing on providing universally good UI/UX instead. Good UI/UX can be independent of a platform it runs on. Don't get me wrong, there are a few essential things that you have to mimic in order not to be too alien on a specific platform. But for everything else, try to provide best UI/UX for a specific task rather than trying to mimic some generic controls. Making a good UI framework from scratch takes considerable amount of resources. The lack of accessibility and localization is usually due to insufficient resources from framework developers, not a technical limitation.