Leaving and returning must be supported
Aliases: leaveable wait · backgroundable wait · resumable wait
What it is
If attention will leave after ten seconds, the interface has to make that leaving legal, and make return attachable. Leave-and-return means three things at once: the wait does not kidnap the foreground, work continues while gone, and state is recognisable on the way back. Miss any one and leaving becomes loss — the job cancelled, progress reset, or a blank on return with no way to know whether one had already gone.
This leaf is the corridor during the wait, not how to shout when it finishes. Shouting is the next card.
Why it happens
Task switching has an outbound cost and an inbound one. Outbound cost is in the UI: a modal in the way, gestures eaten by the progress bar, leaving treated as cancel. Inbound cost is in memory: after ten seconds to a few minutes the goal in working memory has faded, and people need external cues — which batch is still running, which stage, whether it can continue. If leaving destroys the scene, the rational strategy is to stay and burn time, and the attention ceiling has been designed out of existence.
Return also needs identity continuity: the same task object before and after, not a freshly opened, lookalike progress. People judge “this is still that job” by object continuity, not by a percentage.
Where it stops holding
Safety operations that must be watched (confirming a transfer, entering a code) cannot be leaveable — leaving opens an error window. Those tasks should be shortened, not fake-backgrounded. Scenes where the foreground is forcibly occupied (a restarting system update, a payment handshake with a bank) may lock briefly, but the lock needs an explicit bound and a way out on failure. Multi-window desktops support leaving more naturally; a single-window phone has to make “leave” mean home or app-switch without cancel, not assume a second screen.
Applying it
- Do not use an uncloseable full-screen modal for a long wait. Allow return to a list, home, or another app, with the job moved into a queryable in-progress state.
- Leaving does not cancel. Closing the panel is not killing the task. Cancel is a separate, confirmed action.
- On return, land on the same task object: filename, scope and current stage still visible, not a generic “Processing”.
- How to check: start an export longer than 20 s, switch apps immediately, switch back. The job, the progress and the object name should all still be there. A blank home or a requirement to click Export again means the corridor was never built.