Thumbtack's Journey to Swift 6
Article Summary
Scott Southerland from Thumbtack just shared what most iOS teams won't tell you: migrating to Swift 6 took 16+ months and broke their entire test suite. Here's the battle-tested playbook they wish they'd had.
Thumbtack's iOS team started adopting Swift concurrency in Fall 2023, moving through three enforcement levels before finally reaching Swift 6 in January 2025. Their journey reveals the hidden complexity behind Swift's promise of compile-time thread safety, including compiler bugs, framework incompatibilities, and runtime crashes that slip past compilation.
Key Takeaways
- Warnings-as-errors policy blocked incremental migration, requiring creative burndown lists and signup sheets
- Third-party dependencies (including Apple's) lacked concurrency support, forcing @unchecked Sendable workarounds
- Swift 6 runtime checks crashed production code even after passing compilation and tests
- XCUITest bugs with async contexts caused frequent timeouts and ignored failure flags
- Breaking code into modules enables scoped migrations for future Swift transitions
Critical Insight
Thumbtack spent 16 months navigating three Swift concurrency levels, discovering that compile-time safety promises don't prevent runtime crashes from Objective-C interop.