XcodeGen and the Quest to Modularize the Wealthfront iOS App
Article Summary
Wealthfront's iOS team eliminated merge conflicts entirely and cut build times by breaking their 10-year-old monolith into modules. Here's how XcodeGen made it possible.
Wealthfront's engineering team tackled the classic iOS scaling problem: 2,000+ files, 15 engineers across 7 squads, and constant project file conflicts. They adopted XcodeGen to generate Xcode projects from YAML, enabling a path to true modularization with compiler-enforced boundaries.
Key Takeaways
- Fresh builds take 2-3 minutes across all targets due to monolithic architecture
- XcodeGen eliminated merge conflicts by removing .xcodeproj from source control
- Local Swift Packages enforce one-way dependencies the compiler can verify
- Module emitting consumes 14.5 seconds of incremental build time
- Eight infrastructure modules extracted, feature modularization coming next
XcodeGen transformed project management from a merge conflict nightmare into declarative YAML, unlocking modularization that will scale build times with changed code instead of the entire codebase.
Continue reading
What This Article Covers
Wealthfront's iOS app had a monolithic build configuration stored in XML. Reviewing changes meant parsing XML files or navigating Xcode's UI, which made code reviews nearly impossible. Auditing build settings across the 15-person team was manual and error-prone.
XcodeGen generates Xcode projects from YAML files instead. This makes build configuration changes human-readable in diffs. You can review pull requests that add targets, modify settings, or add build scripts.
The team set up local Swift Packages with one-way dependencies to enforce module boundaries. The compiler automatically rejects any cross-module imports that violate these boundaries. This creates structural separation that code discipline and testing alone cannot achieve.
This page summarizes “XcodeGen and the Quest to Modularize the Wealthfront iOS App” by Wealthfront, published Mar 2, 2026. All credit for the original work goes to the authors.