Apollo cache was my live game bus
I didn't build a separate client-side event layer for Intelli Casino. The GraphQL subscription payloads wrote straight into Apollo cache, and that turned out to be enough to drive the whole live UI.

I didn't build a separate client-side event layer for Intelli Casino. The GraphQL subscription payloads wrote straight into Apollo cache, and that turned out to be enough to drive the whole live UI.
For a game that could eventually involve real money, hiding future questions can't be a frontend courtesy. It has to be enforced in the GraphQL payload itself.
The interesting part of a live quiz game isn't rendering questions. It's keeping every client on the same clock while still letting the player move fast and the server stay authoritative.
The main reason for the split was simple: I wanted realtime subscriptions, and Vercel wasn't the place to run long-lived WebSocket connections. Once that constraint was clear, the architecture got clearer too.