React Navigation and React Native Navigation are both viable options with their own pros and cons. Been using them successfully in different projects.
I built a bunch of apps with JS navs and nobody ever complained...
That's just the scenario I'm aware of. I haven't done any real projects with React Native, so there may be other pitfalls.
E.g. react router on web has gone through many versions and there are several community libraries for doing web navigation and how you want to track that application state.
RN isn't really web technology. It is a JS engine along side a cross platform API translates API calls to the appropriate underlying native platform code. UI components rendered by RN do not use web tech at all.
It is no different than Xamarine in that regard, and has many of the same drawbacks.
> AirBNB's app is barely usable on two-year-old androids.
I never had problems with it on my Nexus 5x, and everything was a lag fest on that phone. (Lag in daily use got so bad after moving to Android 8 that I had to get a new phone just for my sanity.)
For a large # of apps, RN works just fine. Its real promise is not "web technology", so far as it is 99% code sharing across platforms.
The other players in this market don't have the same community drive that RN does, so people gravitate towards RN.
The whole 10 years there were people that think that they can just get "web" technology and speedup mobile development.
Almost always this companies had no mobile engineers that know how this stuff works. Developers that know that you just can't listen to scroll and update animations by sending messages to background js thread. This just completely wrong on mobile. Most mobile devs spend months to make it fast and easy to use. There are no way to do this in most cases on RN. AirBNB's app is a perfect example of this. Trying to deliver "better" experience they completely kill scrolling performance. Even top level iPhones feels laggy. But yay! We have animations! AirBNB's app is barely usable on two-year-old androids. This is just simply wrong, this is not how you can achieve good performance and nice animations on such small devices. In most cases this is a kind of art and a lot of testing and tweaking for every device. This can be done by only ONE talented developer per platform per year. Surely AirBNB has resources. Just take specific screen and tweak it to hell. On the other side, react and declarative kind of state is really doesn't work well for non-page oriented apps. Mapping history of navigation via redux store is just an awful and useless idea that helps with nothing. Right now there are still no navigation library.
Every time i tried to start something in React Native i failed since i wasn't able to apply my skills to make it behave fast there are just no easy way to do this.
React Native for sure is a good thing, but it's evolution shaped by web devs that try to reflect their experience from web development, but building a good mobile app is completely different from web one. For example, there are no dom, UI manipulation is not slow, navigation between pages and keeping it's state is not a problem most of the time (there are no real "back" button that you have to handle somehow). UI frameworks are more mature (while have less API than HTML).