From b9323509be66759201c6a752233370970c2a613f Mon Sep 17 00:00:00 2001 From: Ruslan Lesiutin <28902667+hoxyq@users.noreply.github.com> Date: Thu, 5 Feb 2026 17:49:18 +0000 Subject: [PATCH 1/2] [DevTools] Throw an error when attempting to clone non-existent node (#35702) There is an existing issue with serialisation logic for the traces from Profiler panel. I've discovered that `TREE_OPERATION_UPDATE_TREE_BASE_DURATION` operation for some reason appears earlier in a sequence of operations, before the `TREE_OPERATION_ADD` that registers the new node. It ends up cloning non-existent node, which just creates an empty object and adds it to the map of nodes. This change only adds additional layer of validation to cloning logic, so we don't swallow the error, if we attempt to clone non-existent node. --- .../devtools/views/Profiler/CommitTreeBuilder.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js index 41c5c7a2c098..9a2c3fa3056c 100644 --- a/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js +++ b/packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js @@ -160,11 +160,14 @@ function updateTree( // Clone nodes before mutating them so edits don't affect them. const getClonedNode = (id: number): CommitTreeNode => { - // $FlowFixMe[prop-missing] - recommended fix is to use object spread operator - const clonedNode = ((Object.assign( - {}, - nodes.get(id), - ): any): CommitTreeNode); + const existingNode = nodes.get(id); + if (existingNode == null) { + throw new Error( + `Could not clone the node: commit tree does not contain fiber "${id}". This is a bug in React DevTools.`, + ); + } + + const clonedNode = {...existingNode}; nodes.set(id, clonedNode); return clonedNode; }; From 95ffd6cd9c794842e5c8ab36150296afab1ae70c Mon Sep 17 00:00:00 2001 From: Ricky Date: Thu, 5 Feb 2026 13:34:23 -0500 Subject: [PATCH 2/2] Disable parallel transitions in canary (#35709) Accidentally enabled this --- packages/shared/ReactFeatureFlags.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index bdeab6aef43e..282b0ac8ec83 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -220,7 +220,7 @@ export const disableInputAttributeSyncing: boolean = false; export const disableTextareaChildren: boolean = false; // Disables children for