demo · v130

Ancestor rule probe

Chrome 130 allows concurrent smooth scrolls only on containers that are not ancestors or descendants of each other. Pick a topology, watch the diagram explain why, then run the live test and read the actual frame-timing telemetry.

topology

(no run yet)

the code

const a = document.querySelector("#scroller-a > .target");
const b = document.querySelector("#scroller-b > .target");

// Chrome 130+: if scroller-a and scroller-b are NOT ancestors/descendants
// of each other, both animations run concurrently — both finish smoothly.
a.scrollIntoView({ behavior: "smooth" });
b.scrollIntoView({ behavior: "smooth" });

// Pre-130 (and post-130 ancestor case): the second call cancels the first,
// snapping or chopping that animation.

see also