Why React Native…Wasn’t for AirBNB

Recently Airbnb, one of the earlier adopters of React Native, released a series of articles explaining why they are abandoning React Native. On the surface this sounds like a big strike against React Native, but in reality, this shift has more to say about their team and project structure than it does about the technology itself. Let’s take a closer look at what happened.

Although Airbnb was one of the first major companies to publicly adopt React Native, it was never a full adoption. It started with one developer who wanted to see if he could add a few screens into their existing app using React Native. After that initial proof of concept, they started to grow their React Native team, creating more and more screens. But, there was never a move to rewrite the Airbnb app. Instead, they added a React Native code base alongside the existing iOS and Android code bases.

In the end, they had to support three full code bases with three different teams (iOS, Android, and React Native). To make matters worse, those native code bases were likely in two different languages (swift/obj-c and java/kotlin). This set Airbnb up for a situation where they had dozens of developers each focused on different sections of the code without truly understanding the other sections and, therefore, the bigger picture.

With such an incredible amount of native code, everything became that much more difficult on the React Native side. More time was spent solving integration problems than was spent writing application code. Instead of moving to a single code base, they forced a situation where three codebases were all growing at the same time which resulted in a great deal of extra time and overhead to manage. In short, the Airbnb story is a warning on how not to structure a project.

While I won’t go into a point by point analysis of each issue Airbnb sited as pain points with React Native, it’s fair to say if you remove all the Issues that reference team structure and code integration issues, you’re not left with much in the “con” column. It is true that if you don’t understand the technology you can get yourself in trouble tracking down strange behaviors or platform specific bugs. That said, that is the case with any new platform or framework. The goal is to minimize the number of issues that need to be tracked down and reduce the number of languages and code bases that need to be maintained.

We’ve been working with React Native for almost a year now and in the last six months, we’ve completed/are in active development of four different projects – all with small, nimble teams. Because of React Native, we’re able to iterate at an impressive speed. Not having to maintain two completely different code bases is refreshing, to say the least.

React Native may not have worked for their Airbnb, but, really, that’s on them.