Free · Android + iOS
Prepare for a mobile system design round
This site is for Android and iOS engineers who have a mobile system design interview. It is free to read. You need no account.
Start hereTry the practice timer
- 14 case studies, each with the ways it can fail
- 13 build guides with the database, the API and the code
- A 45-minute practice timer
- Simulators that you can change and watch
- A glossary in plain English
Try it: send a message on a bad connection
The design from the chat case study, working live.
Chat screen
On the device
Outbox
Server
Duplicates ignored: 0
A round is a time budget
This is my suggested split. Do not spend all the time drawing boxes. Give the largest block to the hard part. End with failures and the release plan.
- Scope and constraints4 min
- Data and contracts10 min
- Client structure8 min
- Make the hard part work18 min
- Break it, ship it, roll it back5 min
Case studies
Fewer designs, and each one is explained in full.
- Design a chat appOutbox, safe retries (idempotent sends), and sync with WebSocket and push.Free
- Design a news feedPaging, optimistic writes (show a change first), and keeping the cache fresh.Free
- Design photo backup and file syncUploads that can resume, sync by blocks, and edit conflicts.Free
- Design a pagination libraryThe library API, generic types, and which requests go first.Free
- Design an image loading libraryMemory and disk caches, decoding, and cancelling requests.Free
- Design a hotel or ride booking appHolds, server time, payments, and search.Free
- Design a stock ticker appStreaming updates, limiting how often the screen changes, and an always-online app.Free
- Design a video streaming appLoading ahead (prefetch), adaptive bitrate, and playback state.Free
- Design an analytics SDKSending events in batches, saving them on the device, privacy, and versions.Free
- Design a push notification SDKHow push tokens change over time, delivery, and deep links.Free
- Design a travel plans appFriends edit a trip together, even offline, and no change is lost without a sign.Free
- Design a public transport appA timetable that works offline, live delays on top, and careful use of location and battery.Free teaser
- Design feature flags and remote configValues saved on the phone, a rollout that stays stable, and a kill switch that works when the flag service fails.Free
- Design a state machine for a mobile flowOne list of states and events for a checkout, and what the app does when it is killed mid-payment.Free
Guides
Guides that connect the case studies.
- Idempotency keys on mobile: how to retry without sending twiceOne ID for one action, sent with every retry, so a lost reply never charges or sends twice.Free
- Cursor versus offset paging on mobile: why page numbers breakWhy items repeat or vanish when a list changes while you scroll, and why a cursor fixes it.Free
- WorkManager vs BGTaskScheduler: what runs your background workAndroid keeps your job and runs it when the rules are true. iOS only gives you a chance to run.Free
- Caching and eviction on mobile: what to keep, when it expires, what to dropWhen a cached value is too old, and what to remove when the cache is full. LRU, TTL and the trade-offs, with a diagram.Free
- Staff-level mobile system design: what the round testsHow staff answers differ from senior answers, what interviewers can see, and a four-week practice plan.Free
- Offline-first mobile system design: one model, six case studiesThe official offline-first model (the app keeps working without a network) used for chat, feed, upload, booking, analytics and push.Free
- Native vs cross-platform: write the decision recordA staff-level decision record (ADR) for choosing a framework. It covers criteria, the assumption that would change the choice, migration, parity tests, libraries with no owner, rollback, and a free template.Free
Practise out loud
Reading is half of the work. You also need to say your design out loud, in 45 minutes, and hear what is weak. A mock interview with a friend is a good way to do this, and these pages are free.
- Mock interview scriptA 45-minute script for a round with a friend: the prompt, the time calls and six follow-up questions.Free
- Score sheetSix rows, scores 1 to 4. Your friend rates the round, and you see what to fix first.Free
- Practice timerA 45-minute clock with twelve prompts, for a round on your own.Free
- Interactive toolsChange one rule and watch retries, paging, offline sends and caches react.Free
Concepts
The ideas that repeat across the cases, one at a time.
- Design patternsOutbox, repository, observer and eight more, and which case uses each.
- Failure modesHow a mobile app fails, and where each case handles it.
- Compare design choicesPolling or push, cursor or offset, which scheduler.
- GlossaryPlain-language definitions of every term.
One design, and the failures that matter
Process death (the system ends your app), lost acknowledgements, duplicate pushes and clocks that differ. Each case study lists what breaks and how to fix it.
Android and iOS, side by side
The architecture is the same on both. I show where Room is replaced by SwiftData, and where WorkManager has no iOS equivalent.
What to say at each level
What a mid-level, senior and staff answer should cover, and follow-up questions to practise.
Get the free one-page cheat sheet
One page: the five steps, a 45-minute time plan and two checklists. Print it or keep it on your phone. Requests and corrections are welcome. Open an issue on GitHub.
We email you the cheat sheet after you confirm your address. You can also open it now from the Start here page. You get a short note when a new case is published. Unsubscribe any time. Privacy.