The loading state that lies
A spinner tells the user nothing and a fake progress bar tells them something untrue. Show the work instead.
Streamed text is its own progress indicator, which is most of why streaming won. For anything that cannot stream, a retrieval step, a tool call, a multi-stage pipeline, the honest move is to name the stage rather than animate a lie. Users tolerate slowness they can understand far better than fast operations they cannot see.
Streaming is not always the right answer. If the output is a structured object the interface has to parse, or a piece of code that is nonsense until complete, showing it accrete character by character is theatre that makes the wait feel longer. Stream prose; wait and present structure.
You should now be able to
- Communicate progress for an operation of unknown length
- Decide when to stream and when to wait and present
Loading…