From 1baf4ef53e68eebd6904ffec075ccda3b222e3b2 Mon Sep 17 00:00:00 2001 From: Jakub Romanczyk Date: Thu, 8 May 2025 13:27:04 +0200 Subject: [PATCH 1/4] feat: set searchParams for lazy bundles only in dev --- .../src/DeltaBundler/Serializers/helpers/js.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/metro/src/DeltaBundler/Serializers/helpers/js.js b/packages/metro/src/DeltaBundler/Serializers/helpers/js.js index 6650eddfef..8392ff91cc 100644 --- a/packages/metro/src/DeltaBundler/Serializers/helpers/js.js +++ b/packages/metro/src/DeltaBundler/Serializers/helpers/js.js @@ -60,11 +60,15 @@ function getModuleParams(module: Module<>, options: Options): Array { // Construct a server-relative URL for the split bundle, propagating // most parameters from the main bundle's URL. - const {searchParams} = new URL( - jscSafeUrl.toNormalUrl(options.sourceUrl), - ); - searchParams.set('modulesOnly', 'true'); - searchParams.set('runModule', 'false'); + let searchParamsString = ''; + if (options.dev) { + const {searchParams} = new URL( + jscSafeUrl.toNormalUrl(options.sourceUrl), + ); + searchParams.set('modulesOnly', 'true'); + searchParams.set('runModule', 'false'); + searchParamsString = '?' + searchParams.toString(); + } const bundlePath = path.relative( options.serverRoot, @@ -78,7 +82,7 @@ function getModuleParams(module: Module<>, options: Options): Array { path.basename(bundlePath, path.extname(bundlePath)), ) + '.bundle?' + - searchParams.toString(); + searchParamsString; } return id; }, From 8ced2e7bf9de476ca62f6fa8d1d3ff5ba455f3dc Mon Sep 17 00:00:00 2001 From: Jakub Romanczyk Date: Tue, 1 Jul 2025 17:32:09 +0200 Subject: [PATCH 2/4] fix: remove extra '?' in query params --- packages/metro/src/DeltaBundler/Serializers/helpers/js.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/metro/src/DeltaBundler/Serializers/helpers/js.js b/packages/metro/src/DeltaBundler/Serializers/helpers/js.js index 8392ff91cc..b438d60492 100644 --- a/packages/metro/src/DeltaBundler/Serializers/helpers/js.js +++ b/packages/metro/src/DeltaBundler/Serializers/helpers/js.js @@ -81,7 +81,7 @@ function getModuleParams(module: Module<>, options: Options): Array { // Strip the file extension path.basename(bundlePath, path.extname(bundlePath)), ) + - '.bundle?' + + '.bundle' + searchParamsString; } return id; From 1be0da37527436c45516ccc4a3a06f25f321fc1e Mon Sep 17 00:00:00 2001 From: Jakub Romanczyk Date: Tue, 1 Jul 2025 17:37:10 +0200 Subject: [PATCH 3/4] fix: async paths tests --- .../Serializers/helpers/__tests__/js-test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js b/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js index 0ca2390162..50a0320ceb 100644 --- a/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js +++ b/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js @@ -142,7 +142,7 @@ describe('wrapModule()', () => { raw( wrapModule(myModule, { createModuleId: createModuleIdFactory(), - dev: false, + dev: true, includeAsyncPaths: true, projectRoot: '/root', serverRoot: '/root', @@ -150,7 +150,7 @@ describe('wrapModule()', () => { }), ), ).toMatchInlineSnapshot( - `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/../bar.bundle?param1=true¶m2=1234&modulesOnly=true&runModule=false"}});`, + `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/../bar.bundle?param1=true¶m2=1234&modulesOnly=true&runModule=false"}},"foo.js");`, ); }); @@ -164,7 +164,7 @@ describe('wrapModule()', () => { raw( wrapModule(myModule, { createModuleId: createModuleIdFactory(), - dev: false, + dev: true, includeAsyncPaths: true, projectRoot: '/root', serverRoot: '/', @@ -172,7 +172,7 @@ describe('wrapModule()', () => { }), ), ).toMatchInlineSnapshot( - `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/bar.bundle?param1=true¶m2=1234&modulesOnly=true&runModule=false"}});`, + `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/bar.bundle?param1=true¶m2=1234&modulesOnly=true&runModule=false"}},"foo.js");`, ); }); @@ -186,7 +186,7 @@ describe('wrapModule()', () => { raw( wrapModule(myModule, { createModuleId: createModuleIdFactory(), - dev: false, + dev: true, includeAsyncPaths: true, projectRoot: '/root', serverRoot: '/root', @@ -195,7 +195,7 @@ describe('wrapModule()', () => { }), ), ).toMatchInlineSnapshot( - `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/../bar.bundle?modulesOnly=true&runModule=false"}});`, + `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/../bar.bundle?modulesOnly=true&runModule=false"}},"foo.js");`, ); }); }); From 80f2b4f94bad04b66883045632c1b54474308ce3 Mon Sep 17 00:00:00 2001 From: Jakub Romanczyk Date: Tue, 1 Jul 2025 17:40:14 +0200 Subject: [PATCH 4/4] test: add test case for dev false --- .../Serializers/helpers/__tests__/js-test.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js b/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js index 50a0320ceb..be04c83c59 100644 --- a/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js +++ b/packages/metro/src/DeltaBundler/Serializers/helpers/__tests__/js-test.js @@ -198,4 +198,26 @@ describe('wrapModule()', () => { `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/../bar.bundle?modulesOnly=true&runModule=false"}},"foo.js");`, ); }); + + test('async dependency paths do not add query params when dev is false', () => { + const dep = nullthrows(myModule.dependencies.get('bar')); + myModule.dependencies.set('bar', { + ...dep, + data: {...dep.data, data: {...dep.data.data, asyncType: 'async'}}, + }); + expect( + raw( + wrapModule(myModule, { + createModuleId: createModuleIdFactory(), + dev: false, + includeAsyncPaths: true, + projectRoot: '/root', + serverRoot: '/root', + sourceUrl: 'http://localhost/Main.bundle?param1=true¶m2=1234', + }), + ), + ).toMatchInlineSnapshot( + `__d(function() { console.log("foo") },0,{"0":1,"1":2,"paths":{"1":"/../bar.bundle"}});`, + ); + }); });