from a Web author perspective, it's quite common that we *attempt* to lock scrolling on the document's scrolling element when certain side-panels or overlays are rendered.
With this proposal, instead of managing overflow on scrolling elements with javascript at application level, the side-panel or overlay can -at local level- specify the desired scroll chaining behavior with a 1 line of CSS and without needing to know if content can scroll or not. Definitely a great improvement. On Wednesday, September 17, 2025 at 9:41:11 AM UTC-7 Mike Taylor wrote: > LGTM3 > On 9/17/25 11:36 a.m., Daniel Bratell wrote: > > LGTM2 for the plan Philip outlined below. > > /Daniel > On 2025-09-17 17:28, Philip Jägenstedt wrote: > > We discussed this at the API owners meeting today. (Present: Daniel, Yoav, > Alex, Chris, Mike, Dan, Vlad, me.) > > LGTM1 > > Based on the use counter (8%) and the number of sites checked (10) we > don't have high confidence that this won't break something. However, we > also don't have a concrete way to further reduce the uncertainty beyond > manually checking hundreds of sites and making a judgment call about > whether each is improved or not, which does not feel reasonable. > > Instead, to shake out as much breakage as we can, we'd like to let this > bake at 100% on beta for ~4 weeks (one extra milestone) and monitor for > bugs. If there's nothing concerning, then launch at 100% on stable, while > being prepared to revert if there are reports at that point. > > If you could report back here before going to stable that would be great, > but no further approvals needed if things are looking good. > > On Wed, Sep 17, 2025 at 5:11 PM Alex Russell <sligh...@chromium.org> > wrote: > >> Thanks. I'm pinging people. Hopefully folks can weigh in here quickly. >> >> On Tuesday, September 16, 2025 at 7:11:54 AM UTC-7 Robert Flack wrote: >> >>> I completely agree, the point here isn't to follow the spec. The reason >>> I think we should follow the spec in this case is that it is more ergonomic >>> and predictable when applying overscroll-behavior doesn't just work >>> sometimes. I think that developers are rightfully confused by those cases >>> where it doesn't work which is why we have had several bugs filed about it. >>> >>> I have reached out to a few web developers. If you know anyone who might >>> have thoughts on this please loop them in as well. >>> >>> On Mon, Sep 15, 2025 at 2:00 PM Alex Russell <sligh...@chromium.org> >>> wrote: >>> >>>> I'd love for web developers who have been paying close attention to >>>> scroll behaviour to weigh in here. This has been a deep well of sadness in >>>> a cross-browser sense, and they might have opinions as to the benefits and >>>> costs we aren't able to easily see. Spec compliance can either be great or >>>> pointless, and it would be helpful to get a sense from folks building >>>> complex UIs which this is. >>>> >>>> Best, >>>> >>>> Alex >>>> >>>> On Friday, September 12, 2025 at 10:53:50 AM UTC-7 Robert Flack wrote: >>>> >>>>> > is there any plausible pattern where web developers could depend on >>>>> the current behavior intentionally? >>>>> >>>>> The change in behavior comes in roughly three patterns: >>>>> >>>>> 1. overscroll-behavior: contain | none is specified on an element >>>>> with overflow: hidden. In these cases the overscroll-behavior used >>>>> to have no effect, scrolls would propagate past the element to >>>>> ancestor >>>>> scrollers. In practice, when a developer has specified this they >>>>> likely >>>>> intended to prevent scroll propagation, however due to the >>>>> implementation >>>>> it had no effect. Authors typically try to do this to prevent >>>>> scrolling >>>>> while a modal dialog is open from scrolling the content behind it, >>>>> e.g. as >>>>> in the example posted to the bug >>>>> <https://issues.chromium.org/issues/41371072> >>>>> https://codepen.io/rctneil/pen/rJYONj. >>>>> 2. The author specified overscroll-behavior: contain | none but on >>>>> an element with overflow-y: scroll | auto (but implicit >>>>> overflow-x: hidden). In this case, they may have accidentally applied >>>>> overscroll-behavior to both axes and not realized that by spec this >>>>> prevents overscroll propagation in both axes. I observed this on >>>>> https://lichess.org/ though blocking horizontal scrolls on the >>>>> open menu would not break using the site. >>>>> 3. The author specified overscroll-behavior: contain | none on an >>>>> element with overflow: scroll | auto. In this case, we have the >>>>> unpredictable behavior that when you have overflow it prevents >>>>> propagation, >>>>> but if your containing element is large enough for its content then we >>>>> don't. This is the common case for things like scrolling in a chat >>>>> widget ( >>>>> demo <https://output.jsbin.com/helovikizu>, bug >>>>> <https://issues.chromium.org/issues/40748098>) or in an embedded >>>>> frame (bug <https://issues.chromium.org/issues/40736788>). >>>>> >>>>> Case 1 and 2 are sort of the same, overflow: hidden now preventing >>>>> scroll propagation, but in case 1 it never did anything before so it >>>>> feels >>>>> similar to an author using a property that doesn't work yet. >>>>> >>>>> If we want to be conservative, we could only change the behavior for >>>>> cases where it is currently layout dependent, i.e. case 3 overflow: >>>>> auto | scroll. This would be an improvement however it wouldn't help >>>>> with case 1 where you want to prevent scrolling from your component >>>>> without >>>>> risking that containing element becoming scrollable. Cases 1 and 2 are >>>>> possible that developers are relying on this being incorrectly ignored >>>>> and >>>>> not preventing scroll propagation on overflow: hidden, similar to for >>>>> example ignoring left or top on position: static. >>>>> >>>>> That said, I do think it would be more useful and predictable for it >>>>> to apply to all scroll containers as it is spec'd. >>>>> >>>>> On Fri, Sep 12, 2025 at 4:15 AM Philip Jägenstedt <foo...@chromium.org> >>>>> wrote: >>>>> >>>>>> Hey Rob, >>>>>> >>>>>> Since the use counter is 8%, looking at 10 random popular sites >>>>>> doesn't reduce the upper bound of breakage by a whole lot. Using the >>>>>> rule >>>>>> of three <https://en.wikipedia.org/wiki/Rule_of_three_(statistics)> >>>>>> gives >>>>>> 95% confidence that the rate of breakage is between 0 and 30%. But 30% >>>>>> of >>>>>> 8% is still a huge number when it comes to potential breakage. (Reducing >>>>>> this to a reasonable number with more random sampling isn't really >>>>>> feasible >>>>>> either, you'd need to test 800 sites with only negatives to get down to >>>>>> 0.03% if my math is right.) >>>>>> >>>>>> The fact that the change seems to make things work better and aligns >>>>>> with apparent developer intention is great. But is there any plausible >>>>>> pattern where web developers could depend on the current behavior >>>>>> intentionally? >>>>>> >>>>>> In a situation like this I think we should also consider how many >>>>>> sites we fix and not just how many we break. If we have high confidence >>>>>> that many sites will be improved but can't find any that would regress, >>>>>> then that seems like a good trade even if some regressions do surface. >>>>>> >>>>>> If other vendors are interested in making the same change and there's >>>>>> clear developer demand, I think we should try it, with a Finch kill >>>>>> switch >>>>>> in place. >>>>>> >>>>>> Best regards, >>>>>> Philip >>>>>> >>>>>> On Thu, Sep 11, 2025 at 10:13 PM Robert Flack <fla...@chromium.org> >>>>>> wrote: >>>>>> >>>>>>> Note that this is a repost of >>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/p2edIq4J-eQ/m/5MxPnuT8AwAJ >>>>>>> >>>>>>> as an I2S instead of PSA as I am seeking and will await LGTMs >>>>>>> considering >>>>>>> the potential compat risk. >>>>>>> >>>>>>> On the associated bug I have looked at a sampling of 10 popular >>>>>>> sites affected by the overscroll-behavior change on httparchive >>>>>>> <https://issues.chromium.org/issues/41371072#comment45> and found >>>>>>> it to either not impact them or be beneficial: >>>>>>> 1. https://lichess.org/ On smaller screens the `#topnav` element >>>>>>> opens in a menu. The application of overscroll behavior seems to be >>>>>>> there >>>>>>> to prevent scrolling the content and so this site will be improved by >>>>>>> the >>>>>>> change. >>>>>>> 2. https://cardgames.io/ Seems to just be the body element that has >>>>>>> overscrollBehavior set. This shouldn't be affected. >>>>>>> 3. https://open.spotify.com/ The body and "your library" panel fit >>>>>>> into this case. I think this change would apply the intended behavior >>>>>>> as >>>>>>> they do not seem to intend for the scroll to propagate. >>>>>>> 4. https://www.accuweather.com/ Only the body has overscroll >>>>>>> behavior specified. >>>>>>> 5. https://www.ikea.com/ Their mobile menu `#top-mobile-menu` has >>>>>>> overscroll-behavior on it. This is presumably to prevent accidental >>>>>>> pull to >>>>>>> refresh while scrolling through the menu and would be fixed by this >>>>>>> change. >>>>>>> 6. https://www.tiktok.com/explore The side nav has contain >>>>>>> overscroll-behavior. With this change you would no longer be able to >>>>>>> scroll >>>>>>> the main page by scrolling on top of the sidebar. This seems to be the >>>>>>> intention but is not currently being honored. >>>>>>> 7. https://x.com/ Only the root element seems to have >>>>>>> overscroll-behavior defined. >>>>>>> 8. https://store.epicgames.com/ I'm unable to find the affected >>>>>>> element >>>>>>> 9. https://www.airbnb.com/ There are several scrolling containers >>>>>>> with overscroll-behavior defined however I think these are only "not >>>>>>> scrollable" while the page is loading. By the time the user interacts >>>>>>> with >>>>>>> them they have scrollable overflow and so are unaffected. The usage >>>>>>> also >>>>>>> seems to indicate they would not want scroll to chain past those >>>>>>> containers. >>>>>>> 10. https://www.expedia.com/ I'm not able to find where the >>>>>>> property is used. >>>>>>> >>>>>>> In terms of developer demand, there are many bugs that have been >>>>>>> duped into https://issues.chromium.org/issues/41371072 all >>>>>>> concerned that the incorrect behavior currently implemented in all >>>>>>> browsers >>>>>>> prevents using it for the intended purposes. In particular, developers >>>>>>> want >>>>>>> to be able to use overscroll-behavior without the unpredictability of >>>>>>> whether it applies depending on the layout of their scrolling content. >>>>>>> >>>>>>> Common uses for this include, >>>>>>> 1. Preventing scrolling in inner widgets from chaining to document >>>>>>> scrolls >>>>>>> 2. Preventing scrolling on a dialog covering the page from chaining >>>>>>> to and scrolling the page >>>>>>> 3. Preventing scrolling on a menu from chaining to and scrolling >>>>>>> the page. >>>>>>> >>>>>>> Right now, authors have to carefully ensure that they have overflow: >>>>>>> auto and some scrolling content and then presumably hide the scrollbar >>>>>>> in >>>>>>> cases where they are only adding overflow: auto; to allow >>>>>>> overscroll-behavior to apply. >>>>>>> >>>>>>> On Thu, Sep 11, 2025 at 4:06 PM Robert Flack <fla...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> Contact emails fla...@chromium.org, perry...@gmail.com >>>>>>>> >>>>>>>> Specification >>>>>>>> https://www.w3.org/TR/css-overscroll-1/#propdef-overscroll-behavior >>>>>>>> >>>>>>>> Summary >>>>>>>> >>>>>>>> The overscroll-behavior applies to all scroll container elements, >>>>>>>> regardless of whether those elements currently have overflowing >>>>>>>> content or >>>>>>>> are user scrollable. Developers can use overscroll-behavior to prevent >>>>>>>> scroll propagation on an `overflow: hidden` backdrop or an `overflow: >>>>>>>> auto` >>>>>>>> element without needing to consider whether it will currently be >>>>>>>> overflowing. >>>>>>>> >>>>>>>> >>>>>>>> Blink component Blink>Scroll >>>>>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EScroll%22> >>>>>>>> >>>>>>>> Web Feature ID overscroll-behavior >>>>>>>> <https://webstatus.dev/features/overscroll-behavior> >>>>>>>> >>>>>>>> TAG review None >>>>>>>> >>>>>>>> TAG review status Not applicable >>>>>>>> >>>>>>>> Risks >>>>>>>> >>>>>>>> >>>>>>>> Interoperability and Compatibility >>>>>>>> >>>>>>>> This should be implemented on other browsers as well, as it matches >>>>>>>> the specification. However, until this happens there are compatibility >>>>>>>> risks that some sites may over accidentally set overscroll-behavior on >>>>>>>> elements which don't currently apply today (either overflow: auto or >>>>>>>> not >>>>>>>> having overflow) and will start applying, or that developers will rely >>>>>>>> on >>>>>>>> this behavior and have accidental scroll chaining in other browsers >>>>>>>> until >>>>>>>> they implement it as well. This change will affect a large number of >>>>>>>> sites >>>>>>>> per >>>>>>>> https://chromestatus.com/metrics/feature/timeline/popularity/5596. >>>>>>>> I have done compat analysis of many of the top sites affected by this >>>>>>>> in >>>>>>>> https://issues.chromium.org/issues/41371072#comment45 and found it >>>>>>>> to either not have a meaningful impact or to better honor the >>>>>>>> developer >>>>>>>> specified intent. >>>>>>>> >>>>>>>> >>>>>>>> *Gecko*: No signal >>>>>>>> >>>>>>>> *WebKit*: No signal >>>>>>>> >>>>>>>> *Web developers*: No signals >>>>>>>> >>>>>>>> *Other signals*: >>>>>>>> >>>>>>>> Ergonomics >>>>>>>> >>>>>>>> This improves the ergonomics of overscroll-behavior, fixing the >>>>>>>> current unpredictable layout dependent behavior we have today. >>>>>>>> >>>>>>>> >>>>>>>> Activation >>>>>>>> >>>>>>>> It may be difficult for developers to take advantage of this fix >>>>>>>> before it is adopted in other browsers as it is likely not possible to >>>>>>>> feature detect. They could remove pre-existing hacks to get this >>>>>>>> functionality (i.e. ensuring 1px overflow) on supporting chromium >>>>>>>> browsers. >>>>>>>> >>>>>>>> >>>>>>>> WebView application risks >>>>>>>> >>>>>>>> Does this intent deprecate or change behavior of existing APIs, >>>>>>>> such that it has potentially high risk for Android WebView-based >>>>>>>> applications? >>>>>>>> >>>>>>>> None >>>>>>>> >>>>>>>> >>>>>>>> Debuggability >>>>>>>> >>>>>>>> None >>>>>>>> >>>>>>>> >>>>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>>>> Mac, Linux, ChromeOS, Android, and Android WebView)? Yes >>>>>>>> >>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>> ? Yes >>>>>>>> >>>>>>>> >>>>>>>> https://wpt.fyi/results/css/css-overscroll-behavior/overscroll-behavior-without-overflow.html?label=experimental&label=master&aligned >>>>>>>> >>>>>>>> >>>>>>>> Flag name on about://flags None >>>>>>>> >>>>>>>> Finch feature name OverscrollBehaviorRespectedOnAllScrollContainers >>>>>>>> >>>>>>>> Rollout plan Will ship enabled for all users >>>>>>>> >>>>>>>> Requires code in //chrome? False >>>>>>>> >>>>>>>> Measurement The OverscrollBehaviorOnNonScrollableScrollContainer >>>>>>>> feature counter measures how often this new behavior is or would be >>>>>>>> triggered. >>>>>>>> https://chromestatus.com/metrics/feature/timeline/popularity/5596 >>>>>>>> >>>>>>>> Sample links >>>>>>>> https://ebidel.github.io/demos/chatbox.html >>>>>>>> https://codepen.io/rctneil/pen/rJYONj >>>>>>>> >>>>>>>> Estimated milestones >>>>>>>> >>>>>>>> No milestones specified >>>>>>>> >>>>>>>> >>>>>>>> Anticipated spec changes >>>>>>>> >>>>>>>> Open questions about a feature may be a source of future web compat >>>>>>>> or interop issues. Please list open issues (e.g. links to known github >>>>>>>> issues in the project for the feature specification) whose resolution >>>>>>>> may >>>>>>>> introduce web compat/interop risk (e.g., changing to naming or >>>>>>>> structure of >>>>>>>> the API in a non-backward-compatible way). >>>>>>>> None >>>>>>>> >>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>> https://chromestatus.com/feature/5129635997941760?gate=5124735842910208 >>>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "blink-dev" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to blink-dev+...@chromium.org. >>>>>>> To view this discussion visit >>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJh39TPripgF_DY4adqs9wbtQV8XRTVdXER3SOR0-52SczULBA%40mail.gmail.com >>>>>>> >>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJh39TPripgF_DY4adqs9wbtQV8XRTVdXER3SOR0-52SczULBA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>> -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+...@chromium.org. > To view this discussion visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYdPV-itQEK%2BbSPAR0u3SfLOqvSEe57TA5SFKRDTODi16g%40mail.gmail.com > > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYdPV-itQEK%2BbSPAR0u3SfLOqvSEe57TA5SFKRDTODi16g%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+...@chromium.org. > > To view this discussion visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/bbb963e9-9acb-49b9-ae02-4c82e88d4e6d%40gmail.com > > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/bbb963e9-9acb-49b9-ae02-4c82e88d4e6d%40gmail.com?utm_medium=email&utm_source=footer> > . > > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/f51f5de2-d13e-4ef9-9b45-fffa3363bb97n%40chromium.org.