Scenario 3 of 6
Slow response
Twelve seconds. The interface escalates instead of spinning forever.
Expected behaviour
Skeletons at 300ms, a “taking longer than usual” message at 3 seconds, and a Cancel option at 8 seconds.
Why it behaves this way
An unchanged spinner gives no information after a few seconds. Escalating the message tells people the system is still working and lets them decide to stop waiting.
- “Slow” is not a separate state. It is the same request observed later, so model it as time elapsed rather than as a status.
- Escalate in steps: acknowledge the delay, then offer a way out.
- Cancelling must leave the interface in a clear, recoverable state with a way to try again.
Accessibility
Each escalation is announced once. Cancel is a real button that receives focus only when you move to it; the interface never moves focus on its own while you wait.
Mistakes this scenario exposes
- Infinite spinners with no message and no way out.
- Cancelling a request but still rendering its response when it arrives late.