v142 · user input

Sticky user activation across same-origin renderer-initiated navigations

This feature preserves the sticky user activation state after a page navigates to another same-origin page. The lack of user activation in the post-navigation page prevents some use cases like showing virtual keyboards on auto-focus, and this has been a blocker for the developers who want to build Multi-page Applications (MPAs) over Single-page Applications

concepts

  1. Sticky Activation

    Click to grant activation, try a gated API, simulate a navigation — side-by-side trace of Chrome 141 vs 142 behaviour with live userActivation readouts.

  2. Post-Nav Popups, Audio, Payment

    The three APIs the MPA-over-SPA migration story actually depended on: window.open, AudioContext.resume(), PaymentRequest.show(). Real attempts plus the live UserActivation probe.

  3. Multi-Step MPA Wizard

    A four-step checkout simulating cart → details → review → pay. Click once on step 1, walk the same-origin navigation chain, and try gated APIs at each step. Live navigator.userActivation probe shows the difference between Chrome ≤141 (drops at first nav) and Chrome 142 (carries through).

  4. Activation State Debugger

    A timeline view that records navigator.userActivation.isActive and hasBeenActive before and after simulated same-origin navigations. Click to seed activation, trigger navigations, and watch the sticky state carry across hops — or see it reset on cross-origin jumps. Color-coded pass/fail badges for six gated APIs.

why it shipped

This feature preserves the sticky user activation state after a page navigates to another same-origin page. The lack of user activation in the post-navigation page prevents some use cases like showing virtual keyboards on auto-focus, and this has been a blocker for the developers who want to build Multi-page Applications (MPAs) over Single-page Applications

references