Interrupted motion still needs a coherent mid-state
Aliases: cancel mid-state · leftover translucency · layout after cancel
What it is
If a cancel leaves the page half-transparent, two layers stacked, or buttons untappable, interrupting is worse than playing out, because the mid-state has no interface contract. Interruptible is not only “input can enter”; the cancel landing has to be a legal state: jump to the end or roll back to the start. An interpolation frame must not be left behind as a product state.
Why it happens
In-between frames are for rendering, not for the domain model. At 40% interpolated, the route may already be B while pixels sit between A and B and neither side has a complete hit map. If cancel is only stop() with no commit or rollback, the user faces a third page that was never designed: mask present, content incomplete, back stack disagreeing with what is seen.
There are usually only two honest landings. Accept the navigation: snap (or a very short fade) to B’s complete layout. Reject it: restore A’s complete layout and tear down B’s half-built layer. A back gesture that scrubs the in-betweens with the finger is legal because on release it must attract to A or B, never rest at 40%.
Where it stops holding
- A shared element cancelled at 40% may briefly have both surfaces unusable; restore the source list item before tearing down detail, or a hole flashes.
- Under reduced motion there are fewer in-between frames, so landing is lighter, but a cut cancel still has to keep stack and focus truthful.
- Performative motion in a game may stop on any frame; that is a content timeline, not an interface state machine.
Applying it
- For every interruptible transition, define commit versus rollback on cancel: past a release threshold, go to the end state; otherwise return to the start.
- Do not write the current interpolated opacity or translation into persistent layout.
- Check: cancel at 30%, 50% and 80%, then inspect back stack, focus and hit targets. Double-tappable layers or nothing tappable means the mid-state has no contract.
Related
- Same group: F7.11.1 The next action must not wait for unfinished motion · F7.11.3 Rapid triggers should coalesce or skip, not queue · F7.11.4 Forced motion feels slow in high-frequency use
- Nearby: G4.01 Back stack and back semantics · F7.04.3 When a shared element cannot map, fall back to an ordinary transition
- Search terms:
animation cancel·interactive pop·settled state