browser features
Chrome 153 puts scroll-axis-lock on the CSS watch list
Chrome 153 documents scroll-axis-lock and single-axis scroll containers for experimental channels, giving UI teams a clearer way to reason about nested scrolling.
Published 2026-09-26
Chrome 153 puts scroll-axis-lock on the CSS watch list
Chrome 153 reached the stable channel on September 8, 2026, but one of its most interesting CSS changes is not ready for everyday production use yet. The release notes document scroll-axis-lock and single-axis scroll containers as features available in Beta, Dev, and Canary channels rather than in stable Chrome. That distinction matters: the syntax is worth learning and experimenting with, but a production interface still needs a fallback that behaves well without either feature.
The proposal addresses a familiar problem in touch interfaces and nested scrollers. Browsers commonly lock a gesture to one axis when the first movement is much stronger horizontally or vertically than the movement on the other axis. That default is helpful for most lists, because it prevents a slightly diagonal finger movement from sending a page sideways. It becomes less helpful for intentionally diagonal surfaces, canvas-like controls, or interfaces where horizontal and vertical movement are both part of the interaction.
What scroll-axis-lock is trying to control
The scroll-axis-lock property gives authors a way to tell the browser not to constrain a user’s scrolling gesture to a single axis. In practical terms, it is a control over gesture behavior, not a replacement for overflow, scroll snapping, or pointer-event handling. It should therefore be treated as a focused enhancement for a component that already has a clear scrolling model. Adding it to every overflow container would make intent harder to understand and could create an interaction that feels slippery on touch screens.
The CSS Working Group change behind the feature was merged into the CSS Overflow work in August 2026. That is useful evidence of standards progress, but a merged specification change is not the same thing as broad browser interoperability. Chrome’s own release notes are explicit that the related CSS entries are available in non-stable channels. Check current compatibility data before relying on the property, and keep the stable behavior as the default path for users who do not have the experiment.
Why single-axis scroll containers matter
The companion change extends overflow values so an axis can remain scrollable while the other is clipped, such as overflow: scroll clip. This gives a component more precise control over which ancestor scrolls horizontally and which ancestor keeps an axis fixed. It is particularly relevant to sticky headers, horizontally scrollable data regions, and nested layouts where a broad overflow: auto declaration accidentally creates a second scrolling surface.
That precision can improve layout reasoning. A table wrapper can keep horizontal movement local while the page continues to scroll vertically. A sticky navigation region can be constrained by the scroll container that actually owns its axis. The important design step is to name the ownership clearly: decide which element scrolls on each axis, then use overflow values that express that decision. Do not add a second wrapper simply because a browser default is difficult to diagnose.
A safe way to experiment today
Start with a normal fallback. Give the component a usable overflow declaration, make the scroll region keyboard reachable when it contains content that cannot be reached otherwise, and test it with a mouse, trackpad, and touch input. Then place experimental declarations behind a supports query so unsupported browsers keep the fallback. A small prototype is enough to learn whether the new behavior actually improves the interaction before it becomes part of a design system.
For example, an experimental rule could be scoped to a named gallery rather than applied globally: .gallery { overflow: auto; } followed by a feature-gated rule for the new scroll behavior. Keep the example intentionally narrow, document the channel requirement, and avoid promising that the property works in stable browsers. If the prototype depends on diagonal movement, add a visible affordance or short instruction so the interaction is discoverable instead of relying on an invisible gesture rule.
What to do next
For production work, the immediate action is mostly architectural: audit nested overflow containers and decide which axis each one owns. Chrome 153’s notes make the upcoming controls easier to track, while the non-stable availability is a reminder to separate experiments from the baseline experience. Keep the fallback simple, isolate the feature behind capability checks, and revisit the implementation as other browser engines publish their standards positions.
The practical takeaway is not to rush a new property into a component library. Use the feature to explore a real interaction problem, measure whether it removes a wrapper or fixes an accidental scroll path, and preserve a clear path for browsers that do not support it. That approach lets teams learn from the proposal now without turning an early implementation into an interoperability requirement.