system design · system-design
Design the App Store (Catalog + Distribution)
Catalog, search, payments, review system, distribution at scale, regional availability.
Theory
Explanation
Intuition first, formal definition second. Skim the bullets if you already know this; read the prose if you don't.
App Store = catalog + payments + binary CDN + reviews + ranking. Distinctive: regional availability rules, app-review pipeline, and very large signed binaries.
Catalog stores app metadata per (app_id, region), title, descriptions, screenshots vary. Search inverted index. Payments via Apple ID + StoreKit. Binary distribution via CDN with delta updates (App Thinning slices per device). Reviews moderated for spam + abuse. Ranking blends downloads, ratings, retention.
When to use
App marketplaces, plugin stores, OS-level package managers.
When not to
Internal enterprise distribution (use MDM).
flowchart LR Dev[Developer] --> Submit[Submit Build] Submit --> Review[App Review Pipeline] Review -->|approved| Cat[(Catalog · per region)] Cat --> CDN[Binary CDN] Cat --> Idx[(Search Index)] User([User]) --> Store[Store App] Store --> Cat Store --> Idx User --> Pay[StoreKit Payments] User --> CDN Reviews[(Reviews)] --> Mod[Moderation] Mod --> Reviews
Key insights
- Regional availability is per-app and per-feature, must filter at every API.
- App Thinning ships only the slice for user device, saves bandwidth.
- Review pipeline mixes ML scanners + human review, turnaround days.
- StoreKit isolates payment scope; apps never see card details.
- Search ranking blends quality signals; not pure popularity (anti-manipulation).