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| Shipping on desktop | 146 |
| Shipping on Android | 146 |
| Shipping on WebView | 146 |
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 providedOn 1/21/26 1:46 p.m., Chromestatus wrote:
Contact emailssamome...@microsoft.com, kbab...@microsoft.com
ExplainerNo information provided
Specificationhttps://github.com/w3c/csswg-drafts/pull/11913/files
SummaryThis 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
Blink componentBlink>CSS
Web Feature IDNo information provided
MotivationToday, 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.
Initial public proposalhttps://github.com/w3c/csswg-drafts/issues/11494
Search tagscolumn-rule-width, border-width, outline-width
TAG reviewNo information provided
TAG review statusNot applicable
Risks
Interoperability and CompatibilityThe 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!
--
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/69711ef3.710a0220.3080c5.02c3.GAE%40google.com.
LGTM2, with the plan outlined by Vlad.
/Daniel
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/cbe45224-f32d-41aa-851a-a050c272fc84n%40chromium.org.
After taking a closer look into the UMA, I realized that the use counter was not measuring active and intentional usage of these properties. Instead, it largely captures cases when an element’s resolved css values are retrieved (most commonly via `getComputedStyle()`, also via opening dev tools).
Because the default width values are non-zero (medium) and their corresponding style’s default is none, the counter can fire even when authors never explicitly set these or retrieve these properties. This happens because `getComputedStyle()` requests/serializes styles for all properties on the element, not just the one an author may care about. As a result, the ~2.37% figure can be treated as a very high upper bound on potential exposure rather than a granular measurement of these specific properties.
Unfortunately, with the current setup it is not trivial to architect a use counter that measures only when developers meaningfully use these properties as opposed to incidental serialization during style queries. To get some directional signal, I manually surveyed the top 10 sites that the counter fired for and did not find any that were doing anything special with these properties.
That said, each behavior change (for the computed and for the resolved) is guarded by its own finch feature flag, which provides a reliable rollout plan and kill switch if we observe unexpected impact on developers.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/75fdee9a-7382-4520-8da0-4b96087dfe37n%40chromium.org.
> follow a finch rollout that propagates the feature to the stable channel slowlyFor this type of change this risks more confusion/breakage to web-developers & users vs. just letting it roll out via the normal stable ramp and using the kill-switch if needed.Previously we've had issues where we've tried to roll out web-platform changes like this via finch, and it has caused more trouble than its worth.(E.g. Previously when we've tried to roll things out incrementally, it led to web developers not reporting issues, as they thought it was some transient issue caused by an extension of similar. This leaks to a longer breakage for end-users vs. if the bug was reported immediately).non-owner lgtm FWIW, but just with a kill-switch type rollout.