From 32cba87f88f210158a07ecfc4a144324184bbb79 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Mon, 26 Jan 2026 16:59:02 +0100 Subject: [PATCH] fix(metro-config): fix asset URLs not being restored when targeting Windows --- .changeset/angry-llamas-sip.md | 5 +++++ packages/metro-config/src/index.js | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .changeset/angry-llamas-sip.md diff --git a/.changeset/angry-llamas-sip.md b/.changeset/angry-llamas-sip.md new file mode 100644 index 0000000000..76264ee365 --- /dev/null +++ b/.changeset/angry-llamas-sip.md @@ -0,0 +1,5 @@ +--- +"@rnx-kit/metro-config": patch +--- + +Fixed asset URLs not being restored when targeting Windows diff --git a/packages/metro-config/src/index.js b/packages/metro-config/src/index.js index c12e860465..64e525bd0a 100644 --- a/packages/metro-config/src/index.js +++ b/packages/metro-config/src/index.js @@ -320,7 +320,19 @@ function additionalConfig(projectRoot, inputConfig) { ]; } else { const { restoreAssetURL } = require("./assetPlugins/escapeAssetURLs.js"); - config.server = { rewriteRequestUrl: restoreAssetURL }; + config.server = { + // Some platforms (notably Windows) still prefer `enhanceMiddleware` over + // `rewriteRequestUrl`. We need to set both to ensure asset URLs are + // properly restored. + enhanceMiddleware: (middleware) => { + /** @type {import("connect").NextHandleFunction} */ + return (req, res, next) => { + req.url = restoreAssetURL(req.url ?? ""); + return middleware(req, res, next); + }; + }, + rewriteRequestUrl: restoreAssetURL, + }; transformer.assetPlugins = [ require.resolve("./assetPlugins/escapeAssetURLs.js"),