Airbnb is Dropping React Native — Should You Too?

The short answer seems to be — “No” — but it is complicated.

Airbnb adopted React Native two years ago when it was a relatively new and unproven technology. Yesterday (June 19 2018) they announced they will be dropping it. Here’s a summary of the reasons why they are doing this, and some more reasons you probably don’t want to follow them until you are a multi-billion dollar piece of the internet.

Disclaimer - I have nothing to gain from promoting React Native. I don't even use Facebook. As an engineer, I just like the technology :D

Here is a summary of the reasons why Airbnb is dropping React Native:

  1. Framework Immaturity —Since React Native is a new framework, Airbnb was in the position to having to invest significantly in the technology itself in order to build their own apps. They often were doing “simultaneous infrastructure and feature development”. They even had to maintain their own fork of React Native to make contributions, and avoid disruptive fast-paced changes.
  2. Dynamically Typed — JavaScript is, of course, dynamically typed which makes refactoring a “nightmare”. And solutions for becoming statically typed like Flow and TypeScript had their own problems (Flow: “cryptic error messages”, TypeScript: significant switching costs).
  3. Inconsistencies Between iOS and Android — Although React Native should be consistent across both native platforms, some tiny details are still being worked out, e.g. some differences in JavaScriptCore that runs the darn thing. And third party libraries generally lean towards supporting one environment better than another, leaving one having a sub-par experience and Airbnb having to make up the difference.
  4. Three Environment Expertise — Instead of writing the code once, engineers actually had to maintain three environments: React.js, Android, and iOS. And write and then debug in all three. **Christ on a BIKE this sounds annoying**.

All these factors meant that Airbnb couldn’t meet the goals it set for using React Native:

  1. Move Faster — The feeling of developing in React is that you are going fast. And they might still have been moving faster, but when Airbnb looked at the end-to-end commitments they were making the increase in speed was not enough to outweigh other shortcomings.
  2. Maintain the Quality Bar — The quality bar was maintained, but at the high cost of developing React Native and investing a lot into infrastructural development.
  3. Write Code Once Instead of Twice — because they were writing React, iOS and Android code as well as infrastructure code, they were actually writing code three or four times!
  4. Improve the Developer Experience — developers had to maintain a full Xcode, Android, and web development environment and debug in all three. With JavaScript not being easily strictly typed on top of everything, engineers were feeling stretched.

So they will switch to fully iOS and fully Android native apps.

This will certainly improve the developer experience and maintain the quality bar, but it will likely slow things down a bit and all code will certainly need to be written at least twice.

So What About Your Team?

So should your team drop React Native? Starting a new rocket ship startup — should you use React Native?

Of course it always depends on your situation.

Go Native

  1. Are you rich & huge?
  2. Is your mobile experience unconventional?

If you are rich or huge or if your mobile experience is very unconventional, then it makes more sense to hire iOS engineers and Android engineers. (If you are small and poor but have an unconventional mobile experience, in that case you should develop the iOS app first since there is better adoption on iOS of new apps, and then once you are rich and big high Java engineers to build the Android app.)

Go Native, like Johnny Depp… or not…

Go React Native

  1. Are you small & poor?
  2. Is your mobile experience relatively conventional?

If you are small or poor or your mobile experience only needs to be relatively conventional, then you probably want to use React Native.

The cross cases can get confusing:

Airbnb was rich and big but their mobile experience is relatively conventional, so they were trying to economize and that put a pinch on their engineers who have now turned the tables.

Here’s the Android view
Mobile experience needs to be a 10-out-of-10