28 ms·
Not using native widgets/concepts and single threaded are two distinct problems. Single JS threads restricts your business logic a lot. If you start doing any
by LeoNatan25 9y ago
Not using native widgets/concepts and single threaded are two distinct problems.
Single JS threads restricts your business logic a lot. If you start doing any serious work in JS, your app will suffer greatly.
Regarding native components, the result is that views just don't look native, animations are not native (even down to different timing functions), view behaviors are different (the RN button fade out on tap is different than UIButton, etc).
On top of that, since the JS thread is responsible for UI rendering and business logic, if your JS thread is busy, UI is "stuck", being unable to rerender until the JS thread is freed.
All these issues pile up to create a bad result at the end. Add to that the human element (not always being mindful of performance implications), and it is worse. But, definitely, the ceiling is very low at how much you can achieve.
I say all these things from experience; I work next to a team of dedicated RN developers at my company. In many cases, the need to drop to native is apparent and necessary, which makes the point of RN moot.
Certainly, RN is better than Cordova; no doubt about that. But it's just not as good as many people want to fool themselves at believing.
- whizzkid 9y agoI see, thanks for getting into details. I guess, if you are one-man team RN makes good sense since you don't have time to write native for 2 platforms from the beginning. If your app takes off, then switch to native for scaling. Is it possible to partly switch from RN to native? something like convert components one by one to native components, while still running RN for some parts?
- FRex 9y agoWhy not use Xamarin's stuff to do it all in C# instead then?
- LeoNatan25 9y agoXamarin is a good choice indeed. Their constant work to create native mapping is very impressive.
- doublerebel 9y agoBecause Xamarin and all the other cross-platform libraries are as bad or much worse. Most apps don't need native performance, and most that do only need it in a single component. Really good software architects and devs know where a framework like RN is valuable.
- calvin_c 9y agoYes, that is certainly possible. It doesn’t have to be 100% either way, you could do any combination of React Native and proper Native you want.