|
I think React Native is fantastic for getting out basic applications that may need camera, map, browser, and storage, etc capabilities. However, once you need more intricate functionality, I think it's best to write modules in Swift/(Kotlin/Java) and have your React Native UI communicate with your modules via the bridge. I think React Native solves an organizational bandwidth issue. Building true native applications per platform will always outshine any results you get from React Native, both in performance and capability. However, if you have just a few developers, I think React Native is a practicable compromise. Companies like Airbnb have the engineering bandwidth to develop bespoke platform specific applications, it's up to you and/or the company you work for to know what compromises can be made. |
The thing is, though, browser-based APIs let you do all of that now, in a way that is usually a lot simpler to access. In these cases it's often a lot easier to just build a Progressive Web App for Android (Google let's you put PWAs directly in the Play Store), and wrap that with a thin native wrapper for iOS.
One of the big "aha" moments I had was a couple years ago when I was trying out Stripe's Identity product, which lets you take a selfie and a picture of your ID for identity verification purposes. It's pretty amazing how Stripe was able to do the full image analysis (i.e. edge detection when you take a picture of your ID) solely with browser APIs.
With the big exception of games, there are a vanishingly small number of apps that really require native functionality these days, given what you can do in the browser.