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 <slightly...@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 emailsfla...@chromium.org, perryuw...@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 componentBlink>Scroll >>>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EScroll%22> >>>>>> >>>>>> Web Feature IDoverscroll-behavior >>>>>> <https://webstatus.dev/features/overscroll-behavior> >>>>>> >>>>>> TAG reviewNone >>>>>> >>>>>> TAG review statusNot 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://flagsNone >>>>>> >>>>>> Finch feature nameOverscrollBehaviorRespectedOnAllScrollContainers >>>>>> >>>>>> Rollout planWill ship enabled for all users >>>>>> >>>>>> Requires code in //chrome?False >>>>>> >>>>>> MeasurementThe 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+unsubscr...@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+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d8d331b0-57c5-4e58-9fc5-cc12861bec6fn%40chromium.org.