iOS Architecture at Scale
I spent a decade building iOS at scale, at Google Drive and then as the platform tech lead for Reddit's hundred-plus engineer iOS org. The recurring lesson is that architecture is a migration, not a decision. Modularization, declarative UI, dependency inversion: you do not choose them once, you move toward them continuously, and the abstractions that do not enforce boundaries are just suggestions.
Build time is the most underpriced cost in mobile, and the dependency graph is the real lever, not the caching strategy bolted on top. Declarative UI was clearly the future early, which is why I built SliceKit and Minerva before SwiftUI was production-ready, and why I keep writing about where SwiftUI is and is not ready yet.
Platform shifts are bets you place years ahead: Apple Silicon, Swift Concurrency, privacy as a product concern, the cost of cross-platform code. The posts below trace those bets and where they landed.
Reading path (28 posts)
- Mandates Fail, Examples Win -- Scaling engineering practices to a large iOS org. Why mandates fail and consistency comes from tooling, not enforcement.
- Aggressive iOS Version Drops Are a Platform Mistake -- iOS 16 shipped two weeks ago. Most teams about to drop iOS 14 are trading short-term cleanup for long-term user pain. Stage features, don't drop versions.
- We Ditched HLS and Cut Playback Errors by 22% -- How I rebuilt Reddit video playback by ditching HLS for an LRU-based prefetch cache, cutting playback errors meaningfully.
- SwiftUI 4 Is Production-Ready. For Some of You. -- WWDC 2022 closed the biggest SwiftUI gaps. SwiftUI 4 works in production. For greenfield. Mixed-mode is the right call for everyone else.
- SliceKit: Composition and Testing (Part 2) -- How SliceKit's composition model works in practice, plus the testing strategy that got the Reddit iOS org on board.
- Modularization Is a Migration, Not a Decision -- Most mobile orgs treat modularization as a Q3 project. It's actually a multi-year migration with org-design implications. Treat it like infra.
- SliceKit: Declarative UI at Reddit (Part 1) -- How I built a declarative UI framework for the iOS org at Reddit, and why consistency at scale requires opinionated tooling.
- The Build-Time Tax Is the Most Underpriced Cost in Mobile -- At 100+ engineer mobile orgs, build time is the single biggest tax on engineering productivity and the most under-invested area on every roadmap I see.
- Apple Silicon Cut My Mobile Build Times in Half -- Six weeks on an M1 Pro and my real iOS build runs roughly twice as fast as the 2019 Intel MacBook it replaced. The laptop-refresh ROI writes itself.
- Why I Left Dropbox for Reddit -- After three years at Dropbox, I joined Reddit to lead iOS platform engineering for the 12th most-visited website.
- iOS 15 Made Privacy a Product Engineering Problem -- iOS 15 plus ATT turned privacy from compliance into product engineering. Teams treating it as legal-team work are losing revenue this quarter.
- Swift Concurrency Changes How You Hire iOS Engineers -- WWDC 2021 shipped async/await and Actors. Most iOS hiring rubrics still test for legacy GCD. The teams that update their interviews are the ones that win.
- Cross-Platform Code Is a Tax You Pay Twice -- The default reflex is to share iOS and Android code to save effort. Most teams pay that effort twice: once in the abstraction, once in the special-cases.
- We Shipped SwiftUI. It Crashed 1% of Users. -- We rolled out SwiftUI to a slice of Dropbox users and hit a 1% crash rate. Here's why we chose UIKit and declarative frameworks instead.
- A Year of Remote Engineering, Now What -- Twelve months ago I said remote was better for deep work but worse for everything else. A year of data later, the take mostly held, with two things I got wrong.
- Six Weeks on M1: The iOS Engineering Verdict -- Six weeks on an M1 Mac mini. iOS engineering verdict, build times noticeably faster, fans silent, Rosetta absorbing the tooling tax. Refresh in 2021.
- GPU Shaders Gave Us a 10x on Document Scanning -- How my team at Dropbox achieved a 10x performance gain in mobile document scanning by moving from CPU-bound C++ to GPU shaders.
- iOS 14's One-Day Launch Was a Platform Mistake -- Apple shipped iOS 14 with less than 24 hours' notice. The widget-launch chaos was a structural process failure, not a pandemic-driven one-off.
- Apple Silicon Is the Real Story of WWDC 2020 -- WWDC 2020 had iOS 14, widgets, Big Sur. The story was none of those. Apple Silicon is the biggest mobile-engineering hardware shift this decade.
- The Contact Tracing API Is a Mobile Platform Inflection -- Apple and Google's COVID Exposure API isn't really about contact tracing. It's two OS makers cooperating on a privacy protocol in 11 days.
- Mac Catalyst Is Not Ready Yet -- Six months after Catalyst shipped, the production verdict is in. "Check a box in Xcode" collapses on platform conventions. Don't ship a Catalyst app in 2020.
- Five RxSwift Patterns That Actually Work -- Five practical RxSwift patterns for well-architected iOS apps, from reactive mutable lists to the retain cycle trap nobody warns you about.
- Minerva: The Coordinator Pattern Done Right -- Part 3: Testable navigation by separating what to present from how to present it. Deep linking becomes a natural consequence.
- Minerva: Kill Your Imperative List Code -- Part 2: CellModels turn iOS list management from imperative data source manipulation into declarative state descriptions.
- Minerva: An iOS Framework Nobody Asked For -- Part 1: Why I built an open-source iOS coordinator and list framework, what existing solutions get wrong, and the core protocol.
- VIPER Is Half Dead in Modern Swift -- VIPER was a breakthrough in iOS architecture, but modern Swift makes half its layers unnecessary. A protocol-driven alternative.
- iOS Architecture at Google -- What iOS development looks like inside Google: internal promises frameworks, years resisting Swift, and everything built from scratch.
- Inside iOS at Google Scale -- Inside the build system, source control, and tooling that powers iOS development at Google, and why long builds change everything.
Frequently Asked Questions
Is modularizing an iOS codebase a one-time decision?
No. Jeff Adler frames modularization as a migration you move toward continuously, with enforced module boundaries, not a single architectural choice you make once.
What is the biggest hidden cost in mobile engineering?
Build time. Jeff Adler argues it is the most underpriced cost in mobile, and that the dependency graph (not just build caching) is the lever that controls it.
More topics: Agentic Engineering | Engineering Leadership | All posts | About Jeff Adler