[Fizz] Fix non-script modulepreload tracking (#36564)
Minh Vu committed
Jun 22, 2026 at 18:47 UTC
247fbb452d8ae7f1ed1919edffc6f58f57be3a1e
2 files changed
+29
-1
packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js
+1
-1
@@ -6556,7 +6556,7 @@ function preloadModule(
6556
resumableState.moduleUnknownResources.hasOwnProperty(as);
6557
let resources;
6558
if (hasAsType) {
6559
- resources = resumableState.unknownResources[as];
6559
+ resources = resumableState.moduleUnknownResources[as];
6560
if (resources.hasOwnProperty(key)) {
6561
// we can return if we already have this resource
6562
return;
packages/react-dom/src/__tests__/ReactDOMFloat-test.js
+28
@@ -6532,6 +6532,34 @@ body {
6532
);
6533
});
6534
6535
+ it('preloads multiple non-script modules with the same as type', async () => {
6536
+ function App() {
6537
+ ReactDOM.preloadModule('serviceworker one', {as: 'serviceworker'});
6538
+ ReactDOM.preloadModule('serviceworker two', {as: 'serviceworker'});
6539
+ return <div>hello</div>;
6540
+ }
6541
+
6542
+ await act(() => {
6543
+ renderToPipeableStream(<App />).pipe(writable);
6544
+ });
6545
+
6546
+ expect(getMeaningfulChildren(document.body)).toEqual(
6547
+ <div id="container">
6548
+ <link
6549
+ rel="modulepreload"
6550
+ href="serviceworker one"
6551
+ as="serviceworker"
6552
+ />
6553
+ <link
6554
+ rel="modulepreload"
6555
+ href="serviceworker two"
6556
+ as="serviceworker"
6557
+ />
6558
+ <div>hello</div>
6559
+ </div>,
6560
+ );
6561
+ });
6562
+
6563
it('warns if you provide invalid arguments', async () => {
6564
function App() {
6565
ReactDOM.preloadModule();