React Native at Airbnb

In 2016, we took a big bet on React Native. Two years later, we’re ready to share our experience with the world and show what’s next.

Years later, it’s still possible to book a meeting in our Airstream

This is the first in a series of blog posts in which we outline our experience with React Native and what is next for mobile at Airbnb.

When Airbnb launched 10 years ago, smartphones were in their infancy. Since then, smartphones have become an essential tool to navigate our everyday lives, especially as more and more people travel around the globe. As a community that enables new forms of travel for millions of people, having a world-class app is crucial. Mobile devices are oftentimes their primary or only form of communication while away from home.

Since our first three guests stayed in Rausch Street in 2008, mobile usage has increased from zero to millions of bookings per year. Our apps give hosts the ability to manage their listings on the go and provide travelers with inspiration to discover new places and experiences right at their fingertips.

To keep up with the accelerated pace of mobile usage, we’ve grown our team to more than 100 mobile engineers to enable new experiences and improve existing ones.

Placing a Bet on React Native

We are continually evaluating new technologies to enable us to improve the experience of using Airbnb for guests and hosts, move quickly, and maintain a great developer experience. In 2016, one of those technologies was React Native. Back then, we recognized how important mobile was becoming to our business but simply didn’t have enough mobile engineers to reach our goals. As a result, we began to explore alternative options. Our website is built primarily with React. It has been a highly effective and universally liked web framework within Airbnb. Because of this, we saw React Native as an opportunity to open up mobile development to more engineers as well as ship code more quickly by leveraging its cross-platform nature.

When we began investing in React Native, we knew that there were risks. We were adding a new, fast-moving and unproven platform to our codebase that had the potential to fragment it instead of unifying it. We also knew that if we were going to invest in React Native, we wanted to do it right. Our goals with React Native were:

  1. Allow us to move faster as an organization.
  2. Maintain the quality bar set by native.
  3. Write product code once for mobile instead of twice.
  4. Improve upon the developer experience.

Our Experience

Over the past two years, that experiment turned into a serious effort. We have built an incredibly strong integration into our apps to enable complex native features such as shared element transitions, parallax, and geofencing as well as bridges to our existing native infrastructure such as networking, experimentation, and internationalization.

We have launched a number of critical products for Airbnb using React Native. React Native enabled us to launch Experiences, an entirely new business for Airbnb, as well as dozens of other features from reviews to gift cards. Many of these features were built at a time where we simply did not have enough native engineers to achieve our goals.

Different teams had a wide range of experiences with React Native. React Native proved to be an incredible tool at times while posing technical and organizational challenges in others. In this series, we provide a detailed account of our experiences with it and what we’re doing next.

In part two, we enumerate what worked and what didn’t with React Native as a technology.

In part three, we enumerate some of the organizational challenges associated with building a cross-platform mobile team.

In part four, we highlight where we stand with React Native today and what its future at Airbnb looks like.

In part five, we take our top learnings from React Native and use them to make native even better.

--

--

--

Creative engineers and data scientists building a world where you can belong anywhere. http://airbnb.io

Recommended from Medium

Angular vs. React vs. Vue: A 2017 comparison

App timer and asynchronous javascript example

Hack This Site: Realistic Web Mission — Level 3

Working with Tailwind CSS in Gatsby

Integrating React Native Vector Icon with React Native 0.60 and above

Playing PokemonGo, only with folks wearing a Levis t-shirt

https://rarible.com/token/flow/A.01ab36aaf654a13e.RaribleNFT:186739

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Gabriel Peal

Gabriel Peal

Android at Tonal. Lottie and Mavericks. Formerly Airbnb and Android Auto at Google.

More from Medium

Smart pipelines for React Native

Benchmarking cryptography in React Native and iOS

Archiving iOS React Native app in an NRWL monorepo: debugging guide

From React Native to Native