Bumble Jonathan Crooke Apr 14, 2021

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

Critical Insight

Bumble successfully migrated to Tuist in one quarter with minimal velocity loss, making modularization dramatically simpler while keeping rollback options open for the future.

The team learned critical lessons about what NOT to do with ProjectDescriptionHelpers that could save you from performance nightmares.

About This Article

Problem

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.

Solution

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.

Impact

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.