v157 · css · scroll snap · compatibility

clip vs hidden migration

The behaviour change rides entirely on the difference between overflow: hidden and overflow: clip. hidden is still a two-axis scroll container (you can scroll it from script), so it keeps trapping snap areas — by design, forever. clip is a pure clip, and once single-axis containers are active it propagates the unscrollable axis instead. If you were relying on the trap, the migration is one keyword: hidden, or a per-axis scroll-snap-align: … none.

Probing this browser…

Computed-value inspector

Each row declares an overflow pair on a fresh element and reads back getComputedStyle(). Pre-single-axis engines coerce a scrollable value paired with clip into hidden — the exact coercion this feature family removes.

Declared overflow pairs and their computed values in this browser
declaredcomputed overflow-xcomputed overflow-yverdict

Side-by-side trap test

Identical rigs: an outer y mandatory scroller around a horizontal lane whose cards declare scroll-snap-align: start. Left lane uses overflow-y: clip, right lane overflow-y: hidden. The measured check nudges each outer scroller 37px past the lane and reports whether it re-snaps to the cards’ edge.

overflow-x: auto; overflow-y: clip

filler — no snap area
c1
c2
c3
c4
tail

overflow-x: auto; overflow-y: hidden

filler — no snap area
tail
Not measured yet.

the migration in one block

/* You had this, and relied on the cards NOT snapping the outer feed: */
.lane { overflow-x: auto; overflow-y: clip; }
.card { scroll-snap-align: start; }

/* After Chrome 157, pick ONE: */
.lane { overflow-y: hidden; }            /* stay a 2D container — traps forever */
.card { scroll-snap-align: start none; } /* keep clip, opt the y axis out       */

The explainer calls the trapped configuration “generally not quite correct to begin with” — an alignment declared on an axis the lane cannot scroll was almost never intentional. The opt-out syntax already parses today (), so you can ship it ahead of the behaviour change.

see also