Main image of article Is React Native Doomed? Two Development Teams Speak Out
React Native has never been more popular or useful. Its core language, JavaScript, tops the language popularity ranking on Stack Overflow’s latest developer survey, and React is among the most desirable frameworks. So why are notable apps ditching React Native altogether? 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. React Native has a huge JavaScript library ecosystem to tap into, but as Udacity notes, it’s not always useful. A good example is the iPhone X; to ‘embrace the notch,’ developers must adhere to a ‘safe area’ on-screen. This helps text and displayed content from being hidden by the notch, but there's no direct JavaScript library to address the issue. It's a feature that's straightforward to implement in Swift, but problematic with cross-platform frameworks like React. 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. React Native may not be ‘doomed’ per se, but it’s not the silver bullet solution many developers hoped for. If you’re experienced in JavaScript and have an idea for a fairly simple mobile app, React Native is a good option. Still, as Airbnb and Udacity prove, true native apps will always be the best choice.