I1.06.3user-initiated abandon waitdesign

The user can abandon the wait

Aliases: give up waiting · cancel the request · leave the spinner

What it is

The system has a timeout clock. The user still needs their own: abandon the wait. Deciding not to wait further must not require surviving until the product timeout, or killing the process. Abandon is a first-class action on wait state, alongside “keep waiting”. Without it, timeout policy protects the server and withholds control from the person staring at the spinner.

This leaf is the exit for “I do not want to wait now”. Whether cancel truly kills server-side work belongs with cancel-during-wait. Here the exit has to exist, and it has to leave the wait.

Why it happens

Waiting binds people to a road they cannot pace. Once the attention ceiling hits, they escape with system-level moves: home, swipe away the app, close the tab. Those escapes have heavy side effects — they may tear the session, and they may not notify the request. In-product abandon downgrades the escape to a legal state transition: stop monitoring, restore an operable UI, let the person do the next thing they already want to do.

Abandon also repairs a power asymmetry. The timeout instant is chosen by the system; patience, a distraction in the room, noticing a wrong tap, all happen before that clock. Offering only a system timeout is admitting only one reason to stop waiting.

Where it stops holding

An uninterruptible safety handshake (the few seconds of a payment with a bank) may omit abandon briefly, but it must be short and announced up front. If abandon only closes the UI while the request still mutates data, the exit is false — people think nothing happened, the server did it. That false exit is more dangerous than none: either make cancel real, or write “progress is no longer shown; the job may still be running; check the task list”. Modal progress that hides abandon behind the system back key has not offered it.

Applying it

  • Any wait past the continuity threshold that the user is still watching gets a visible abandon (cancel, close, back). Do not make an OS gesture the only exit.
  • After abandon, leave wait state immediately. The main UI is operable. Do not turn cancel into “Cancelling…” for several extra seconds.
  • If the server cannot be guaranteed to stop, copy after abandon must admit the job may still be running, and say where to look.
  • How to check: start a slow request, tap cancel. The operable UI must return at once. Also try system back and tapping outside a scrim. All three should leave the wait, not one hidden path.

Related

  • Same group: I1.06.1 Timeout duration must be set per operation type · I1.06.2 After timeout, state must be explicit, not left waiting
  • Nearby: I2.06 Cancel during wait · I1.03 Attention-holding ceiling
  • Search terms: abandon wait · cancel request · user-initiated timeout

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/I1.06.3