LGTM1

Thanks for the diligent work to make this API removal as smooth as
possible. I think the risk is low, and in addition security risks of not
removing the API are high and growing.

On Tue, Sep 29, 2026, 1:59 PM Mason Freed <[email protected]> wrote:

> I'm following up on this intent, since the branch point for M157 is coming
> up on Oct 12, after which Canary will be M158. The plan
> <https://chromestatus.com/feature/4709671889534976> is to disable XSLT by
> default starting in M158, so I have flipped the API owners review bit for
> this removal. Here are some updates related to this deprecation:
>
> - XSLT was disabled by default in all pre-stable channels starting in M145
> (154 for WebView).
> - A user-visible warning (with significant community feedback and fixes)
> is present on XSLT-transformed pages (and XSLTProcessor-transformed
> documents) since M156 (just for the last two milestones before removal).
> - The Enterprise Policy has been available since M146 (allowing both
> opt-back-in, and early-opt-out). This deprecation was also published in the
> enterprise release notes starting Oct, 2025.
> - The Deprecation Trial has been available since M152 (allowing only
> opt-back-in).
> - Lots of great feedback
> <https://github.com/mfreed7/xslt_polyfill/issues?q=is%3Aissue> and bug
> fixes <https://github.com/mfreed7/xslt_polyfill/commits/main/> on the
> polyfill and Chrome extension. Both seem to be rather functional across
> most use cases.
> - When XSLT is disabled in the browser, a user-visible warning links
> directly to an extension search, where the polyfill extension
> <https://chromewebstore.google.com/detail/xslt-polyfill/hlahhpnhgficldhfioiafojgdhcppklm>
> shows up. So in still-broken cases, users have recourse.
> - CAP Alerts (emergency alerts) are exempted from the initial
> default-removal, because they can't use deprecation trials. They will have
> a user-visible warning banner, and will be disabled in the final removal
> milestone of M176.
> - The HTML standard and DOM standard now mark XSLT as "do not use"
> <https://html.spec.whatwg.org/multipage/infrastructure.html#interactions-with-xpath-and-xslt>,
> and CanIUse says "Discouraged" <https://caniuse.com/wf-xslt>.
> - I've had lots of conversations (public and private) with folks who are
> migrating away from the browser-native feature. All have been resolved, at
> least as far as I can tell.
> - The use counters are still roughly flat. This is not a surprise -
> deprecations usually make counters go up, in my experience.
>
> In my view, we should proceed with the removal now, keeping to the
> published schedule. I'm requesting API owner approval to disable XSLT by
> default in M158.
>
> Thanks,
> Mason
>
>
> On Thu, Sep 3, 2026 at 11:12 AM Mason Freed <[email protected]> wrote:
>
>>
>> On Thu, Sep 3, 2026 at 5:57 AM Khristine Belandres <
>> [email protected]> wrote:
>>
>>> Given the 2-week release starting M152 (Aug 25, 2027), is the plan also
>>> changing specifically for M155 and M164? Do we follow the dates or the
>>> release version?
>>>
>>> - M155 (Nov 17, 2026): XSLT stops functioning on Stable releases, for
>>> all users other than Origin Trial and Enterprise Policy participants.
>>>
>>> - M164 (Aug 17, 2027): Origin Trial and Enterprise Policy stop
>>> functioning. XSLT is disabled for all users.
>>>
>>
>> Thanks for highlighting that! When the 2 week cycle was announced, I
>> updated the chromestatus entry
>> <https://chromestatus.com/feature/4709671889534976> accordingly (look
>> for either "Experiment goals" or "Rollout steps" on that page) and the blog
>> post timeline
>> <https://developer.chrome.com/docs/web-platform/deprecating-xslt#timeline_for_chrome>.
>> The new milestones are M158 and M176, respectively; they follow the
>> original dates, not the old milestone numbers. I suppose I should have
>> emailed this thread, also!
>>
>> Thanks,
>> Mason
>>
>>
>>
>>> On Saturday, October 25, 2025 at 5:58:49 AM UTC+8 Mason Freed wrote:
>>>
>>>> Contact emails
>>>>
>>>> [email protected]
>>>>
>>>> Explainer
>>>>
>>>> None
>>>>
>>>> Specification
>>>>
>>>> None
>>>>
>>>> Summary
>>>>
>>>> XSLT v1.0, which all browsers adhere to, was standardized in 1999. In
>>>> the meantime, XSLT has evolved to v2.0 and v3.0, adding features, and
>>>> growing apart from the old version frozen into browsers. This lack of
>>>> advancement, coupled with the rise of JavaScript libraries and frameworks
>>>> that offer more flexible and powerful DOM manipulation, has led to a
>>>> significant decline in the use of client-side XSLT. Its role within the web
>>>> browser has been largely superseded by JavaScript-based technologies such
>>>> as JSON+React.
>>>>
>>>> Chromium uses the libxslt library to process these transformations, and 
>>>> libxslt
>>>> was unmaintained
>>>> <https://discourse.gnome.org/t/stepping-down-as-libxslt-maintainer/27615>
>>>> for ~6 months of 2025. Libxslt is a complex, aging C codebase of the type
>>>> notoriously susceptible to memory safety vulnerabilities like buffer
>>>> overflows, which can lead to arbitrary code execution. Because client-side
>>>> XSLT is now a niche, rarely-used feature, these libraries receive far less
>>>> maintenance and security scrutiny than core JavaScript engines, yet they
>>>> represent a direct, potent attack surface for processing untrusted web
>>>> content. Indeed, XSLT is the source of several recent high-profile security
>>>> exploits that continue to put browser users at risk.
>>>>
>>>> For these reasons, Chromium would like to deprecate and remove XSLT.
>>>> WHATWG decided to move XSLT deprecation to stage 3
>>>> <https://github.com/whatwg/html/issues/11523>, indicating broad
>>>> agreement. Both other browser engines are also planning to deprecate XSLT.
>>>> The proposed timeline for Chromium is to deprecate in M143, remove in M155
>>>> (except for Origin Trial and Enterprise Policy users), and discontinue the
>>>> Origin Trial and Enterprise Policy in M164. See below for more details.
>>>>
>>>> Blink component
>>>>
>>>> Blink>XML
>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EXML%22>
>>>>
>>>> Web Feature ID
>>>>
>>>> xslt <https://webstatus.dev/features/xslt>
>>>>
>>>> Motivation
>>>>
>>>> Security risks for all users outweigh the very small usage of this
>>>> feature on the open web.
>>>>
>>>> Usage of the JS XSLTProcessor API
>>>> <https://chromestatus.com/metrics/feature/timeline/popularity/79> is
>>>> fairly volatile, registering somewhere between 0.01% and 0.1% of page
>>>> loads, averaging around 0.05% over time. These numbers are above the
>>>> typical 0.001% deprecation threshold. Again, we feel that the increased
>>>> potential for breakage is balanced by the reduced security risk to 100% of
>>>> Chromium users. And we are doing everything we can to mitigate this
>>>> breakage and be proactive in reaching out to potentially affected sites and
>>>> particularly libraries that might account for significant chunks of the
>>>> overall usage. In addition, several sites we surveyed that use
>>>> XSLTProcessor have feature detection code with fallbacks to JS libraries
>>>> like Saxonica. Of the ~220 sites we've surveyed so far, roughly 72% of them
>>>> are still functional even with XSLT disabled.
>>>>
>>>> The usage of declarative XSL Processing Instructions
>>>> <https://chromestatus.com/metrics/feature/timeline/popularity/78> is
>>>> significantly lower, around 0.001% for the last few years. This is at or
>>>> below the safe deprecation threshold.
>>>>
>>>> Initial public proposal
>>>>
>>>> https://github.com/whatwg/html/issues/11523
>>>>
>>>> TAG review
>>>>
>>>> None
>>>>
>>>> TAG review status
>>>>
>>>> Not applicable
>>>>
>>>> Risks
>>>>
>>>>
>>>> Interoperability and Compatibility
>>>>
>>>> Removal of this feature constitutes a compat risk, since sites that use
>>>> XSLT may stop working when the feature is removed. Mitigations include a
>>>> very long deprecation window, a polyfill, lots of outreach, and both origin
>>>> trials and enterprise policies to allow sites even more time to migrate.
>>>>
>>>> The polyfill <https://github.com/mfreed7/xslt_polyfill> is
>>>> specifically built to mimic the existing behavior of Chrome as closely as
>>>> possible. In most cases, it is a single-line drop-in fix for a lack of XSLT
>>>> in the browser. According to my analysis, about 75% of sites that hit the
>>>> use counter don't appear to be visibly broken. Of the 25% that do appear
>>>> broken in some way (e.g. some components not rendering, or raw XML output
>>>> instead of transformed HTML), 82% have their functionality restored by the
>>>> addition of the single-line polyfill. Of the 18% that can't use the
>>>> polyfill, the primary reason seems to be CORS restrictions, as detailed
>>>> <https://github.com/mfreed7/xslt_polyfill/tree/main?tab=readme-ov-file#limitations>
>>>> in the polyfill documentation. And even if site owners take no action,
>>>> individual users can install the browser extension
>>>> <https://github.com/mfreed7/xslt_extension>, which uses the polyfill,
>>>> to get back full functionality.
>>>>
>>>> Gecko: Positive (
>>>> https://github.com/whatwg/html/issues/11523#issuecomment-3149788558)
>>>>
>>>> WebKit: Positive (
>>>> https://github.com/whatwg/html/issues/11523#issuecomment-3149280766)
>>>>
>>>> Web developers: Negative (
>>>> https://github.com/whatwg/html/issues/11523#issuecomment-3150969971)
>>>> Existing users of XSLT are understandably negative on this removal, and
>>>> have been very vocal about it on the standards issue and elsewhere. There
>>>> are also mixed/positive reactions from some folks in the public
>>>> discussions, many of whose participants seem to agree with the removal of
>>>> XSLT from browsers. But the average/overall developer opinion (as measured
>>>> by comments on public threads) is negative.
>>>>
>>>> Various public discussions:
>>>>
>>>> - https://news.ycombinator.com/item?id=44952185
>>>>
>>>> -
>>>> https://www.reddit.com/r/programming/comments/1mxdm22/xslt_removal_will_break_multiple_government_and/
>>>>
>>>> - https://news.ycombinator.com/item?id=44987346
>>>>
>>>> - https://news.ycombinator.com/item?id=44987552
>>>>
>>>> - https://news.ycombinator.com/item?id=44987239
>>>>
>>>> - https://news.ycombinator.com/item?id=44909599
>>>>
>>>> Other signals:
>>>>
>>>> Activation
>>>>
>>>> See above - the polyfill and extension will ease the migration burden.
>>>>
>>>> Security
>>>>
>>>> This removal constitutes a big win for security, in that it removes a
>>>> highly-vulnerable external library from Chromium.
>>>>
>>>> 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?
>>>>
>>>> In the same way that this poses a compat risk on the open web, it poses
>>>> a risk for WebView applications.
>>>>
>>>>
>>>> Deprecation/Removal Plan
>>>>
>>>> The tentative deprecation/removal plan would be as follows:
>>>>
>>>> - M142 (Oct 28, 2025): Early warning console messages added to Chrome.
>>>>
>>>> - M143 (Dec 2, 2025): Official deprecation of the API - deprecation
>>>> warning messages begin to show in the console and in lighthouse.
>>>>
>>>> - M148 (March 10, 2026 Canary): Canary, Dev, and Beta releases begin
>>>> disabling XSLT by default, as an early-warning.
>>>>
>>>> - M152 (Aug 25, 2026): Origin Trial and Enterprise Policy go live for
>>>> testing. These allow sites and enterprises to continue using features past
>>>> the removal date.
>>>>
>>>> - M155 (Nov 17, 2026): XSLT stops functioning on Stable releases, for
>>>> all users other than Origin Trial and Enterprise Policy participants.
>>>>
>>>> - M164 (Aug 17, 2027): Origin Trial and Enterprise Policy stop
>>>> functioning. XSLT is disabled for all users.
>>>>
>>>> Debuggability
>>>>
>>>> None
>>>>
>>>> Is this feature fully tested by web-platform-tests
>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>> ?
>>>>
>>>> Yes
>>>>
>>>> These tests verify the functionality of XSLT. They will need to be
>>>> changed/removed: https://wpt.fyi/results/dom/xslt
>>>>
>>>> Flag name on about://flags
>>>>
>>>> XSLT
>>>>
>>>> Finch feature name
>>>>
>>>> XSLT
>>>>
>>>> Requires code in //chrome?
>>>>
>>>> False
>>>>
>>>> Tracking bug
>>>>
>>>> https://crbug.com/435623334
>>>>
>>>> Estimated milestones
>>>>
>>>> No milestones specified
>>>>
>>>>
>>>> Link to entry on the Chrome Platform Status
>>>>
>>>> https://chromestatus.com/feature/4709671889534976?gate=5156253931929600
>>>>
>>>> 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/CAM%3DNeDgUxoR_bnwAW_6GAXRJ3tx401GKKdMee1E%3DkU%2BxPcVtQg%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM%3DNeDgUxoR_bnwAW_6GAXRJ3tx401GKKdMee1E%3DkU%2BxPcVtQg%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 [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw8NAKebB6QQ%2BRJBe_ec1TAYu9OP%3Dii5Meq4Ne_2ZJfyVA%40mail.gmail.com.

Reply via email to