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
- Switched from Xcode to Facebook's Buck build system with network caching
- Created 12 module types with strict visibility rules across 1,500 modules
- Dev Apps now power 50% of builds with sub-2-minute compile times
- Test coverage jumped from 23% to 50% with new architecture
- Maintained 100% code ownership despite massive reorganization
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.
About This Article
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.
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.
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.