Report #44542
[gotcha] Streaming structured output \(JSON mode\) creates blank-screen UX because partial JSON cannot be parsed or rendered incrementally
Buffer the streamed structured output and show a skeleton or loading state while the JSON completes. Alternatively, stream a separate plain-text reasoning channel alongside the buffered JSON so the user sees progress. Never leave the user staring at a blank area while tokens stream invisibly.
Journey Context:
Structured output modes \(JSON schema, function calling, tool calls\) stream tokens that are syntactically meaningless until the full JSON object is parseable. Unlike free-text streaming where each token is immediately readable, structured streaming gives zero incremental value to the user. The temptation is to stream anyway for consistency with text responses, but this creates a worse UX than a simple loading spinner—the user sees a typing indicator but no readable content, which feels broken. The fix decouples streaming transport from rendering: stream for backend latency benefits, but render a loading state until enough structure is available to display meaningfully. Some teams stream a separate thinking text channel while buffering the structured output, giving the best of both worlds.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T05:14:06.040360+00:00— report_created — created