
Inside the 'Identify First then Challenge' model that cut client code by 60% and boosted login success by 2.6%
Airbnb faced structural challenges with global user log-ins due to infrequent usage and regional preference differences. This article details Airbnb's journey of dismantling a heavy client-side architecture in favor of 'Flexible Authentication'—a server-driven UI (SDUI) system powered by a centralized policy engine that delivers tailored login experiences in real-time.
Highly recommended for platform and product engineering teams looking to seamlessly support diverse global authentication methods and rapidly test onboarding flows without waiting for app store rollouts.
Airbnb's legacy authentication system had organically grown over a decade, distributing complex business logic across clients and causing duplicate accounts and user drop-offs due to the lack of seamless fallback options. It also suffered from slow experimentation cycles because new features and regional optimizations had to wait for full mobile app release cycles.
They established a new 'Identify first then Challenge' model where the user inputs identity details first, and a server-side policy engine evaluates the context to determine the best challenge. They transitioned to a fully server-driven UI where every screen is the unit of abstraction and implemented a 'Challenge Picker' that serves contextual alternative login methods dynamically.
Shifting business logic to the server eliminated 60% of client-side code and reduced the web bundle size by 100KB, allowing engineers to shorten experiment turnaround times from weeks to days. As a result, login success rate increased by 2.6%, duplicate account rates fell by 27%, and OTP expenses were reduced by roughly 11%.
Trade-off
Concentrating all routing and authentication logic onto the server raises the complexity and compute load of the server-side policy engine. Additionally, every step transition now requires a network round-trip, which may negatively impact UI responsiveness under poor network conditions, and demands strict API contract management between server-side schemas and clients.
An architectural pattern where the server dictates the layout, structure, and navigation of the client application dynamically via API responses, keeping the client as a lean, thin renderer.
An authentication approach where a user provides their identifier first, and the backend engine dynamically decides the most appropriate verification challenge based on user context and historical data.
A dynamic server-driven component that presents alternative authentication methods to the user when they fail or cannot use their primary verification challenge.




