Pimp My IDE / compatibility dispatch
Back to garage
Browser compatibility / XML rendering / 17 Oct 2026

Move the transform before the breaker opens.

Chrome plans to disable browser-native XSLT for most stable users in version 158 on November 17, 2026. Find the browser-owned transform now. Move it without rewriting XML that still does useful work.

The XML is not the failing contract. The browser-owned XSLT step is.
TRANSFER CABINETCHROME 158
SOURCE
XML
RENDERED
HTML
Remove one hidden browser dependency. Preserve the output contract.

Two browser paths are leaving

Chrome's deprecation covers the XSLTProcessor JavaScript class and the <?xml-stylesheet type="text/xsl" ... ?> processing instruction. Chrome says version 158 will disable them for most stable users on November 17, 2026. An origin trial and enterprise policy can extend the route until Chrome 176 on August 17, 2027.

That schedule is a removal plan, not proof that your page depends on XSLT. Search the repository. Capture network responses. Open representative XML with XSLT disabled. A file named .xml does not establish where transformation happens.

Do not migrate XML because a browser stops running XSLT. Move the transform that the browser owns.

XML and XSLT are separate decisions

Chrome says it is not removing XML. An XML processing instruction that loads CSS also remains supported. The target is native XSLT processing in the browser.

MDN describes XSLT as a processor that creates a new document from an XML document. That distinction gives the migration a clean seam. Keep the source document if other systems need it. Replace the step that creates the browser-facing result.

Choose the new owner

A server-side transform can send finished HTML and keep the browser contract small. A client library can preserve a local transform when offline use or client custody matters. A format change can remove the transform, but it also changes producers, consumers, caches, and tests.

None of those routes wins by default. Pin one representative fixture. Compare the old and new output as a DOM, not only as text. Check links, forms, namespaces, whitespace-sensitive content, content security policy, offline behavior, and error handling.

Find the quiet dependency

git grep -nE 'XSLTProcessor|xml-stylesheet[^>]*text/xsl|\.xsl(t)?' -- .

# Then inspect live responses and generated files.
# A repository search cannot see transforms added by a proxy,
# content system, extension, or device firmware.

Chrome documents the Reporting API and its enterprise legacy report as detection routes. Console warnings and Lighthouse can also expose use. Keep a browser with XSLT disabled in the test matrix so the failure appears before stable rollout.

Do not call a rendered screenshot parity

A screenshot can miss missing links, altered form names, dropped metadata, namespace changes, and inaccessible structure. Save the source XML, stylesheet, old result, new result, browser build, and comparison output. Test behavior after the structural comparison.

The cutover is complete when production no longer asks the browser to run native XSLT and the replacement passes the agreed fixture set. An extension policy is borrowed time. It is not the replacement.

Interactive makeover / route selector plus cutover checklist

XSLT transfer switch

Choose who will own the transform. Select the checks your migration packet will require. The output is a test-plan template, not a completed cutover.

Choose a replacement route

Arm the cutover checks

These controls choose sections for a migration test plan. They do not run the tests.

Choose migration test sections
Test plan open0 of 5 sections

Server-side transform

Run the transform before the response leaves the server.

InputSource XML
New ownerServer-side transform
Browser getsFinished HTML
Packet statusNo test sections selectedChoose the evidence your migration plan will request.

What this component does. It drafts a route-specific test plan. Selecting every section means the template structure is complete. It does not inspect a site, execute a transform, or prove a migration.

Sources read / 17 Oct 2026

Evidence locker

Primary removal schedule

Chrome for Developers

Chrome names both affected browser paths, version 158 as the planned stable cutoff, the temporary extension routes, detection options, and migration choices. The page also states that XML and XML plus CSS are not being removed.

Read Chrome's XSLT removal guide
Platform reference

MDN XSLT guide

MDN defines XSLT as a processor that creates a new document from XML and may serialize it as XML, HTML, or plain text. That model identifies the step a migration must replace.

Read the MDN guide
Standards record

W3C XSLT specifications

The W3C record dates XSLT 1.0 to November 16, 1999. It also lists the later 2.0 and 3.0 recommendations. Chrome says native browser implementations remained on 1.0.

Read the W3C record
Discovery and field reports

Hacker News item 50134617

The exact discussion contains reports of live client-side XSLT use and server-side alternatives. It supplied migration cases, not the removal schedule.

Open the discussion

Timing boundary. The live clock for this dispatch was October 17, 2026 in New York. Chrome's November 17 date remains a published plan. Verify the current Chrome Platform Status entry before a production cutover.