Often companies with large mobile user bases find that they have to balance rapid iteration with the amount of work involved in launching and coordinating a product on multiple platforms (web, native Android, and native iOS).
Faced with exactly this question for the Airbnb reservation system, we designed a server-driven UI framework for web, iOS, and Android that allows us to launch new types of reservations on all platforms with a simple backend change. It uses a commonly shared API that is parsed on the client and rendered into a set of corresponding components supported on all platforms.
In this talk, I will discuss how we designed this multi-platform system to provide the flexibility needed to launch new types of reservations and UI components, while keeping boilerplate client code to a minimum.
In the code deep dive, I’ll go through the API that is used on all three platforms, how the polymorphic API response is parsed on Android, and how those data models are rendered into a reservation.
Finally, I’ll discuss how this paradigm has been used by other teams at Airbnb for other usecases such as multi-screen forms. I’ll discuss two frameworks, Wall-E and Lona, that we’ve built out to support server-driven UI across the company.