Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit acb6876

Browse files
committed
Include regular stack trace in serialized errors from Fizz (#28684)
We previously only included the component stack. Cleaned up the fields in Fizz server that wasn't using consistent hidden classes in dev vs prod. Added a prefix to errors serialized from server rendering. It can be a bit confusing to see where this error came from otherwise since it didn't come from elsewhere on the client. It's really kind of confusing with other recoverable errors that happen on the client too. DiffTrain build for commit b9149cc.
1 parent e4f3fc3 commit acb6876

File tree

10 files changed

+64
-40
lines changed

10 files changed

+64
-40
lines changed

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-dev.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<9224411efbfa8776e575f8317a5cebc6>>
10+
* @generated SignedSource<<4c8833d67d5c40def402e9b24fc93313>>
1111
*/
1212

1313
"use strict";
@@ -15825,7 +15825,7 @@ if (__DEV__) {
1582515825
// get an update and we'll never be able to hydrate the final content. Let's just try the
1582615826
// client side render instead.
1582715827
var digest;
15828-
var message, stack;
15828+
var message, stack, componentStack;
1582915829

1583015830
{
1583115831
var _getSuspenseInstanceF =
@@ -15834,6 +15834,7 @@ if (__DEV__) {
1583415834
digest = _getSuspenseInstanceF.digest;
1583515835
message = _getSuspenseInstanceF.message;
1583615836
stack = _getSuspenseInstanceF.stack;
15837+
componentStack = _getSuspenseInstanceF.componentStack;
1583715838
}
1583815839

1583915840
var capturedValue = null; // TODO: Figure out a better signal than encoding a magic digest value.
@@ -15847,13 +15848,18 @@ if (__DEV__) {
1584715848
} else {
1584815849
error = new Error(
1584915850
"The server could not finish this Suspense boundary, likely " +
15850-
"due to an error during server rendering. Switched to " +
15851-
"client rendering."
15851+
"due to an error during server rendering. " +
15852+
"Switched to client rendering."
1585215853
);
15853-
}
15854+
} // Replace the stack with the server stack
1585415855

15856+
error.stack = stack || "";
1585515857
error.digest = digest;
15856-
capturedValue = createCapturedValueFromError(error, digest, stack);
15858+
capturedValue = createCapturedValueFromError(
15859+
error,
15860+
digest,
15861+
componentStack
15862+
);
1585715863
}
1585815864

1585915865
return retrySuspenseComponentWithoutHydrating(
@@ -26832,7 +26838,7 @@ if (__DEV__) {
2683226838
return root;
2683326839
}
2683426840

26835-
var ReactVersion = "19.0.0-canary-74c595da";
26841+
var ReactVersion = "19.0.0-canary-90c44db1";
2683626842

2683726843
// Might add PROFILE later.
2683826844

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-prod.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<389fe4c4dd5a3dc2a002349defa47aea>>
10+
* @generated SignedSource<<7ea0ba771a3dafe13783264b14f1cffd>>
1111
*/
1212

1313
"use strict";
@@ -4462,6 +4462,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
44624462
(nextProps = Error(
44634463
"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."
44644464
)),
4465+
(nextProps.stack = ""),
44654466
(nextProps.digest = JSCompiler_temp),
44664467
(JSCompiler_temp = createCapturedValueFromError(
44674468
nextProps,
@@ -9219,7 +9220,7 @@ var devToolsConfig$jscomp$inline_1002 = {
92199220
throw Error("TestRenderer does not support findFiberByHostInstance()");
92209221
},
92219222
bundleType: 0,
9222-
version: "19.0.0-canary-dd31caf0",
9223+
version: "19.0.0-canary-0ee8586e",
92239224
rendererPackageName: "react-test-renderer"
92249225
};
92259226
var internals$jscomp$inline_1190 = {
@@ -9250,7 +9251,7 @@ var internals$jscomp$inline_1190 = {
92509251
scheduleRoot: null,
92519252
setRefreshHandler: null,
92529253
getCurrentFiber: null,
9253-
reconcilerVersion: "19.0.0-canary-dd31caf0"
9254+
reconcilerVersion: "19.0.0-canary-0ee8586e"
92549255
};
92559256
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
92569257
var hook$jscomp$inline_1191 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-profiling.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<81674d0a8c35b33e23ad87b78ab22d08>>
10+
* @generated SignedSource<<0102d8d01b7c7efdce15387c6fa804bc>>
1111
*/
1212

1313
"use strict";
@@ -4633,6 +4633,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
46334633
(nextProps = Error(
46344634
"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."
46354635
)),
4636+
(nextProps.stack = ""),
46364637
(nextProps.digest = JSCompiler_temp),
46374638
(JSCompiler_temp = createCapturedValueFromError(
46384639
nextProps,
@@ -9837,7 +9838,7 @@ var devToolsConfig$jscomp$inline_1086 = {
98379838
throw Error("TestRenderer does not support findFiberByHostInstance()");
98389839
},
98399840
bundleType: 0,
9840-
version: "19.0.0-canary-8fc8d975",
9841+
version: "19.0.0-canary-8b0c34a5",
98419842
rendererPackageName: "react-test-renderer"
98429843
};
98439844
(function (internals) {
@@ -9881,7 +9882,7 @@ var devToolsConfig$jscomp$inline_1086 = {
98819882
scheduleRoot: null,
98829883
setRefreshHandler: null,
98839884
getCurrentFiber: null,
9884-
reconcilerVersion: "19.0.0-canary-8fc8d975"
9885+
reconcilerVersion: "19.0.0-canary-8b0c34a5"
98859886
});
98869887
exports._Scheduler = Scheduler;
98879888
exports.act = act;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5d4b7587da52dd81bc5c366b909c4511e2970cd1
1+
b9149cc6e6442389accf1f7c34a77ba2e6e52b5e

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-dev.fb.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<be8f8e1152affd8740c0c745720e9e1a>>
10+
* @generated SignedSource<<569c28c9c7718b755c53912a8e17a0bd>>
1111
*/
1212

1313
"use strict";
@@ -19485,7 +19485,7 @@ to return true:wantsResponderID| |
1948519485
// get an update and we'll never be able to hydrate the final content. Let's just try the
1948619486
// client side render instead.
1948719487
var digest;
19488-
var message, stack;
19488+
var message, stack, componentStack;
1948919489

1949019490
{
1949119491
var _getSuspenseInstanceF =
@@ -19494,6 +19494,7 @@ to return true:wantsResponderID| |
1949419494
digest = _getSuspenseInstanceF.digest;
1949519495
message = _getSuspenseInstanceF.message;
1949619496
stack = _getSuspenseInstanceF.stack;
19497+
componentStack = _getSuspenseInstanceF.componentStack;
1949719498
}
1949819499

1949919500
var capturedValue = null; // TODO: Figure out a better signal than encoding a magic digest value.
@@ -19507,13 +19508,18 @@ to return true:wantsResponderID| |
1950719508
} else {
1950819509
error = new Error(
1950919510
"The server could not finish this Suspense boundary, likely " +
19510-
"due to an error during server rendering. Switched to " +
19511-
"client rendering."
19511+
"due to an error during server rendering. " +
19512+
"Switched to client rendering."
1951219513
);
19513-
}
19514+
} // Replace the stack with the server stack
1951419515

19516+
error.stack = stack || "";
1951519517
error.digest = digest;
19516-
capturedValue = createCapturedValueFromError(error, digest, stack);
19518+
capturedValue = createCapturedValueFromError(
19519+
error,
19520+
digest,
19521+
componentStack
19522+
);
1951719523
}
1951819524

1951919525
return retrySuspenseComponentWithoutHydrating(
@@ -30602,7 +30608,7 @@ to return true:wantsResponderID| |
3060230608
return root;
3060330609
}
3060430610

30605-
var ReactVersion = "19.0.0-canary-89cc0451";
30611+
var ReactVersion = "19.0.0-canary-f9a3ca70";
3060630612

3060730613
function createPortal$1(
3060830614
children,

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-prod.fb.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<6caf0298fd44810887edd334677ec6ef>>
10+
* @generated SignedSource<<6f0e7861f6743b3815fa3d44454d6dbd>>
1111
*/
1212

1313
"use strict";
@@ -6009,6 +6009,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
60096009
(nextProps = Error(
60106010
"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."
60116011
)),
6012+
(nextProps.stack = ""),
60126013
(nextProps.digest = JSCompiler_temp),
60136014
(JSCompiler_temp = createCapturedValueFromError(
60146015
nextProps,
@@ -10638,7 +10639,7 @@ var roots = new Map(),
1063810639
devToolsConfig$jscomp$inline_1104 = {
1063910640
findFiberByHostInstance: getInstanceFromNode,
1064010641
bundleType: 0,
10641-
version: "19.0.0-canary-3aaf7c49",
10642+
version: "19.0.0-canary-1065157b",
1064210643
rendererPackageName: "react-native-renderer",
1064310644
rendererConfig: {
1064410645
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10681,7 +10682,7 @@ var internals$jscomp$inline_1341 = {
1068110682
scheduleRoot: null,
1068210683
setRefreshHandler: null,
1068310684
getCurrentFiber: null,
10684-
reconcilerVersion: "19.0.0-canary-3aaf7c49"
10685+
reconcilerVersion: "19.0.0-canary-1065157b"
1068510686
};
1068610687
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1068710688
var hook$jscomp$inline_1342 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<7eba5ed56d62fd3b39e8d3ac4bd0561c>>
10+
* @generated SignedSource<<9dbe74e43cd78023236dba5059713bf8>>
1111
*/
1212

1313
"use strict";
@@ -6215,6 +6215,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
62156215
(nextProps = Error(
62166216
"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."
62176217
)),
6218+
(nextProps.stack = ""),
62186219
(nextProps.digest = JSCompiler_temp),
62196220
(JSCompiler_temp = createCapturedValueFromError(
62206221
nextProps,
@@ -11345,7 +11346,7 @@ var roots = new Map(),
1134511346
devToolsConfig$jscomp$inline_1186 = {
1134611347
findFiberByHostInstance: getInstanceFromNode,
1134711348
bundleType: 0,
11348-
version: "19.0.0-canary-270b90fe",
11349+
version: "19.0.0-canary-feeb7459",
1134911350
rendererPackageName: "react-native-renderer",
1135011351
rendererConfig: {
1135111352
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -11401,7 +11402,7 @@ var roots = new Map(),
1140111402
scheduleRoot: null,
1140211403
setRefreshHandler: null,
1140311404
getCurrentFiber: null,
11404-
reconcilerVersion: "19.0.0-canary-270b90fe"
11405+
reconcilerVersion: "19.0.0-canary-feeb7459"
1140511406
});
1140611407
exports.createPortal = function (children, containerTag) {
1140711408
return createPortal$1(

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<671deef2ff146cb90557b5929b5a868f>>
10+
* @generated SignedSource<<29c94384161e3a1a33fb8ae6d6155a35>>
1111
*/
1212

1313
"use strict";
@@ -19756,7 +19756,7 @@ to return true:wantsResponderID| |
1975619756
// get an update and we'll never be able to hydrate the final content. Let's just try the
1975719757
// client side render instead.
1975819758
var digest;
19759-
var message, stack;
19759+
var message, stack, componentStack;
1976019760

1976119761
{
1976219762
var _getSuspenseInstanceF =
@@ -19765,6 +19765,7 @@ to return true:wantsResponderID| |
1976519765
digest = _getSuspenseInstanceF.digest;
1976619766
message = _getSuspenseInstanceF.message;
1976719767
stack = _getSuspenseInstanceF.stack;
19768+
componentStack = _getSuspenseInstanceF.componentStack;
1976819769
}
1976919770

1977019771
var capturedValue = null; // TODO: Figure out a better signal than encoding a magic digest value.
@@ -19778,13 +19779,18 @@ to return true:wantsResponderID| |
1977819779
} else {
1977919780
error = new Error(
1978019781
"The server could not finish this Suspense boundary, likely " +
19781-
"due to an error during server rendering. Switched to " +
19782-
"client rendering."
19782+
"due to an error during server rendering. " +
19783+
"Switched to client rendering."
1978319784
);
19784-
}
19785+
} // Replace the stack with the server stack
1978519786

19787+
error.stack = stack || "";
1978619788
error.digest = digest;
19787-
capturedValue = createCapturedValueFromError(error, digest, stack);
19789+
capturedValue = createCapturedValueFromError(
19790+
error,
19791+
digest,
19792+
componentStack
19793+
);
1978819794
}
1978919795

1979019796
return retrySuspenseComponentWithoutHydrating(
@@ -31042,7 +31048,7 @@ to return true:wantsResponderID| |
3104231048
return root;
3104331049
}
3104431050

31045-
var ReactVersion = "19.0.0-canary-5f8abb5a";
31051+
var ReactVersion = "19.0.0-canary-366999b3";
3104631052

3104731053
function createPortal$1(
3104831054
children,

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<01cbfec88e8a21340f3c759d699dada0>>
10+
* @generated SignedSource<<6b9cf5f3bb5fc8873d7404b36e5c3753>>
1111
*/
1212

1313
"use strict";
@@ -6074,6 +6074,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
60746074
(nextProps = Error(
60756075
"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."
60766076
)),
6077+
(nextProps.stack = ""),
60776078
(nextProps.digest = JSCompiler_temp),
60786079
(JSCompiler_temp = createCapturedValueFromError(
60796080
nextProps,
@@ -10854,7 +10855,7 @@ var roots = new Map(),
1085410855
devToolsConfig$jscomp$inline_1171 = {
1085510856
findFiberByHostInstance: getInstanceFromTag,
1085610857
bundleType: 0,
10857-
version: "19.0.0-canary-bbd4ca50",
10858+
version: "19.0.0-canary-2d04f3bb",
1085810859
rendererPackageName: "react-native-renderer",
1085910860
rendererConfig: {
1086010861
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10897,7 +10898,7 @@ var internals$jscomp$inline_1422 = {
1089710898
scheduleRoot: null,
1089810899
setRefreshHandler: null,
1089910900
getCurrentFiber: null,
10900-
reconcilerVersion: "19.0.0-canary-bbd4ca50"
10901+
reconcilerVersion: "19.0.0-canary-2d04f3bb"
1090110902
};
1090210903
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1090310904
var hook$jscomp$inline_1423 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.fb.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<8e1902f82cf3871cb88745e438768098>>
10+
* @generated SignedSource<<2fd9d14d7cf1c89a35f0ee934ecc3eda>>
1111
*/
1212

1313
"use strict";
@@ -6280,6 +6280,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) {
62806280
(nextProps = Error(
62816281
"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."
62826282
)),
6283+
(nextProps.stack = ""),
62836284
(nextProps.digest = JSCompiler_temp),
62846285
(JSCompiler_temp = createCapturedValueFromError(
62856286
nextProps,
@@ -11562,7 +11563,7 @@ var roots = new Map(),
1156211563
devToolsConfig$jscomp$inline_1253 = {
1156311564
findFiberByHostInstance: getInstanceFromTag,
1156411565
bundleType: 0,
11565-
version: "19.0.0-canary-0502e2a7",
11566+
version: "19.0.0-canary-7e371444",
1156611567
rendererPackageName: "react-native-renderer",
1156711568
rendererConfig: {
1156811569
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -11618,7 +11619,7 @@ var roots = new Map(),
1161811619
scheduleRoot: null,
1161911620
setRefreshHandler: null,
1162011621
getCurrentFiber: null,
11621-
reconcilerVersion: "19.0.0-canary-0502e2a7"
11622+
reconcilerVersion: "19.0.0-canary-7e371444"
1162211623
});
1162311624
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {
1162411625
computeComponentStackForErrorReporting: function (reactTag) {

0 commit comments

Comments
 (0)