Initial thoughts on the Airbnb announcement
Airbnb has long been a supporter of React Native and early on committed significant engineering resources to adopt it in their mobile stack. This week, they published a postmortem of that usage and announced their intentions to move away from React Native across the board. While React Native may not be the best tool for their app ecosystem, we still believe it’s the best option for us here at Headway. Let’s talk about what Airbnb’s experience was like and why the future of React Native is still very bright.
Airbnb’s experience with React Native
“After two years, we can safely say that React Native is revolutionary in many ways. It is a paradigm shift for mobile and we were able to reap the benefits of many of its goals. However, its benefits didn’t come without significant pain points.” — Airbnb
In Airbnb’s case, much of their React Native work revolved around building on to their already existing, robust iOS and Android apps for their main platform. As such, they required a considerable investment into infrastructure and library bridges to be able to make use of the same networking and internationalization stack from their native platform within their new React Native screens. Unfortunately, this meant spending considerable time to keep React Native screens on the same footing as existing native screens.
“While developing in React Native, we were able to reliably test our changes on Android and iOS in just a second or two.” — Airbnb
Beyond the complications of this hybrid approach, the Airbnb team was able to share much of their React Native code across platforms and iterate on that code much more quickly than native implementations. React Native brought many advantages to the table for their development experience, but they were also hit a number of times with incompatibilities and breaking changes within the core React Native implementation. As early adopters, they ran into limitations with the immaturity of the RN ecosystem.
The future of React Native for App development
“We’re working on a large-scale rearchitecture of React Native to make the framework more flexible and integrate better with native infrastructure in hybrid JavaScript/native apps.” — Sophie Alpert on Facebook’s State of React Native 2018
While Airbnb’s experience was less than ideal overall, Facebook and the community is acting on their feedback to make the platform even better. In Facebook’s recent State of React Native 2018 post, they outlined plans to change React Native’s threading model, simplify native code integration, decrease the speed of major releases, and limit-breaking changes between versions. All of these directly improve on the pain points that AirBnB expressed in their essay.
The React Native community is young, but continuing to grow in numbers and the availability of great open source libraries. As Facebook addresses these core concerns with the platform and holes are filled in the needs for libraries, the challenges that Airbnb wrestled with will likely continue to diminish.
Our direction and why we believe in React Native
At Headway, our development often begins from ground zero with a greenfield app. Our Compass process is centered around taking a business from initial idea to launched product with the most focus and clarity we can. As such, when a mobile app is part of that solution we have chosen to build it entirely within React Native to leverage the re-usability of cross-platform code and the speed of iteration we can achieve with it. The limitations and challenges Airbnb experienced in their hybrid approach are generally not challenges we face with our direction of how we help startups and business thrive.
“Most features that used React Native were able to achieve 95–100% shared code and [only] 0.2% of files were platform-specific.” — Airbnb
We’ll still rely on React Native to quickly and reliably get applications to market for both iOS and Android in the most efficient way possible. We have confidence in the future direction of the platform and the commitment to it by Facebook and other major companies that are backing it today.
React Native alternatives
While React Native is our typical choice for building cross-platform greenfield mobile apps, there are several other alternative approaches that we’ve used based on the needs of a given project. Some of the options include: progressive web apps, hybrid mobile apps that leverage existing web views, and fully native apps built using Swift or Objective C for iOS and Java or Kotlin for Android. We have the capabilities to build delightful mobile experiences with all of the above technologies, so we make sure to use the right tool for the job when evaluating the tech stack for each project.
Understanding what works best for your product
Are you still refining your idea or getting ready to build your product? We can help you gain a better understanding of what type of development would work best for you. With our Compass process, we can help move you forward. Talk to us to see all the ways we can help.