Skip to content

Commit 10f8295

Browse files
committed
scripts should not be preloaded over other arbitrary preloads. The point is to allow a sort of prioritization by the user via fetchPriority and order of preload calls and by making them use different queues we limit how much control you can have it ordering preloads
1 parent 2eb2c75 commit 10f8295

File tree

2 files changed

+24
-60
lines changed

2 files changed

+24
-60
lines changed

packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js

Lines changed: 12 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -4245,20 +4245,8 @@ export function writePreamble(
42454245
resources.scripts.forEach(flushResourceInPreamble, destination);
42464246
resources.scripts.clear();
42474247

4248-
resources.explicitStylesheetPreloads.forEach(
4249-
flushResourceInPreamble,
4250-
destination,
4251-
);
4252-
resources.explicitStylesheetPreloads.clear();
4253-
4254-
resources.explicitScriptPreloads.forEach(
4255-
flushResourceInPreamble,
4256-
destination,
4257-
);
4258-
resources.explicitScriptPreloads.clear();
4259-
4260-
resources.explicitOtherPreloads.forEach(flushResourceInPreamble, destination);
4261-
resources.explicitOtherPreloads.clear();
4248+
resources.explicitPreloads.forEach(flushResourceInPreamble, destination);
4249+
resources.explicitPreloads.clear();
42624250

42634251
// Write embedding preloadChunks
42644252
const preloadChunks = responseState.preloadChunks;
@@ -4322,14 +4310,8 @@ export function writeHoistables(
43224310
resources.scripts.forEach(flushResourceLate, destination);
43234311
resources.scripts.clear();
43244312

4325-
resources.explicitStylesheetPreloads.forEach(flushResourceLate, destination);
4326-
resources.explicitStylesheetPreloads.clear();
4327-
4328-
resources.explicitScriptPreloads.forEach(flushResourceLate, destination);
4329-
resources.explicitScriptPreloads.clear();
4330-
4331-
resources.explicitOtherPreloads.forEach(flushResourceLate, destination);
4332-
resources.explicitOtherPreloads.clear();
4313+
resources.explicitPreloads.forEach(flushResourceLate, destination);
4314+
resources.explicitPreloads.clear();
43334315

43344316
// Write embedding preloadChunks
43354317
const preloadChunks = responseState.preloadChunks;
@@ -4873,10 +4855,7 @@ export type Resources = {
48734855
precedences: Map<string, Set<StyleResource>>,
48744856
stylePrecedences: Map<string, StyleTagResource>,
48754857
scripts: Set<ScriptResource>,
4876-
explicitStylesheetPreloads: Set<PreloadResource>,
4877-
// explicitImagePreloads: Set<PreloadResource>,
4878-
explicitScriptPreloads: Set<PreloadResource>,
4879-
explicitOtherPreloads: Set<PreloadResource>,
4858+
explicitPreloads: Set<PreloadResource>,
48804859

48814860
// Module-global-like reference for current boundary resources
48824861
boundaryResources: ?BoundaryResources,
@@ -4899,10 +4878,7 @@ export function createResources(): Resources {
48994878
precedences: new Map(),
49004879
stylePrecedences: new Map(),
49014880
scripts: new Set(),
4902-
explicitStylesheetPreloads: new Set(),
4903-
// explicitImagePreloads: new Set(),
4904-
explicitScriptPreloads: new Set(),
4905-
explicitOtherPreloads: new Set(),
4881+
explicitPreloads: new Set(),
49064882

49074883
// like a module global for currently rendering boundary
49084884
boundaryResources: null,
@@ -5189,22 +5165,10 @@ export function preload(href: string, options: PreloadOptions) {
51895165

51905166
pushLinkImpl(resource.chunks, resource.props);
51915167
}
5192-
switch (as) {
5193-
case 'font': {
5194-
resources.fontPreloads.add(resource);
5195-
break;
5196-
}
5197-
case 'style': {
5198-
resources.explicitStylesheetPreloads.add(resource);
5199-
break;
5200-
}
5201-
case 'script': {
5202-
resources.explicitScriptPreloads.add(resource);
5203-
break;
5204-
}
5205-
default: {
5206-
resources.explicitOtherPreloads.add(resource);
5207-
}
5168+
if (as === 'font') {
5169+
resources.fontPreloads.add(resource);
5170+
} else {
5171+
resources.explicitPreloads.add(resource);
52085172
}
52095173
flushResources(request);
52105174
}
@@ -5479,7 +5443,7 @@ function preloadBootstrapScript(
54795443
props,
54805444
};
54815445
resources.preloadsMap.set(key, resource);
5482-
resources.explicitScriptPreloads.add(resource);
5446+
resources.explicitPreloads.add(resource);
54835447
pushLinkImpl(resource.chunks, props);
54845448
}
54855449

@@ -5521,7 +5485,7 @@ function preloadBootstrapModule(
55215485
props,
55225486
};
55235487
resources.preloadsMap.set(key, resource);
5524-
resources.explicitScriptPreloads.add(resource);
5488+
resources.explicitPreloads.add(resource);
55255489
pushLinkImpl(resource.chunks, props);
55265490
return;
55275491
}

packages/react-dom/src/__tests__/ReactDOMFloat-test.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4131,6 +4131,12 @@ body {
41314131
expect(getMeaningfulChildren(document)).toEqual(
41324132
<html>
41334133
<head>
4134+
<link
4135+
rel="preload"
4136+
as="script"
4137+
href="highserver"
4138+
fetchpriority="high"
4139+
/>
41344140
<link
41354141
rel="preload"
41364142
as="style"
@@ -4143,12 +4149,6 @@ body {
41434149
href="autoserver"
41444150
fetchpriority="auto"
41454151
/>
4146-
<link
4147-
rel="preload"
4148-
as="script"
4149-
href="highserver"
4150-
fetchpriority="high"
4151-
/>
41524152
</head>
41534153
<body>hello</body>
41544154
</html>,
@@ -4166,6 +4166,12 @@ body {
41664166
expect(getMeaningfulChildren(document)).toEqual(
41674167
<html>
41684168
<head>
4169+
<link
4170+
rel="preload"
4171+
as="script"
4172+
href="highserver"
4173+
fetchpriority="high"
4174+
/>
41694175
<link
41704176
rel="preload"
41714177
as="style"
@@ -4178,12 +4184,6 @@ body {
41784184
href="autoserver"
41794185
fetchpriority="auto"
41804186
/>
4181-
<link
4182-
rel="preload"
4183-
as="script"
4184-
href="highserver"
4185-
fetchpriority="high"
4186-
/>
41874187
<link
41884188
rel="preload"
41894189
as="script"

0 commit comments

Comments
 (0)