How Apollo stays in sync
A hundred students, one slide, zero lag. A short tour of the realtime layer — and a figure you can poke at.
By The Apollo team · July 6, 2026
How Apollo stays in sync
The single most important feeling in Apollo is that when the teacher advances a slide, it advances everywhere, at once, with no perceptible delay. Get that wrong and the whole illusion of a shared room collapses. Get it right and nobody notices it at all — which is the goal.
Two kinds of state
The trick that makes this tractable is refusing to store everything the same way. We split state cleanly in two:
| Kind | Lives in | Examples |
|---|---|---|
| Durable | Postgres | presentations, slides, quiz responses |
| Live | PartyKit | current slide, quiz open/close, presence |
Durable state is the record: it has to survive the session and be queryable afterwards. Live state is the now: the current slide index, who is in the room, which reactions are flying across the screen. It only has to be fast, and it only has to be correct for as long as the lecture lasts.
The live room is authoritative. A student's screen does not decide what slide it is on — it asks the room, and the room tells everyone the same answer.
Why late joiners just work
Because the room holds the current state as a snapshot, a student who joins ten minutes late does not replay ten minutes of events. They ask the room for its current snapshot and land exactly where everyone else is, instantly.
Latency is a feeling, not a number
You can measure a slide flip in milliseconds, but what matters is whether it feels instant. Below is the mental model we keep in our heads: a small delay is invisible, and then somewhere past a threshold it becomes a stutter that breaks the room's shared attention. Drag the slider and watch where "instant" turns into "laggy".
That is why the realtime layer gets a disproportionate share of our attention. Almost everything else in Apollo can be a little slow. This one thing cannot.
The short version
- Split durable state from live state; do not let them bleed together.
- Make the live room authoritative and snapshot-based so late joiners are free.
- Treat latency as a felt experience, and defend the slide flip above all else.
Next time: what we learned watching a hundred real students hit one room at once.