Wealthfront Mar 2, 2026

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

Critical Insight

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.

The team built a custom dependency injection system inspired by their backend Java services to wire modules together at runtime without compile-time coupling.

About This Article

Problem

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.

Solution

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.

Impact

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.