AI response streaming and the 15-second spinner
Waiting on a full JSON payload from an LLM leaves users on a spinner for 15 seconds. Streaming with server-sent events, the ReadableStream code that consumes it, and when validation means you should not stream at all.