A new window cuts the back chain
Aliases: blank target breaks back · tab splits history · back chain cut
What it is
If a click opens in a new window or tab, the original page’s history stack does not grow this hop. The new context starts with a nearly empty stack. Back then fires in the new window—often with nothing to pop, or with an unrelated site—while the original window still sits on the departure page. A new window cuts the back chain: temporal undo is split in two, and neither half contains the other.
Why it happens
Browsers store history on a browsing context, not on “the click stream the user thinks they are in.” target="_blank" or window.open creates a new context; the forward move is written on the new stack; the departure page’s stack stays put. The user’s model is one chain: go in, read, come back. The implementation forked. If the new tab is off-screen or stacked underneath on mobile, the fork is invisible; what is visible is “Back does nothing” or “the form is still here, but I cannot get back to the page I just read.”
Mobile Safari and most in-app WebViews make extra windows even less visible, so the cut feels like loss. A screen-reader virtual cursor stays in the original document; content in the new window needs a separate focus move to reach, while a Back gesture may close the new context and leave the cursor with no reading position. Nielsen’s early case against casual new windows rests on this: the product unilaterally shears the chain while the user still operates the undo model.
Studying it
From a document being read, have people open a citation. Compare in-place open with a new tab. The task is “finish the citation and return to the paragraph you were in.”
- Independent variables: opening mode (current context / new tab / new window backgrounded by the OS), device (desktop tabs visible vs phone).
- Dependent variables: whether Back restores the departure paragraph, wrong-window searches, time, how often “Back did nothing” is described as a broken system.
- Methodological note: large lab monitors put two tabs side by side and visually compensate for the cut, underestimating harm. A phone, or a new tab on another desktop, exposes the broken chain. Do not fold “closed the wrong window” and “the chain broke” into one score—the first is window management, the second is the history model.
Where it stops holding
Middle-click or long-press “open in new tab” is a deliberate fork; the cut is chosen, and the product should not rewrite it in-place. Downloads, print preview, and OAuth popups were never “the next page,” so the back chain should not include them. An SPA that fakes a new window with routing (still the same history) has not cut the chain; that is a fake new window and this leaf does not apply.
Applying it
- By default, open the next in-site page in the current browsing context so Back can pop the hop.
- Inventory every
target="_blank"and ask what is gained by cutting this back chain. If the answer is empty, open in place. - When a new context is required, do not tear down the user’s place on the original page. If
history.lengthis 1 in the new context, do not draw a button that callsback(). - Verify: from mid-article, open a citation, then allow only system Back. In-place open should return to mid-article; a new tab cannot use Back to reach that paragraph. If the latter is the default, the chain is already cut. Repeat on a phone to confirm return does not depend on a desktop tab strip.