The map
- Not started
- In progress
- Done
- Builds on
- 01The app's lifeLaunched, backgrounded, killed0/3
- 02One thread drawsMain thread and concurrency0/4
- 03Screens and dataDeclarative UI and the network0/4
- 04Beyond the screenBackground, push, shipping0/6
- 05Next: system designSame ideas, at service scale
- Retry with backoff and jitterLibrary ↗Phones lose the network all the time. Retry with exponential backoff and jitter, so a million devices coming back online don't all call your API in the same second.
- Idempotency keysLibrary ↗A request retried after a dropped connection, a background job run twice, a push delivered twice: each must not create a second order. The server needs a key to recognise repeats.
- Backend for frontendLibrary ↗Both apps pay for every round trip over a slow radio, and old versions stay installed for months. A backend shaped for the apps keeps payloads small and moves change to the server.
- Feature flagsLibrary ↗A store release can take days to reach users and can't be rolled back. Ship features dark and turn them on, or off, from the server.
Each stage pairs the iOS topic with its Android counterpart where the platforms mirror each other: scene and activity life cycles, the main run loop and the Looper, Swift concurrency and coroutines, SwiftUI and Compose, background limits, APNs and FCM, and signing and release. Android's process topic has no single iOS twin, because iOS folds process death into the app life cycle. Progress is shared with the iOS and Android paths.