SwiftQA Random

What architectural problems appear only at scale?

1. Massive View Controllers / God Objects become load-bearing, not just ugly

The cost of touching shared code scales with team size, not app size.

2. Build time and modularization become a first-class architectural constraint

Drives splitting into multiple SPM modules for parallel compilation, and dependency graph discipline to avoid rebuild cascades.

3. Shared mutable state and singletons become genuinely dangerous

Dozens of features touch the same singleton, written by people who’ve never met.

4. Navigation/deep-linking complexity explodes combinatorially

Deep links, push notifications, universal links, state restoration, multiple entry points into the same screen.

5. Feature flag / experimentation infrastructure becomes architecturally load-bearing

Dozens of concurrent A/B tests running simultaneously.

6. Dependency injection and testability friction compounds nonlinearly

Without early investment in constructor injection, testing deep in the graph becomes so painful people stop doing it.

7. Database/persistence migration and schema evolution becomes a one-way door

A bad migration on millions of devices can be irreversible and silent.

8. Memory pressure and cold-launch performance become measured, competitive constraints

Launch time gets instrumented and tied to business metrics.

9. API/backend contract drift and versioning become a coordination problem

Users can run app versions from a year ago simultaneously with the latest backend.

10. Cross-team ownership boundaries force architecture to encode organizational structure

Conway’s Law stops being an observation and becomes a real design constraint.

The unifying theme

Small-scale problems are almost always about getting something built correctly and quickly. Large-scale problems are almost always about coordination cost — between people, time periods, and build/test feedback loops.

One-liner if pressed: “Small-scale problems are almost always about writing correct code quickly; large-scale problems are almost always about coordination cost — between engineers touching shared state or files, between build/test feedback loops that no longer fit in a lunch break, and between release cohorts running different app and backend versions simultaneously.”