Scaling iOS at Bumble (Part 2)
Article Summary
Bumble's iOS team migrated their entire codebase to Tuist in Q2 2023, choosing it over SPM and Bazel. Here's what happened after the dust settled.
This is the final post in Bumble's three-part series on overhauling their iOS build system. After evaluating Swift Package Manager, Tuist, and Bazel, they made their choice and executed a company-wide migration.
Key Takeaways
- Reduced configuration files by 99%: from 4,000 xcconfig files down to just 39
- Tuist hit the sweet spot: familiar Swift experience without Bazel's steep learning curve
- Modularization became trivial with declarative manifests replacing cumbersome Xcode projects
- Team celebrated migration success with visit to London's Twist Museum
- SPM proved entirely unsuitable at their scale due to poor Xcode integration performance
Bumble successfully migrated to Tuist in one quarter with minimal velocity loss, making modularization dramatically simpler while keeping rollback options open for the future.
About This Article
Bumble's iOS team found that ProjectDescriptionHelpers was becoming too complex and causing performance regressions. They had to carefully watch how fast the generate process ran to keep builds from slowing down.
Jonathan Crooke's team set up performance tracking in their CI system. They added percentage growth limits to each changeset, which kept ProjectDescriptionHelpers maintainable while still using all of Tuist's Project API capabilities.
The team caught overly-complex manifest behavior before it became a problem, so they avoided performance degradation. Their generate times stayed fast while they were able to use more powerful modularization patterns across the codebase.