The Fundamentals of iOS Development at Revolut
Article Summary
Illia Kucheriavyi from Revolut reveals how 120+ iOS engineers ship weekly releases across 5 apps while maintaining 150,000+ automated tests. Their secret? A mono-repo with 160 shared modules and build times that dropped from 40 to 10 minutes.
Revolut's iOS team manages multiple financial apps serving millions of users with weekly App Store updates. They've built an engineering culture around speed and quality, using modular architecture, feature flags, and custom tooling to deliver continuously without sacrificing reliability.
Key Takeaways
- 2,200 monthly PRs generate 4,000+ CI builds with 10-minute validation times
- Mono-repo houses 160 shared modules across 5 apps, each buildable independently
- 12,000 unit test suites with 150,000+ test cases plus 3,000 UI tests
- Switched to Bazel for cloud caching, cutting CI time by 75%
- Cross-functional teams own modules end-to-end with no dedicated QA engineers
Revolut ships production iOS code weekly to millions of users by combining modular architecture, aggressive automation, and developer-owned quality.
About This Article
Revolut's iOS codebase had grown too large for XCode's native build system to handle efficiently. The team needed to keep shipping quality software quickly across 5 applications without hitting these technical walls.
Illia Kucheriavyi's team switched to Bazel, Google's build tool, which provided reliable caching for both cloud and local builds. They also built Swift CLI tools in-house that replicate the CI setup locally, so developers can build the same way regardless of their environment or which branch they're on.
PR validation dropped from 40 minutes down to 10 minutes. The team now saves roughly 2,000 to 2,500 CI hours each month while handling around 2,200 pull requests and 4,000 to 5,000 CI builds monthly.