Last month, the engineering team at Airbnb penned a four-part blog series on its experience with React Native. Noting its teams were able to work at “unparalleled speed” when React Native “worked as intended,” it nonetheless chose to drop React Native:
When everything came together, which it did for many features, the iteration speed, quality, and developer experience matched or surpassed all of our goals and expectations. At times, it really felt like we were on the verge of changing the game for mobile development. Even though these experiences were highly encouraging, when we balanced the positives against the pain points plus the current needs and resources of our Engineering organization, we decided that it wasn’t right for us anymore.
The entire four-part series is worth a read, and the points made are backed up by Udacity. Though Udacity offers a React Nanodegree program, it seems React Native is not a good fit for the Udacity apps. Continual integration across platforms is a reported pain-point, exacerbated by the size of each app’s feature set.
Native tooling is its own concern; security is another. Google is now requiring Android app developers to support recent APIs that have stronger security features. That’s exactly the sort of thing far simpler to execute when an app is written in native languages (i.e., Java or Kotlin for Android).
There are also deep control issues to consider. APIs related to security are obviously critical, but so is the integrity of the App Store and Google Play. Apple has begun culling ‘white label’ apps from the App Store, with an addendum to its guidelines noting: “Apps created from a commercialized template or app generation service will be rejected.” As a result, developers are shipping fewer titles.
A likely reason is the tooling and services used by ‘out of scope’ apps. Services that allow people to drag-and-drop visual elements to create their own apps contributed to a densely packed App Store, and made it very hard for quality apps built by knowledgeable developers to stand out.