This checks whether you can build a production streaming UI state machine: append partial output safely, preserve final message correctness, support cancellation, and recover from mid-stream failures.
How should a front-end handle streaming data from an AI model?
The Core Idea
Treat AI streaming as a production UI state machine, not just a transport detail. You open a stream (SSE, WebSocket, or fetch + ReadableStream), append partial output as chunks arrive, keep partial and final message state consistent, and stop cleanly when the user cancels or the stream fails.
Step | What happens | Why it matters |
|---|---|---|
Open stream | Connect via SSE/WebSocket or fetch stream | Start receiving tokens immediately |
Append chunks | Update UI incrementally as data arrives | Low latency UX |
Handle errors | Show retry/state on disconnect | Resilience on flaky networks |
Cancel/stop | AbortController or close socket | User can stop generation |
const controller = new AbortController();
const res = await fetch('/api/stream', { signal: controller.signal });
const reader = res.body.getReader();
const decoder = new TextDecoder();
let text = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
text += decoder.decode(value, { stream: true });
render(text); // append to UI
}
// controller.abort() to cancel
Production scenario
Suppose a chat answer streams for 20 seconds and the user switches prompts halfway through. If you do not model streaming, completed, cancelled, and failed states explicitly, you can show mixed output, mark a partial answer as final, or append late tokens into the wrong conversation. Good implementations treat partial text, final text, retry UI, and cancellation as separate states.
Open a stream, append chunks to the UI, and handle cancel + errors gracefully. The UX should feel responsive even before the full response finishes, but the real production requirement is keeping partial and final output correct.
Use the relevant interview-question hub first, then move into a concrete study plan before targeted company sets.