Skip to content

Commit 72343e6

Browse files
committed
[Fizz] Support aborting with Postpone (#28183)
Semantically if you make your reason for aborting a Postpone instance the render should not hit the error pathways but should instead follow the postpone pathways. It's awkward today to actually get your hands on a Postpone instance because you have to catch the throw from postpone and then pass that into `abort()` or `AbortController.abort()` (depending on the renderer API you are using) This change makes it so that in most circumstances if you abort with a postpone the `onPostpone` handler will be called and the Suspense boundaries still pending will be put into client render mode with the appropriate postpone digest to avoid trigger recoverable error pathways on the client. Similar to postponing in the shell during a resume or render however if you abort before the shell is complete in a resume or render we will fatally error. The fatal error is contextualized by React to avoid passing the postpone object itself to the `onError` and related options. DiffTrain build for [1219d57](1219d57)
1 parent 5f66358 commit 72343e6

5 files changed

+52
-16
lines changed

compiled/facebook-www/REVISION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
f3ce87ab650f07774e1df9bc3f8033e023973d10
1+
1219d57fc9fcbf44c873c0b10e5acbd31f613c15

compiled/facebook-www/ReactDOMServer-dev.classic.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ if (__DEV__) {
1919
var React = require("react");
2020
var ReactDOM = require("react-dom");
2121

22-
var ReactVersion = "18.3.0-www-classic-34681660";
22+
var ReactVersion = "18.3.0-www-classic-71ea3c5d";
2323

2424
// This refers to a WWW module.
2525
var warningWWW = require("warning");
@@ -13273,8 +13273,11 @@ if (__DEV__) {
1327313273
if (replay === null) {
1327413274
// We didn't complete the root so we have nothing to show. We can close
1327513275
// the request;
13276-
logRecoverableError(request, error, errorInfo);
13277-
fatalError(request, error);
13276+
{
13277+
logRecoverableError(request, error, errorInfo);
13278+
fatalError(request, error);
13279+
}
13280+
1327813281
return;
1327913282
} else {
1328013283
// If the shell aborts during a replay, that's not a fatal error. Instead
@@ -13283,7 +13286,12 @@ if (__DEV__) {
1328313286
replay.pendingTasks--;
1328413287

1328513288
if (replay.pendingTasks === 0 && replay.nodes.length > 0) {
13286-
var errorDigest = logRecoverableError(request, error, errorInfo);
13289+
var errorDigest;
13290+
13291+
{
13292+
errorDigest = logRecoverableError(request, error, errorInfo);
13293+
}
13294+
1328713295
abortRemainingReplayNodes(
1328813296
request,
1328913297
null,
@@ -13311,7 +13319,11 @@ if (__DEV__) {
1331113319

1331213320
var _errorInfo = getThrownInfo(request, task.componentStack);
1331313321

13314-
var _errorDigest = logRecoverableError(request, error, _errorInfo);
13322+
var _errorDigest;
13323+
13324+
{
13325+
_errorDigest = logRecoverableError(request, error, _errorInfo);
13326+
}
1331513327

1331613328
var errorMessage = error;
1331713329

compiled/facebook-www/ReactDOMServer-dev.modern.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ if (__DEV__) {
1919
var React = require("react");
2020
var ReactDOM = require("react-dom");
2121

22-
var ReactVersion = "18.3.0-www-modern-4d7ad08b";
22+
var ReactVersion = "18.3.0-www-modern-e061c5a2";
2323

2424
// This refers to a WWW module.
2525
var warningWWW = require("warning");
@@ -13001,8 +13001,11 @@ if (__DEV__) {
1300113001
if (replay === null) {
1300213002
// We didn't complete the root so we have nothing to show. We can close
1300313003
// the request;
13004-
logRecoverableError(request, error, errorInfo);
13005-
fatalError(request, error);
13004+
{
13005+
logRecoverableError(request, error, errorInfo);
13006+
fatalError(request, error);
13007+
}
13008+
1300613009
return;
1300713010
} else {
1300813011
// If the shell aborts during a replay, that's not a fatal error. Instead
@@ -13011,7 +13014,12 @@ if (__DEV__) {
1301113014
replay.pendingTasks--;
1301213015

1301313016
if (replay.pendingTasks === 0 && replay.nodes.length > 0) {
13014-
var errorDigest = logRecoverableError(request, error, errorInfo);
13017+
var errorDigest;
13018+
13019+
{
13020+
errorDigest = logRecoverableError(request, error, errorInfo);
13021+
}
13022+
1301513023
abortRemainingReplayNodes(
1301613024
request,
1301713025
null,
@@ -13039,7 +13047,11 @@ if (__DEV__) {
1303913047

1304013048
var _errorInfo = getThrownInfo(request, task.componentStack);
1304113049

13042-
var _errorDigest = logRecoverableError(request, error, _errorInfo);
13050+
var _errorDigest;
13051+
13052+
{
13053+
_errorDigest = logRecoverableError(request, error, _errorInfo);
13054+
}
1304313055

1304413056
var errorMessage = error;
1304513057

compiled/facebook-www/ReactDOMServerStreaming-dev.modern.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12882,8 +12882,11 @@ if (__DEV__) {
1288212882
if (replay === null) {
1288312883
// We didn't complete the root so we have nothing to show. We can close
1288412884
// the request;
12885-
logRecoverableError(request, error, errorInfo);
12886-
fatalError(request, error);
12885+
{
12886+
logRecoverableError(request, error, errorInfo);
12887+
fatalError(request, error);
12888+
}
12889+
1288712890
return;
1288812891
} else {
1288912892
// If the shell aborts during a replay, that's not a fatal error. Instead
@@ -12892,7 +12895,12 @@ if (__DEV__) {
1289212895
replay.pendingTasks--;
1289312896

1289412897
if (replay.pendingTasks === 0 && replay.nodes.length > 0) {
12895-
var errorDigest = logRecoverableError(request, error, errorInfo);
12898+
var errorDigest;
12899+
12900+
{
12901+
errorDigest = logRecoverableError(request, error, errorInfo);
12902+
}
12903+
1289612904
abortRemainingReplayNodes(
1289712905
request,
1289812906
null,
@@ -12920,7 +12928,11 @@ if (__DEV__) {
1292012928

1292112929
var _errorInfo = getThrownInfo(request, task.componentStack);
1292212930

12923-
var _errorDigest = logRecoverableError(request, error, _errorInfo);
12931+
var _errorDigest;
12932+
12933+
{
12934+
_errorDigest = logRecoverableError(request, error, _errorInfo);
12935+
}
1292412936

1292512937
var errorMessage = error;
1292612938

compiled/facebook-www/ReactServer-prod.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,4 +474,4 @@ exports.useId = function () {
474474
exports.useMemo = function (create, deps) {
475475
return ReactCurrentDispatcher.current.useMemo(create, deps);
476476
};
477-
exports.version = "18.3.0-www-modern-4d7ad08b";
477+
exports.version = "18.3.0-www-modern-e061c5a2";

0 commit comments

Comments
 (0)