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.