My thoughts on React Native
The first six years of my engineer career was spent building mobile apps the native way, with Objective-C, Swift, and Java. Since I know how to build mobile apps natively, I didn't spend much time considering cross-platform mobile app technologies like React Native, Xamarin, and Cordova. Not only did these cross-platform technologies have a reputation of delivering sub-par mobile app experiences, I didn't see many job postings for companies needing these skills.
However, in 2017, I gave React Native a try at my current employer. I was initially skeptical of the technology, thinking that we wouldn't be able to deliver a strong experience for our customers. But I was wrong. Over the next two plus years we continued using React Native with great success. Being able to go deep in React Native and traditional native mobile development has given me good perspective on the technology's pros and cons.
Let's walk through a few hypothetical scenarios. First, we'll think of a situation where I am starting my own startup, with no mobile app code base or existing engineering team. Second, we'll explore a scenario where I am joining an existing engineering team that needs to build a brand-new mobile app.
Scenario 1, Founding a new startup
However, if in my theoretical startup, I need to build a video-intensive app, video game, or highly custom mobile app, I'd stick with native. React Native can be used to make performant applications sufficient for many types of businesses. However, when doing intensive data or graphics processing, maintaining the highest level of performance can be difficult.
Scenario 2, Joining an existing engineering team
And finally, if my engineering team consists of mobile native engineers, I'd stick with native. I would not try to teach native developers React Native. Any efficiency gains made by choosing React Native over native would be lost as engineers need to onramp with a new technology.
React Native is a strong tool worthy of consideration for most mobile app projects. It can speed up development times and let you ship apps to multiple platforms in a single code base. However, it is not a silver bullet. Depending on the type of app you need to build and the makeup of your current team, it may make more sense to stick with traditional native development. And please, don't make your native mobile app development team drop their current expertise and chase React Native.