LGTM2, with the plan outlined by Vlad.

/Daniel

On 2026-02-04 17:16, Vladimir Levin wrote:
I think the 2.37% use case is definitely interesting since if scrapers are causing this, I would expect the number to either be much higher (scrapers accessing this on most sites) or much lower (it's a negligible use case).

That being said, I'm also not convinced that these are "real developers" doing this on more than 2% of sites.

Is it possible to check httparchive for a random sampling of websites that trigger this UMA and see if there is a pattern that emerges or whether there is script that accesses these properties?

In either case, in light of both Firefox and Safari shipping and the fact that outlines don't affect box geometry, I'm inclined to approve with a note to be cautious in launching this and follow a finch rollout that propagates the feature to the stable channel slowly.

With that, LGTM1.

Also, it would be nice to follow up about the 2.37% to see if there is a solid explanation

Thanks,
Vlad

On Monday, February 2, 2026 at 3:05:48 PM UTC-5 Alex Russell wrote:

    Why would scrapers opt into metrics reporting? Seems an unlikely
    explanation for elevated use. Do we have other views onto it, e.g.
    from Edge histograms?

    Best,

    Alex

    On Thursday, January 29, 2026 at 2:53:02 PM UTC-8 Sam Davis
    Omekara wrote:

        Hi,

        Thanks for the questions. Find below my responses:

          * Question: As a non-CSS expert, can you help me better
            understand what "applying that special-case becomes
            ambiguous and difficult to define consistently"? Is this
            in terms of code that authors would write, or prose for
            spec authors? An example would be helpful here.
              o Answer: The ambiguity is primarily around spec
                semantics. Gap decorations extended the column-rule-*
                properties to accept value lists and `repeat()`
                patterns. The previous rule (“if style is none/hidden,
                then computed width is 0”) is straightforward for a
                single value, but with lists and repeats you no longer
                have a clean, well-defined way of expressing this
                behavior. For example, from the CSSWG discussion:
                  + column-rule-style: solid dashed none;
                  + column-rule-width: 1px 2px;
              o This cycles to: “1px solid, 2px dashed, (1px) none,
                2px solid, 1px dashed, (2px) none …”.
              o Setting the width to zero in this case depending on
                the style at any point in the expansion isn’t
                well-defined.
              o Also, `repeat()` syntax is preserved at computed-value
                time, which further prevents expanding lists and
                applying a clean index-based rule:
                  + column-rule-style: repeat(2, solid none dashed);
                  + column-rule-width: 1px 2px;
              o This would expand to: “1px (solid), 2px (none),
                1px(dashed), 2px(solid), 1px(none), 2px (dashed) …”
                But computed values explicitly do not perform this
                expansion, so any rule that depends on per-index
                alignment between style and width cannot be spec'd in
                a well-defined way.
          * Question: 2.37% of page views is a lot of page views. Why
            do we feel confident that border-width needs backwards
            compat considerations for getComputedStyle but
            column-rule-width and outline-width don't? Are you saying
            that 2.37% of the use counters are coming from
            fingerprinting? I'm also not sure what it means for a
            scraper to trigger a UseCounter - can you clarify? I've
            typically thought of scraping as a server-side operation -
            are these web extensions?
              o Why do we feel confident that border-width needs
                backwards compat considerations for getComputedStyle
                and column-rule-width and outline-width don’t?
                  + `border-*-width` properties are more commonly used
                    and are tied to the box model, so changing what
                    getComputedStyle() returns is more likely to
                    affect existing scripts that compute geometry or
                    layout related behavior. In contrast,
                    outline-width and column-rule-width are less
                    commonly used and are only used for visual
                    decoration so returning the author-specified width
                    rather than 0px should not affect the element’s
                    geometry, making user-visible regressions less likely.
              o On the 2.37%
                  + The use counter added was scoped to trigger when
                    the resolved value gotten from getComputedStyle is
                    called on an element where style is none/hidden
                    but width is non-zero. While 2.37% is high we
                    believe the traffic is dominated by:
                      # Fingerprinting/Telemetry scripts that
                        typically iterate over every CSS property to
                        build a unique “fingerprint” of the browser.
                      # Generic serializers that read all styles to
                        copy/paste or inspect elements
                  + The default for these properties is *-width:
                    medium and *-style: none. This is also a
                    contributing factor to this high percentage. So
                    even if a site doesn’t explicitly set these values
                    and is being scraped, by virtue of the defaults,
                    the counter will get hit.
                  + On scrapers being server side
                      # In recent times, we’ve seen scrapers be
                        headless browser automation like Puppeteer or
                        Selenium or client-side scripts in real
                        browsers. They can execute Javascript and call
                        getComputedStyle which in this case would
                        expect the counter to be hit.
                        These tools often query hundreds of properties
                        which signals that a high query rate does not
                        necessarily imply meaningful web-facing
                        dependence on the current behavior.
                  + Also, we are not first movers in this case, Webkit
                    and Gecko have shipped this.
                  + + [email protected] for more details on this.



        On Thursday, January 22, 2026 at 6:21:07 PM UTC-8 Mike Taylor
        wrote:

            On 1/21/26 1:46 p.m., Chromestatus wrote:

            *Contact emails*
            [email protected], [email protected]



            *Explainer*
            /No information provided/

            *Specification*
            https://github.com/w3c/csswg-drafts/pull/11913/files
            <https://github.com/w3c/csswg-drafts/pull/11913/files>

            *Summary*
            This proposal untangles ‘border-width’, ‘outline-width’,
            and ‘column-rule-width’ from their corresponding
            ‘*-style’ properties. Previously, if a ‘*-style’
            property, such as ‘border-style’, was set to ‘none’ or
            ‘hidden’, the computed ‘*-width’, such as ‘border-width’,
            would resolve to ‘0px’, even if the width was explicitly
            set to ‘10px’. Following a resolution in the CSSWG [1],
            the computed values of ‘border-width’, ‘outline-width’,
            and ‘column-rule-width’ will now reflect their specified
            values, regardless of the associated style property's
            value. Similarly, the resolved values of ‘outline-width’,
            and ‘column-rule-width’ will now reflect their specified
            values, regardless of the associated style property's
            value. [1]:
            
https://github.com/w3c/csswg-drafts/issues/11494#issuecomment-2675800489
            
<https://github.com/w3c/csswg-drafts/issues/11494#issuecomment-2675800489>


            *Blink component*
            Blink>CSS
            
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ECSS%22>

            *Web Feature ID*
            /No information provided/

            *Motivation*
            Today, CSS special-cases ‘border-*-width’,
            ‘outline-width’, and ‘column-rule-width’ so that their
            computed value becomes ‘0px’ when the corresponding
            ‘*-style’ is ‘none’ or ‘hidden’, even if the author
            specified a nonzero width. With Gap Decorations extending
            ‘column-rule-*’ properties to support lists/repeaters,
            applying that special-case becomes ambiguous and
            difficult to define consistently. Having ‘*-width’ values
            independent of ‘*-style’, provides an intuitive model for
            these properties and better reflects the author-specified
            value.

            As a non-CSS expert, can you help me better understand
            what "applying that special-case becomes ambiguous and
            difficult to define consistently"? Is this in terms of
            code that authors would write, or prose for spec authors?
            An example would be helpful here.

            *Initial public proposal*
            https://github.com/w3c/csswg-drafts/issues/11494
            <https://github.com/w3c/csswg-drafts/issues/11494>

            *Search tags*
            column-rule-width
            <http:///features#tags:column-rule-width>, border-width
            <http:///features#tags:border-width>, outline-width
            <http:///features#tags:outline-width>

            *TAG review*
            /No information provided/

            *TAG review status*
            Not applicable

            *Risks*


            *Interoperability and Compatibility*
            The interoperability risk is low as both Gecko and Webkit
            have already implemented these changes. Compatibility
            risk is also low. The resolved value for `border-width`
            via `getComputedStyle()` will remain 0px when
            `border-style` is set to `none`/ `hidden`, maintaining
            backward compatibility. For `outline-width` and
            `column-rule-width`, both computed and resolved values
            will show the specified values, as these properties are
            rarely queried and unlikely to impact existing content.
            To support the claim, we collected UseCounter data
            measuring how often these values are queried. The
            computed‑value counters for these properties are
            extremely low (<0.0001%). The resolved‑value counters for
            ‘column-rule-width’ and ‘outline-width’ show ~2.37%
            usage, which reflects calls to ‘getComputedStyle()’
            rather than observable rendering usage. Since
            ‘getComputedStyle()’ is frequently queried by automated
            tooling (e.g. scrapers and fingerprinting scripts) that
            do not depend on property semantics, this usage does not
            indicate meaningful web‑facing reliance. As a result, the
            compatibility risk remains low.

            2.37% of page views is a lot of page views. Why do we feel
            confident that border-width needs backwards compat
            considerations for getComputedStyle but column-rule-width
            and outline-width don't? Are you saying that 2.37% of the
            use counters are coming from fingerprinting? I'm also not
            sure what it means for a scraper to trigger a UseCounter -
            can you clarify? I've typically thought of scraping as a
            server-side operation - are these web extensions?

            thanks!


            /Gecko/:
            Shipped/Shipping 
(https://bugzilla.mozilla.org/show_bug.cgi?id=1998285
            <https://bugzilla.mozilla.org/show_bug.cgi?id=1998285>)

            /WebKit/:
            Shipped/Shipping (https://bugs.webkit.org/show_bug.cgi?id=304940
            <https://bugs.webkit.org/show_bug.cgi?id=304940>)

            /Web developers/: No signals

            /Other signals/:

            *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?

            /No information provided/


            *Debuggability*
            No extra functionality is needed in Devtools to debug
            this feature update.

            *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-backgrounds/animations/border-width-interpolation.html
            
<https://wpt.fyi/results/css/css-backgrounds/animations/border-width-interpolation.html>
            https://wpt.fyi/results/css/CSS2/ui/outline-width-096.xht
            <https://wpt.fyi/results/css/CSS2/ui/outline-width-096.xht>
            https://wpt.fyi/results/css/CSS2/borders/border-width-011.xht
            <https://wpt.fyi/results/css/CSS2/borders/border-width-011.xht>
            https://wpt.fyi/results/css/CSS2/borders/border-width-012.xht
            <https://wpt.fyi/results/css/CSS2/borders/border-width-012.xht>
            
https://wpt.fyi/results/css/css-ui/parsing/outline-width-computed.html
            
<https://wpt.fyi/results/css/css-ui/parsing/outline-width-computed.html>
            https://wpt.fyi/results/css/css-ui/outline-009.html
            <https://wpt.fyi/results/css/css-ui/outline-009.html>
            
https://wpt.fyi/results/css/css-ui/animation/outline-width-interpolation.html
            
<https://wpt.fyi/results/css/css-ui/animation/outline-width-interpolation.html>
            
https://wpt.fyi/results/css/css-multicol/parsing/column-rule-width-computed.html
            
<https://wpt.fyi/results/css/css-multicol/parsing/column-rule-width-computed.html>
            
https://wpt.fyi/results/css/css-multicol/parsing/column-rule-computed.html
            
<https://wpt.fyi/results/css/css-multicol/parsing/column-rule-computed.html>
            
https://wpt.fyi/results/css/css-backgrounds/animations/border-width-interpolation.html
            
<https://wpt.fyi/results/css/css-backgrounds/animations/border-width-interpolation.html>

            *Flag name on about://flags*
            /No information provided/

            *Finch feature name*
            
DecoupleComputedBorderWidthFromStyle,DecoupleResolvedColumnRuleWidthFromStyleEnabled


            *Rollout plan*
            Will ship enabled for all users

            *Requires code in //chrome?*
            False

            *Tracking bug*
            https://issues.chromium.org/issues/393631108
            <https://issues.chromium.org/issues/393631108>

            *Estimated milestones*
            Shipping on desktop         146
            Shipping on Android         146
            Shipping on WebView         146



            *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).

            /No information provided/

            *Link to entry on the Chrome Platform Status*
            
https://chromestatus.com/feature/5133099851317248?gate=5201902006173696
            
<https://chromestatus.com/feature/5133099851317248?gate=5201902006173696>

            This intent message was generated by Chrome Platform
            Status <https://chromestatus.com>.

-- 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 [email protected].


            To view this discussion visit
            
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69711ef3.710a0220.3080c5.02c3.GAE%40google.com
            
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69711ef3.710a0220.3080c5.02c3.GAE%40google.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 [email protected]. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/cbe45224-f32d-41aa-851a-a050c272fc84n%40chromium.org <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/cbe45224-f32d-41aa-851a-a050c272fc84n%40chromium.org?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 [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/0dedaebb-178a-4264-aa50-a1a79459ddf6%40gmail.com.

Reply via email to