Skip to content

Commit

Permalink
scripts should not be preloaded over other arbitrary preloads. The po…
Browse files Browse the repository at this point in the history
…int 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
  • Loading branch information
gnoff committed Aug 4, 2023
1 parent c67849e commit 29f352c
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 60 deletions.
60 changes: 12 additions & 48 deletions packages/react-dom-bindings/src/server/ReactFizzConfigDOM.js
Original file line number Diff line number Diff line change
Expand Up @@ -4245,20 +4245,8 @@ export function writePreamble(
resources.scripts.forEach(flushResourceInPreamble, destination);
resources.scripts.clear();

resources.explicitStylesheetPreloads.forEach(
flushResourceInPreamble,
destination,
);
resources.explicitStylesheetPreloads.clear();

resources.explicitScriptPreloads.forEach(
flushResourceInPreamble,
destination,
);
resources.explicitScriptPreloads.clear();

resources.explicitOtherPreloads.forEach(flushResourceInPreamble, destination);
resources.explicitOtherPreloads.clear();
resources.explicitPreloads.forEach(flushResourceInPreamble, destination);
resources.explicitPreloads.clear();

// Write embedding preloadChunks
const preloadChunks = responseState.preloadChunks;
Expand Down Expand Up @@ -4322,14 +4310,8 @@ export function writeHoistables(
resources.scripts.forEach(flushResourceLate, destination);
resources.scripts.clear();

resources.explicitStylesheetPreloads.forEach(flushResourceLate, destination);
resources.explicitStylesheetPreloads.clear();

resources.explicitScriptPreloads.forEach(flushResourceLate, destination);
resources.explicitScriptPreloads.clear();

resources.explicitOtherPreloads.forEach(flushResourceLate, destination);
resources.explicitOtherPreloads.clear();
resources.explicitPreloads.forEach(flushResourceLate, destination);
resources.explicitPreloads.clear();

// Write embedding preloadChunks
const preloadChunks = responseState.preloadChunks;
Expand Down Expand Up @@ -4873,10 +4855,7 @@ export type Resources = {
precedences: Map<string, Set<StyleResource>>,
stylePrecedences: Map<string, StyleTagResource>,
scripts: Set<ScriptResource>,
explicitStylesheetPreloads: Set<PreloadResource>,
// explicitImagePreloads: Set<PreloadResource>,
explicitScriptPreloads: Set<PreloadResource>,
explicitOtherPreloads: Set<PreloadResource>,
explicitPreloads: Set<PreloadResource>,

// Module-global-like reference for current boundary resources
boundaryResources: ?BoundaryResources,
Expand All @@ -4899,10 +4878,7 @@ export function createResources(): Resources {
precedences: new Map(),
stylePrecedences: new Map(),
scripts: new Set(),
explicitStylesheetPreloads: new Set(),
// explicitImagePreloads: new Set(),
explicitScriptPreloads: new Set(),
explicitOtherPreloads: new Set(),
explicitPreloads: new Set(),

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

pushLinkImpl(resource.chunks, resource.props);
}
switch (as) {
case 'font': {
resources.fontPreloads.add(resource);
break;
}
case 'style': {
resources.explicitStylesheetPreloads.add(resource);
break;
}
case 'script': {
resources.explicitScriptPreloads.add(resource);
break;
}
default: {
resources.explicitOtherPreloads.add(resource);
}
if (as === 'font') {
resources.fontPreloads.add(resource);
} else {
resources.explicitPreloads.add(resource);
}
flushResources(request);
}
Expand Down Expand Up @@ -5479,7 +5443,7 @@ function preloadBootstrapScript(
props,
};
resources.preloadsMap.set(key, resource);
resources.explicitScriptPreloads.add(resource);
resources.explicitPreloads.add(resource);
pushLinkImpl(resource.chunks, props);
}

Expand Down Expand Up @@ -5521,7 +5485,7 @@ function preloadBootstrapModule(
props,
};
resources.preloadsMap.set(key, resource);
resources.explicitScriptPreloads.add(resource);
resources.explicitPreloads.add(resource);
pushLinkImpl(resource.chunks, props);
return;
}
Expand Down
24 changes: 12 additions & 12 deletions packages/react-dom/src/__tests__/ReactDOMFloat-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4131,6 +4131,12 @@ body {
expect(getMeaningfulChildren(document)).toEqual(
<html>
<head>
<link
rel="preload"
as="script"
href="highserver"
fetchpriority="high"
/>
<link
rel="preload"
as="style"
Expand All @@ -4143,12 +4149,6 @@ body {
href="autoserver"
fetchpriority="auto"
/>
<link
rel="preload"
as="script"
href="highserver"
fetchpriority="high"
/>
</head>
<body>hello</body>
</html>,
Expand All @@ -4166,6 +4166,12 @@ body {
expect(getMeaningfulChildren(document)).toEqual(
<html>
<head>
<link
rel="preload"
as="script"
href="highserver"
fetchpriority="high"
/>
<link
rel="preload"
as="style"
Expand All @@ -4178,12 +4184,6 @@ body {
href="autoserver"
fetchpriority="auto"
/>
<link
rel="preload"
as="script"
href="highserver"
fetchpriority="high"
/>
<link
rel="preload"
as="script"
Expand Down

0 comments on commit 29f352c

Please sign in to comment.