Streaming text

The reveal for text that arrives in pieces

An LLM response typing itself out, extracted into a primitive. It inherits the surrounding typography, animates only through appended text, and keeps a cursor blinking while more is coming. Under reduced motion the typing is skipped and each chunk appears whole.

A simulated stream

Chunks of a few words land every 400ms; the reveal types through each one and the cursor holds between them.

Catching up

The same response delivered three times faster. The reveal widens its steps as the backlog grows, so it stays close behind the stream instead of falling seconds behind it.

Finished text

Text present on mount renders whole, and with streaming off there is no cursor: a settled message costs nothing. Announcement stays the container's job, so pair the component with an aria-live region when the surrounding UI does not already announce the message.

A finished message renders whole, with no cursor and no timers running.