Skip to content

Commit db59a3e

Browse files
committed
[Fiber] Transfer _debugInfo from Arrays, Lazy, Thenables and Elements to the inner Fibers. (#28286)
That way we can use it for debug information like component stacks and DevTools. I used an extra stack argument in Child Fiber to track this as it's flowing down since it's not just elements where we have this info readily available but parent arrays and lazy can merge this into the Fiber too. It's not great that this is a dev-only argument and I could track it globally but seems more likely to make mistakes. It is possible for the same debug info to appear for multiple child fibers like when it's attached to a fragment or a lazy that resolves to a fragment at the root. The object identity could be used in these scenarios to infer if that's really one server component that's a parent of all children or if each child has a server component with the same name. This is effectively a public API because you can use it to stash information on Promises from a third-party service - not just Server Components. I started outline the types for this for some things I was planning to add but it's not final. I was also planning on storing it from `use(thenable)` for when you suspend on a Promise. However, I realized that there's no Hook instance for those to stash it on. So it might need a separate data structure to stash the previous pass over of `use()` that resets each render. No tests yet since I didn't want to test internals but it'll be covered once we have debugging features like component stacks. DiffTrain build for commit 3f93ca1.
1 parent 1739b31 commit db59a3e

File tree

13 files changed

+841
-287
lines changed

13 files changed

+841
-287
lines changed

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

Lines changed: 245 additions & 49 deletions
Large diffs are not rendered by default.

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

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<6223b3402ebe91d202065e784f2d9af4>>
10+
* @generated SignedSource<<a5d2887a83dd5c097859cdc32c0ed8e8>>
1111
*/
1212

1313
"use strict";
@@ -2108,7 +2108,7 @@ function createChildReconciler(shouldTrackSideEffects) {
21082108
case REACT_LAZY_TYPE:
21092109
return (
21102110
(child = newChild._init),
2111-
reconcileChildFibers(
2111+
reconcileChildFibersImpl(
21122112
returnFiber,
21132113
currentFirstChild,
21142114
child(newChild._payload),
@@ -2165,12 +2165,7 @@ function createChildReconciler(shouldTrackSideEffects) {
21652165
placeSingleChild(returnFiber))
21662166
: deleteRemainingChildren(returnFiber, currentFirstChild);
21672167
}
2168-
function reconcileChildFibers(
2169-
returnFiber,
2170-
currentFirstChild,
2171-
newChild,
2172-
lanes
2173-
) {
2168+
return function (returnFiber, currentFirstChild, newChild, lanes) {
21742169
thenableIndexCounter$1 = 0;
21752170
returnFiber = reconcileChildFibersImpl(
21762171
returnFiber,
@@ -2180,8 +2175,7 @@ function createChildReconciler(shouldTrackSideEffects) {
21802175
);
21812176
thenableState$1 = null;
21822177
return returnFiber;
2183-
}
2184-
return reconcileChildFibers;
2178+
};
21852179
}
21862180
var reconcileChildFibers = createChildReconciler(!0),
21872181
mountChildFibers = createChildReconciler(!1),
@@ -9168,19 +9162,19 @@ function wrapFiber(fiber) {
91689162
fiberToWrapper.set(fiber, wrapper));
91699163
return wrapper;
91709164
}
9171-
var devToolsConfig$jscomp$inline_1023 = {
9165+
var devToolsConfig$jscomp$inline_1025 = {
91729166
findFiberByHostInstance: function () {
91739167
throw Error("TestRenderer does not support findFiberByHostInstance()");
91749168
},
91759169
bundleType: 0,
9176-
version: "18.3.0-canary-9e7944f67-20240212",
9170+
version: "18.3.0-canary-3f93ca1c8-20240212",
91779171
rendererPackageName: "react-test-renderer"
91789172
};
9179-
var internals$jscomp$inline_1204 = {
9180-
bundleType: devToolsConfig$jscomp$inline_1023.bundleType,
9181-
version: devToolsConfig$jscomp$inline_1023.version,
9182-
rendererPackageName: devToolsConfig$jscomp$inline_1023.rendererPackageName,
9183-
rendererConfig: devToolsConfig$jscomp$inline_1023.rendererConfig,
9173+
var internals$jscomp$inline_1206 = {
9174+
bundleType: devToolsConfig$jscomp$inline_1025.bundleType,
9175+
version: devToolsConfig$jscomp$inline_1025.version,
9176+
rendererPackageName: devToolsConfig$jscomp$inline_1025.rendererPackageName,
9177+
rendererConfig: devToolsConfig$jscomp$inline_1025.rendererConfig,
91849178
overrideHookState: null,
91859179
overrideHookStateDeletePath: null,
91869180
overrideHookStateRenamePath: null,
@@ -9197,26 +9191,26 @@ var internals$jscomp$inline_1204 = {
91979191
return null === fiber ? null : fiber.stateNode;
91989192
},
91999193
findFiberByHostInstance:
9200-
devToolsConfig$jscomp$inline_1023.findFiberByHostInstance ||
9194+
devToolsConfig$jscomp$inline_1025.findFiberByHostInstance ||
92019195
emptyFindFiberByHostInstance,
92029196
findHostInstancesForRefresh: null,
92039197
scheduleRefresh: null,
92049198
scheduleRoot: null,
92059199
setRefreshHandler: null,
92069200
getCurrentFiber: null,
9207-
reconcilerVersion: "18.3.0-canary-9e7944f67-20240212"
9201+
reconcilerVersion: "18.3.0-canary-3f93ca1c8-20240212"
92089202
};
92099203
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
9210-
var hook$jscomp$inline_1205 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
9204+
var hook$jscomp$inline_1207 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
92119205
if (
9212-
!hook$jscomp$inline_1205.isDisabled &&
9213-
hook$jscomp$inline_1205.supportsFiber
9206+
!hook$jscomp$inline_1207.isDisabled &&
9207+
hook$jscomp$inline_1207.supportsFiber
92149208
)
92159209
try {
9216-
(rendererID = hook$jscomp$inline_1205.inject(
9217-
internals$jscomp$inline_1204
9210+
(rendererID = hook$jscomp$inline_1207.inject(
9211+
internals$jscomp$inline_1206
92189212
)),
9219-
(injectedHook = hook$jscomp$inline_1205);
9213+
(injectedHook = hook$jscomp$inline_1207);
92209214
} catch (err) {}
92219215
}
92229216
exports._Scheduler = Scheduler;

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

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<9a90acaf1cc6a5a23ed59dfb8d38c84f>>
10+
* @generated SignedSource<<69981d07258d151fac632e0cccfb55ee>>
1111
*/
1212

1313
"use strict";
@@ -2128,7 +2128,7 @@ function createChildReconciler(shouldTrackSideEffects) {
21282128
case REACT_LAZY_TYPE:
21292129
return (
21302130
(child = newChild._init),
2131-
reconcileChildFibers(
2131+
reconcileChildFibersImpl(
21322132
returnFiber,
21332133
currentFirstChild,
21342134
child(newChild._payload),
@@ -2185,12 +2185,7 @@ function createChildReconciler(shouldTrackSideEffects) {
21852185
placeSingleChild(returnFiber))
21862186
: deleteRemainingChildren(returnFiber, currentFirstChild);
21872187
}
2188-
function reconcileChildFibers(
2189-
returnFiber,
2190-
currentFirstChild,
2191-
newChild,
2192-
lanes
2193-
) {
2188+
return function (returnFiber, currentFirstChild, newChild, lanes) {
21942189
thenableIndexCounter$1 = 0;
21952190
returnFiber = reconcileChildFibersImpl(
21962191
returnFiber,
@@ -2200,8 +2195,7 @@ function createChildReconciler(shouldTrackSideEffects) {
22002195
);
22012196
thenableState$1 = null;
22022197
return returnFiber;
2203-
}
2204-
return reconcileChildFibers;
2198+
};
22052199
}
22062200
var reconcileChildFibers = createChildReconciler(!0),
22072201
mountChildFibers = createChildReconciler(!1),
@@ -9596,19 +9590,19 @@ function wrapFiber(fiber) {
95969590
fiberToWrapper.set(fiber, wrapper));
95979591
return wrapper;
95989592
}
9599-
var devToolsConfig$jscomp$inline_1065 = {
9593+
var devToolsConfig$jscomp$inline_1067 = {
96009594
findFiberByHostInstance: function () {
96019595
throw Error("TestRenderer does not support findFiberByHostInstance()");
96029596
},
96039597
bundleType: 0,
9604-
version: "18.3.0-canary-9e7944f67-20240212",
9598+
version: "18.3.0-canary-3f93ca1c8-20240212",
96059599
rendererPackageName: "react-test-renderer"
96069600
};
9607-
var internals$jscomp$inline_1245 = {
9608-
bundleType: devToolsConfig$jscomp$inline_1065.bundleType,
9609-
version: devToolsConfig$jscomp$inline_1065.version,
9610-
rendererPackageName: devToolsConfig$jscomp$inline_1065.rendererPackageName,
9611-
rendererConfig: devToolsConfig$jscomp$inline_1065.rendererConfig,
9601+
var internals$jscomp$inline_1247 = {
9602+
bundleType: devToolsConfig$jscomp$inline_1067.bundleType,
9603+
version: devToolsConfig$jscomp$inline_1067.version,
9604+
rendererPackageName: devToolsConfig$jscomp$inline_1067.rendererPackageName,
9605+
rendererConfig: devToolsConfig$jscomp$inline_1067.rendererConfig,
96129606
overrideHookState: null,
96139607
overrideHookStateDeletePath: null,
96149608
overrideHookStateRenamePath: null,
@@ -9625,26 +9619,26 @@ var internals$jscomp$inline_1245 = {
96259619
return null === fiber ? null : fiber.stateNode;
96269620
},
96279621
findFiberByHostInstance:
9628-
devToolsConfig$jscomp$inline_1065.findFiberByHostInstance ||
9622+
devToolsConfig$jscomp$inline_1067.findFiberByHostInstance ||
96299623
emptyFindFiberByHostInstance,
96309624
findHostInstancesForRefresh: null,
96319625
scheduleRefresh: null,
96329626
scheduleRoot: null,
96339627
setRefreshHandler: null,
96349628
getCurrentFiber: null,
9635-
reconcilerVersion: "18.3.0-canary-9e7944f67-20240212"
9629+
reconcilerVersion: "18.3.0-canary-3f93ca1c8-20240212"
96369630
};
96379631
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
9638-
var hook$jscomp$inline_1246 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
9632+
var hook$jscomp$inline_1248 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
96399633
if (
9640-
!hook$jscomp$inline_1246.isDisabled &&
9641-
hook$jscomp$inline_1246.supportsFiber
9634+
!hook$jscomp$inline_1248.isDisabled &&
9635+
hook$jscomp$inline_1248.supportsFiber
96429636
)
96439637
try {
9644-
(rendererID = hook$jscomp$inline_1246.inject(
9645-
internals$jscomp$inline_1245
9638+
(rendererID = hook$jscomp$inline_1248.inject(
9639+
internals$jscomp$inline_1247
96469640
)),
9647-
(injectedHook = hook$jscomp$inline_1246);
9641+
(injectedHook = hook$jscomp$inline_1248);
96489642
} catch (err) {}
96499643
}
96509644
exports._Scheduler = Scheduler;

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-dev.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if (__DEV__) {
2424
) {
2525
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
2626
}
27-
var ReactVersion = "18.3.0-canary-9e7944f67-20240212";
27+
var ReactVersion = "18.3.0-canary-3f93ca1c8-20240212";
2828

2929
// ATTENTION
3030
// When adding new symbols to this file,

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-prod.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,4 +590,4 @@ exports.useSyncExternalStore = function (
590590
exports.useTransition = function () {
591591
return ReactCurrentDispatcher.current.useTransition();
592592
};
593-
exports.version = "18.3.0-canary-9e7944f67-20240212";
593+
exports.version = "18.3.0-canary-3f93ca1c8-20240212";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/cjs/React-profiling.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ exports.useSyncExternalStore = function (
586586
exports.useTransition = function () {
587587
return ReactCurrentDispatcher.current.useTransition();
588588
};
589-
exports.version = "18.3.0-canary-9e7944f67-20240212";
589+
exports.version = "18.3.0-canary-3f93ca1c8-20240212";
590590
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
591591
"function" ===
592592
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9e7944f67c72b9a69a8db092ba6bd99fe9c731e2
1+
3f93ca1c8dec1fd85df4dbb748a2df9438fc699f

0 commit comments

Comments
 (0)