38. Design a Chat App (WhatsApp)
1
The interview prompt2
38.1 What do you ask first?3
38.2 How big is this, really?4
38.3 What are the doors?5
38.4 What do we store?6
38.5 What does the whole system look like?7
38.6 How does the WebSocket gateway work?8
38.7 How do message IDs and ordering work?9
38.8 How do delivery and read ticks work?10
38.9 How does offline delivery work?11
38.10 How does group chat work?12
38.11 How does media work?13
38.12 What would you say in the last five minutes?14
Score yourself15
Variations to practise16
Sources17
Code lab38. Design a Chat App (WhatsApp)
38.9 How does offline delivery work?
3 min read+10 XP
Phones go offline constantly: tunnels, flights, flat batteries.
Figure: a cursor per device per chat makes catching up exact.
- Every message is stored before delivery, so nothing depends on the recipient being online.
- Each device keeps a cursor per chat: the last seq it has. On reconnect, it asks for everything after its cursor (in practice, one call for "all chats with something new").
- In the chapter's code, Ravi's laptop goes offline after seq 2, misses 3, 4, 5, syncs them in order, acks "up to 5", and a second sync returns nothing.
- While offline, a push notification (APNs/FCM) nudges the app; with end-to-end encryption, the push usually says only "new message", and the app fetches and decrypts it.
- The server deletes a message once all member devices are past it (plus a safety window), if the product chooses "store until delivered".
Memory code: "Store first, nudge the sleeper, sync from the cursor."