demo · v138
Anchor pagination
A horizontal scroll gallery driven by plain <a href="#x"> tags. scroll-target-group: auto on the link container promotes every anchor to a scroll marker. The browser tracks which target is current and the matching link gets :target-current automatically — no IntersectionObserver, no scroll listener, no JS.
scroll-target-group: auto on a container makes its descendant <a> elements behave like ::scroll-marker pseudos — including the auto-tracked :target-current selector — without giving up real anchor semantics (focus, keyboard, accessible name).
Overview
Chrome 138 ships the first batch of built-in AI APIs, a deeper speculation pipeline, and a handful of CSS-engine missing primitives.
Speculation
Mobile moderate eagerness now fires on pointerdown/touchstart. Sec-Purpose header is sent. Service workers can intercept speculative prefetches.
Clear-Site-Data
Two new tokens — prefetchCache and prerenderCache — make logout responses surgical instead of blunt.
Cache sharing
An allowlist of pervasive resources can share cache across origins — fewer redundant downloads with strong correctness guarantees.
AI APIs
Summarizer, Translator, Language Detector — all on-device, all out of origin trial.
HTML in canvas
Layer rasterised DOM into a 2D canvas, with text and accessible names preserved.
Removals
Async range removal from MSE deprecated; GPUAdapter.isFallbackAdapter removed.
The CSS
nav.pager {
scroll-target-group: auto; /* every <a href="#x"> descendant becomes a scroll marker */
}
nav.pager a:target-current { /* engine sets this on the marker pointing at the
current-most snap point of the scroller */
background: black;
color: white;
}
What's happening
- Without
scroll-target-group, anchors are just anchors — clicking scrolls to the target, but the browser doesn't track which target is "current" as the user scrolls. - With
scroll-target-group: auto, the container forms a scroll marker group. Each descendant anchor is paired with its target, and exactly one anchor matches:target-currentat any moment. - The pairing rule is the same as
::scroll-marker: the marker for whichever target is most visible in the nearest scroller. - Unlike
::scroll-marker, real<a>elements keep their accessible name, focusability, and keyboard semantics. AT users can tab through them and they hear "Overview, link" — not a CSS pseudo. - This was the missing primitive for any pattern where you need both navigation and visible "you are here" state — pagination, breadcrumbs, vertical ToC.