10 / 20AI, realtime & offline
Multiplayer Cursors
Realtime presence and a shared canvas. Open it in two tabs and they sync.
- Realtime sync
- BroadcastChannel
- CRDT basics
- Presence
- Optimistic UI
stirling.lab/multiplayer Live demo
Loading demo…
What to notice
- Live cursors with names and smooth interpolation across browser tabs
- Shared sticky notes with conflict-free, per-field last-writer-wins merging
- Presence list, typing indicators and selection highlights
- Simulated latency and packet-loss controls to show resilience
How it's built
- Uses BroadcastChannel as the transport. The same message protocol would work over WebSockets.
- Each field is an LWW register keyed by a Lamport timestamp plus client id, so merges are commutative.
Hand-built in React 19 + TypeScript, with no UI or chart libraries.