Speeding up the build process of a monolithic application
summary
Claim: a monolithic iOS app drops clean build time from ~307s to ~57s by splitting into modules, caching built frameworks and using CI to populate caches. Technique: introduce Bazel caching with custom rules that call a tooling layer, generate projects with xcodegen, create modules via a template tool built on swift-argument-parser, and expose commands with a wrapper called steve. Results: 32 → 78 modules, core framework extracted, cache invalidation and Xcode file churn are the main gotchas.
AI-written summary · about
chapters (20)
- 0:00Introduction
- 2:00Measurements
- 5:48Alternative build systems
- 7:52Code Base
- 8:25Project Structure
- 10:16Xcode Gen
- 12:23Module Gen
- 13:44Replace Command
- 15:16Project YML Manifest
- 15:49Project Workspace
- 16:49Command Configuration
- 17:31XCodeGen
- 18:17Build files
- 19:19bazel query
- 20:58bazel build
- 24:32steve
- 26:51continuous integration
- 27:22unit tests
- 28:02gotchas
- 29:51results
related talks
42mSplitting Monolithic Swift Code Base Into Modules
33mScaling Swift Development
28mFast reliable Swift builds with Buck
32mCut costs, not corners - Master modularization with SPM
39mModularization techniques from monolithic to multi-packages app
37mCut costs, not corners: Master modularization with SPM
30mFrom Slow to Flow: Tips for Accelerating Your App Performance
38mThe Project Template
