Streaming

Streaming is an AI UX pattern that reveals generated text token-by-token as the model produces it, instead of waiting for a finished response. It reduces perceived latency, proves the system is working, and lets users skim or stop early. Nearly every modern chat and coding assistant uses it.

Share

Interactive demo

Why does streaming feel faster?

Thinking…

Overview

The design problem

How might we make generation feel immediate without forcing people to wait for a finished answer?

Use this pattern

When replies take longer than a glance

  • Chat, coding, and writing tools where responses take seconds and blank waits feel broken.
  • Long-form answers where people skim early and may change direction mid-stream.
  • Any surface where time-to-first-token matters more than total generation time.
  • Products that need interruptibility: stop, edit, or retry before a full wrong answer finishes.

Avoid this pattern

When a complete unit is required

  • Tiny deterministic outputs (a single number or yes/no) where streaming adds noise.
  • Layouts that must paint as a complete unit (some charts or print-ready pages) until structure is known.
  • Accessibility contexts where rapid token updates overwhelm screen readers without a “complete” announcement.

States

Design the whole generation lifecycle, not only the blinking caret.

Streaming generation flow

Loading diagram…

  1. 01

    Waiting

    The request is in flight but no tokens yet. A thinking status proves work started without faking the answer.

  2. 02

    Streaming

    Tokens append in place. Layout stays stable; a caret or live cue marks the growing end.

  3. 03

    Interrupted

    Stop cancels further tokens. Partial text remains visible and usable.

  4. 04

    Complete

    Generation finished. The caret clears; copy, share, and follow-ups unlock on the final text.

  5. 05

    Failed

    The stream errored. Offer retry without losing the prompt or prior turns.

Key UX elements

The parts that must be present for streaming to feel fast and controllable.

First token

Prove work started quickly.

Show a thinking status before tokens arrive. Empty silence after send feels like failure.

Caret

Mark the live edge of the reply.

A subtle caret or pulse shows growth without competing with the words.

Stop

Let people cancel mid-answer.

A visible Stop control is table stakes when the direction is wrong before the end.

Layout

Keep the page from thrashing.

Stream into a stable block. Jumping scroll and reflow on every token breaks reading.

Partial

Treat early text as useful.

Allow skim, copy, and redirect before the full answer finishes when the draft is already clear.

Complete

Announce the end, not every token.

Clear the live cue and prefer a single “response ready” signal for assistive tech.

Anti-patterns to avoid

  • No stop or cancel control while tokens stream.

  • Layout thrash that jumps the page with every token.

  • Streaming fake progress while the model has not started.

  • Blocking copy/share until the full answer finishes when partial text is already useful.

How products use it

ProductImplementation
ChatGPTToken stream in the thread with stop generation during the run.
ClaudeStreaming replies with interrupt and retry on the same turn.
CursorStreams code and chat; apply/diff flows wait for stable hunks.
PerplexityStreams the answer while research steps and citations settle.

Implementation

Copy this prompt to generate a production-ready implementation in Cursor, Claude Code, Lovable, or any AI coding agent.

Generate a production-ready implementation of the "Streaming" AI interface design pattern.

Pattern Definition:

Frequently asked questions

What is streaming in AI chat UX?

Streaming shows the model’s output as it is generated, usually token by token, so users see progress immediately instead of staring at a blank wait state until the full answer arrives.

Does streaming make the model faster?

Streaming mainly improves perceived performance. Time to first token feels faster even when total generation time is unchanged. Real speed still depends on model and infrastructure.

Should users be able to stop a stream?

Yes. A visible Stop control is table stakes. Users often know mid-answer that the direction is wrong and should not wait for a full wrong completion.

How should streaming work with screen readers?

Avoid announcing every token. Prefer polite live regions for start/complete, or a “response ready” cue, so assistive tech is not flooded during generation.

Weekly AI UX in your inbox

Weekly AI interface UX notes and resources on Substack, no spam, unsubscribe anytime.

Subscribe on Substack