Latency UX: Streaming, Progress, and Perceived Speed
Make slow models feel fast: streaming, skeletons, staged results, optimistic UI, and honest progress for tasks that take minutes.
AI features are slow by the standards of ordinary software. A database query comes back in milliseconds; a drafted reply can take several seconds, a thinking model may pause before writing anything, and a bulk job over a thousand tickets can run for many minutes. You can and should make the work itself faster, but there's a floor, and on the way to that floor your users are staring at the screen.
What they experience isn't the duration. It's the wait: whether something is visibly happening, whether they know how long it will take, whether they can do something else meanwhile, and whether they can stop it. This lesson covers the interface side of speed for Deskmate: when streaming helps and when it doesn't, staged results that show something useful in about a second, pre-computation that removes the wait entirely, honest progress for long jobs, and cancellation that keeps partial work.
Where the wait comes from, and how it feels
A single AI request has several phases, and they feel different to a user:
| Phase | What's happening | What the user sees by default |
|---|---|---|
| Before the call | Your code loads data, retrieves documents, assembles the prompt | Nothing |
| Time to first token | The provider queues, processes the prompt, and (for thinking models) reasons | Nothing |
| Generation | Output tokens arrive one after another | Nothing, unless you stream |
| After the call | Parsing, validation, saving, follow-up calls | Nothing |
"Nothing" is the problem. The classic response-time guidance popularized by Jakob Nielsen still holds up well as a rule of thumb: around a tenth of a second feels instant, around a second keeps the user's flow of thought, and around ten seconds is roughly where attention breaks and people start doing something else. Many AI requests land between one and ten seconds, which is exactly the range where what you show matters most.
Measuring each phase is the job of Cutting Latency: Time to First Token and Beyond, and the effort and model choices that shorten them are covered there and in Reasoning Models: When Thinking Is Worth Paying For. This lesson is about what to put on the screen while the remaining time passes.