Retry must stay cancellable
Aliases: cancel retry · abort retry · stop retrying
What it is
Once an automatic or manual retry starts, the interface must not lock someone in a spinner until the count is exhausted. Cancellable means they can still stop waiting, change a parameter, leave, or switch to a query while retry is in flight. Cancel is not undo of a side effect that already happened. It stops the next attempt that has not been sent, and it stops the UI from being occupied. This entry is not about the cap, and not about whether auto-retry should exist.
Why it happens
Retry takes time away from the person. In that interval they may have noticed a wrong parameter, that the network needs another path, or that they no longer want to try. Without cancel, attention is filled by progress, and the wrong input is submitted again on the next attempt. Cancel returns control between intervals: stop the timer, do not send the next request, return the surface to editable or leavable. For a request already in flight, cancel must at least stop the UI from waiting on it, and must not kick off another round when the response later arrives.
Where it stops holding
On payments in “state unknown,” canceling the wait must not be read as “the charge was canceled.” The surface has to say: stopping retry ≠ undoing a side effect; the next step is query. A lower-level call that cannot be aborted should still let people leave the page rather than trap them in a modal. For accessibility, cancel must be a focusable control, not “tap outside the spinner.”
Applying it
- Keep cancel or close on the retry surface; after it is pressed, schedule no further request and unlock the form.
- Copy must distinguish “stop retrying” from “undo what already happened”; if the latter cannot be done, do not write undo.
- If a response arrives after cancel, update silent state or prompt a query; do not start a new round automatically.
- Verify by starting a retry and canceling immediately: later requests must not fire, and the form must be editable. If requests continue or the lock remains, cancel is décor.