Airbnb Michael Bachand Oct 5, 2021

Designing for Productivity in a Large-Scale iOS Application

Article Summary

Airbnb's iOS codebase hit 1.5M lines of code with 75 engineers shipping weekly. Xcode was literally overheating their laptops.

Airbnb's iOS team shares how they transformed developer productivity as their app scaled from a single commit in 2010 to a massive codebase serving 62 languages. They tackled code chaos, build system bottlenecks, and the loss of development joy.

Key Takeaways

Critical Insight

By adopting Buck and a modular architecture with Dev Apps, Airbnb restored indie app development joy to a 1.5M line codebase while doubling test coverage.

Their feature module design prevents spaghetti dependencies in a way that could reshape how you think about app architecture.

About This Article

Problem

Airbnb's flat lib/ directory structure made it hard for engineers to find existing code. This led to duplicate implementations and unnecessary binary bloat across their massive codebase.

Solution

The team created 12 different module types, each with clear semantic meaning and strict visibility rules. Feature interface modules allowed typed routing between features while preventing circular dependencies.

Impact

Engineers could now discover code much more easily. The modularized architecture spread across roughly 1,500 modules let Airbnb keep full code ownership throughout the reorganization without losing track of who owned what.