Skip to content

Commit

Permalink
[Flight] Start initial work immediately (#30961)
Browse files Browse the repository at this point in the history
In a past update we made render and prerender have different work
scheduling behavior because these methods are meant to be used in
differeent environments with different performance tradeoffs in mind.
For instance to prioritize streaming we want to allow as much IO to
complete before triggering a round of work because we want to flush as
few intermediate UI states. With Prerendering there will never be any
intermediate UI states so we can more aggressively render tasks as they
complete.

One thing we've found is that even during render we should ideally kick
off work immediately. This update normalizes the intitial work for
render and prerender to start in a microtask. Choosing microtask over
sync is somewhat arbitrary but there really isn't a reason to make them
different between render/prerender so for now we'll unify them and keep
it as a microtask for now.

This change also updates pinging behavior. If the request is still in
the initial task that spawned it then pings will schedule on the
microtask queue. This allows immediately available async APIs to resolve
right away. The concern with doing this for normal pings is that it
might crowd out IO events but since this is the initial task there would
be IO to already be scheduled.

DiffTrain build for [fc5ef50](fc5ef50)
  • Loading branch information
gnoff committed Sep 14, 2024
1 parent 36ded71 commit a53353a
Show file tree
Hide file tree
Showing 34 changed files with 186 additions and 180 deletions.
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b75cc078c5fda0d57135523a7a2f4e8d1536472f
fc5ef50da8e975a569622d477f1fed54cb8b193d
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION_TRANSFORMS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b75cc078c5fda0d57135523a7a2f4e8d1536472f
fc5ef50da8e975a569622d477f1fed54cb8b193d
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -2001,7 +2001,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.0.0-www-classic-b75cc078-20240914";
exports.version = "19.0.0-www-classic-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -1981,7 +1981,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.0.0-www-modern-b75cc078-20240914";
exports.version = "19.0.0-www-modern-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,4 +665,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-classic-b75cc078-20240914";
exports.version = "19.0.0-www-classic-fc5ef50d-20240914";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,4 +665,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-modern-b75cc078-20240914";
exports.version = "19.0.0-www-modern-fc5ef50d-20240914";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-classic-b75cc078-20240914";
exports.version = "19.0.0-www-classic-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-modern-b75cc078-20240914";
exports.version = "19.0.0-www-modern-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -17121,11 +17121,11 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-classic-b75cc078-20240914",
version: "19.0.0-www-classic-fc5ef50d-20240914",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getInstanceFromNode,
reconcilerVersion: "19.0.0-www-classic-b75cc078-20240914"
reconcilerVersion: "19.0.0-www-classic-fc5ef50d-20240914"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -17159,7 +17159,7 @@ __DEV__ &&
exports.Shape = Shape;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-classic-b75cc078-20240914";
exports.version = "19.0.0-www-classic-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -16567,11 +16567,11 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-modern-b75cc078-20240914",
version: "19.0.0-www-modern-fc5ef50d-20240914",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getInstanceFromNode,
reconcilerVersion: "19.0.0-www-modern-b75cc078-20240914"
reconcilerVersion: "19.0.0-www-modern-fc5ef50d-20240914"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -16605,7 +16605,7 @@ __DEV__ &&
exports.Shape = Shape;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-modern-b75cc078-20240914";
exports.version = "19.0.0-www-modern-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -10883,13 +10883,13 @@ var slice = Array.prototype.slice,
})(React.Component);
var internals$jscomp$inline_1424 = {
bundleType: 0,
version: "19.0.0-www-classic-b75cc078-20240914",
version: "19.0.0-www-classic-fc5ef50d-20240914",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: function () {
return null;
},
reconcilerVersion: "19.0.0-www-classic-b75cc078-20240914"
reconcilerVersion: "19.0.0-www-classic-fc5ef50d-20240914"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1425 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand All @@ -10915,4 +10915,4 @@ exports.RadialGradient = RadialGradient;
exports.Shape = TYPES.SHAPE;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-classic-b75cc078-20240914";
exports.version = "19.0.0-www-classic-fc5ef50d-20240914";
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -10397,13 +10397,13 @@ var slice = Array.prototype.slice,
})(React.Component);
var internals$jscomp$inline_1416 = {
bundleType: 0,
version: "19.0.0-www-modern-b75cc078-20240914",
version: "19.0.0-www-modern-fc5ef50d-20240914",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: function () {
return null;
},
reconcilerVersion: "19.0.0-www-modern-b75cc078-20240914"
reconcilerVersion: "19.0.0-www-modern-fc5ef50d-20240914"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1417 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand All @@ -10429,4 +10429,4 @@ exports.RadialGradient = RadialGradient;
exports.Shape = TYPES.SHAPE;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-modern-b75cc078-20240914";
exports.version = "19.0.0-www-modern-fc5ef50d-20240914";
30 changes: 14 additions & 16 deletions compiled/facebook-www/ReactDOM-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -18675,43 +18675,41 @@ __DEV__ &&
: !1;
}
function getActiveElementDeep(containerInfo) {
var $jscomp$optchain$tmpm1084463550$1, $jscomp$nullish$tmp0;
var $jscomp$optchain$tmpm615502224$1, $jscomp$nullish$tmp0;
containerInfo =
null !=
($jscomp$nullish$tmp0 =
null == containerInfo
? void 0
: null ==
($jscomp$optchain$tmpm1084463550$1 =
containerInfo.ownerDocument)
($jscomp$optchain$tmpm615502224$1 = containerInfo.ownerDocument)
? void 0
: $jscomp$optchain$tmpm1084463550$1.defaultView)
: $jscomp$optchain$tmpm615502224$1.defaultView)
? $jscomp$nullish$tmp0
: window;
for (
$jscomp$optchain$tmpm1084463550$1 = getActiveElement(
$jscomp$optchain$tmpm615502224$1 = getActiveElement(
containerInfo.document
);
$jscomp$optchain$tmpm1084463550$1 instanceof
$jscomp$optchain$tmpm615502224$1 instanceof
containerInfo.HTMLIFrameElement;

) {
try {
var JSCompiler_inline_result =
"string" ===
typeof $jscomp$optchain$tmpm1084463550$1.contentWindow.location
.href;
typeof $jscomp$optchain$tmpm615502224$1.contentWindow.location.href;
} catch (err) {
JSCompiler_inline_result = !1;
}
if (JSCompiler_inline_result)
containerInfo = $jscomp$optchain$tmpm1084463550$1.contentWindow;
containerInfo = $jscomp$optchain$tmpm615502224$1.contentWindow;
else break;
$jscomp$optchain$tmpm1084463550$1 = getActiveElement(
$jscomp$optchain$tmpm615502224$1 = getActiveElement(
containerInfo.document
);
}
return $jscomp$optchain$tmpm1084463550$1;
return $jscomp$optchain$tmpm615502224$1;
}
function hasSelectionCapabilities(elem) {
var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
Expand Down Expand Up @@ -27877,11 +27875,11 @@ __DEV__ &&
: flushSyncErrorInBuildsThatSupportLegacyMode;
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-www-classic-b75cc078-20240914" !== isomorphicReactPackageVersion)
if ("19.0.0-www-classic-fc5ef50d-20240914" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.0.0-www-classic-b75cc078-20240914\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.0.0-www-classic-fc5ef50d-20240914\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
Expand Down Expand Up @@ -27925,11 +27923,11 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-classic-b75cc078-20240914",
version: "19.0.0-www-classic-fc5ef50d-20240914",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getClosestInstanceFromNode,
reconcilerVersion: "19.0.0-www-classic-b75cc078-20240914"
reconcilerVersion: "19.0.0-www-classic-fc5ef50d-20240914"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -28582,7 +28580,7 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.0.0-www-classic-b75cc078-20240914";
exports.version = "19.0.0-www-classic-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
28 changes: 14 additions & 14 deletions compiled/facebook-www/ReactDOM-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -18009,41 +18009,41 @@ __DEV__ &&
: !1;
}
function getActiveElementDeep(containerInfo) {
var $jscomp$optchain$tmp1906584142$1, $jscomp$nullish$tmp0;
var $jscomp$optchain$tmpm82189054$1, $jscomp$nullish$tmp0;
containerInfo =
null !=
($jscomp$nullish$tmp0 =
null == containerInfo
? void 0
: null ==
($jscomp$optchain$tmp1906584142$1 = containerInfo.ownerDocument)
($jscomp$optchain$tmpm82189054$1 = containerInfo.ownerDocument)
? void 0
: $jscomp$optchain$tmp1906584142$1.defaultView)
: $jscomp$optchain$tmpm82189054$1.defaultView)
? $jscomp$nullish$tmp0
: window;
for (
$jscomp$optchain$tmp1906584142$1 = getActiveElement(
$jscomp$optchain$tmpm82189054$1 = getActiveElement(
containerInfo.document
);
$jscomp$optchain$tmp1906584142$1 instanceof
$jscomp$optchain$tmpm82189054$1 instanceof
containerInfo.HTMLIFrameElement;

) {
try {
var JSCompiler_inline_result =
"string" ===
typeof $jscomp$optchain$tmp1906584142$1.contentWindow.location.href;
typeof $jscomp$optchain$tmpm82189054$1.contentWindow.location.href;
} catch (err) {
JSCompiler_inline_result = !1;
}
if (JSCompiler_inline_result)
containerInfo = $jscomp$optchain$tmp1906584142$1.contentWindow;
containerInfo = $jscomp$optchain$tmpm82189054$1.contentWindow;
else break;
$jscomp$optchain$tmp1906584142$1 = getActiveElement(
$jscomp$optchain$tmpm82189054$1 = getActiveElement(
containerInfo.document
);
}
return $jscomp$optchain$tmp1906584142$1;
return $jscomp$optchain$tmpm82189054$1;
}
function hasSelectionCapabilities(elem) {
var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
Expand Down Expand Up @@ -26992,11 +26992,11 @@ __DEV__ &&
return_targetInst = null;
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-www-modern-b75cc078-20240914" !== isomorphicReactPackageVersion)
if ("19.0.0-www-modern-fc5ef50d-20240914" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.0.0-www-modern-b75cc078-20240914\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.0.0-www-modern-fc5ef50d-20240914\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
Expand Down Expand Up @@ -27039,11 +27039,11 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-modern-b75cc078-20240914",
version: "19.0.0-www-modern-fc5ef50d-20240914",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getClosestInstanceFromNode,
reconcilerVersion: "19.0.0-www-modern-b75cc078-20240914"
reconcilerVersion: "19.0.0-www-modern-fc5ef50d-20240914"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -27648,7 +27648,7 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.0.0-www-modern-b75cc078-20240914";
exports.version = "19.0.0-www-modern-fc5ef50d-20240914";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
Loading

0 comments on commit a53353a

Please sign in to comment.