fw-08 — Broader Ideas

Cancellation is a system-wide property

"Only the most recent navigation may commit" generalises to: only the most recent search should render, only the most recent autocomplete request should populate, only the most recent tab switch should load.

The three fixes and their limits — guard, sequence number, abort — are the same everywhere, and the question that exposes the limit is always the same: what if the request had a server side effect? Then the answer moves from the client to idempotency keys or to a different API design.

That escalation, from code fix to architectural fix, is the Principal-level move.

Platform constraints you should recognise as deliberate

Back cannot be cancelled; the history stack cannot be read; popstate does not report direction. These are user-protective decisions, not oversights. Recognising the difference between "the platform is missing a feature" and "the platform is refusing on the user's behalf" saves a great deal of wasted argument — and points you at the sanctioned alternative (the Navigation API) rather than a hack.

The anchoring problem, three times

Router scroll restoration, virtualized lists (fw-10), and the browser's own scroll anchoring (bi-08) are one problem: you cannot restore a position in a document whose size you do not yet know.

Any UI that restores state into asynchronously-sized content has it — infinite scroll, chat histories, lazy images. The solution shape is always: reserve space, or restore after size is known.

Next

fw-09 takes the same race-condition discipline to server state, where the stakes include writes.