Skip to content

Commit dd554f3

Browse files
committed
Check if a child is a new child before calling moveBefore (#32567)
This fixes a critical issue with moveBefore. I was told that the disconnected -> connected case was going to be relaxed and not be an error but apparently that is not the case. This means that we can't use this for initial insertions. Only moves. Unfortunately React's internals doesn't distinguish these cases. This adds a hack that checks each nodes but this is pretty bad for performance. We should only call this in one or the other case. Given that we still need feature detection. Both of which means that these calls are no longer inlined and this extra code. I wonder if it's even worth it given that you can't even rely on it working anyway since not all browsers have it. Kind of don't want to ship this until all browsers have it. Even then we'd ideally refactor React to use separate code paths for initial insertion vs moves. Which leads to some unfortunate code duplication. DiffTrain build for [99e1024](99e1024)
1 parent 64aba73 commit dd554f3

23 files changed

+110
-110
lines changed

compiled-rn/VERSION_NATIVE_FB

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19.1.0-native-fb-50ab2dde-20250310
1+
19.1.0-native-fb-99e10240-20250310

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<6763b97d7b06065e3f5dc442add24cb9>>
10+
* @generated SignedSource<<7326694dd3f20da9625c2a82ce71b6f4>>
1111
*/
1212

1313
"use strict";
@@ -404,5 +404,5 @@ __DEV__ &&
404404
exports.useFormStatus = function () {
405405
return resolveDispatcher().useHostTransitionStatus();
406406
};
407-
exports.version = "19.1.0-native-fb-50ab2dde-20250310";
407+
exports.version = "19.1.0-native-fb-99e10240-20250310";
408408
})();

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

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

1313
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
203203
exports.useFormStatus = function () {
204204
return ReactSharedInternals.H.useHostTransitionStatus();
205205
};
206-
exports.version = "19.1.0-native-fb-50ab2dde-20250310";
206+
exports.version = "19.1.0-native-fb-99e10240-20250310";

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

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

1313
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
203203
exports.useFormStatus = function () {
204204
return ReactSharedInternals.H.useHostTransitionStatus();
205205
};
206-
exports.version = "19.1.0-native-fb-50ab2dde-20250310";
206+
exports.version = "19.1.0-native-fb-99e10240-20250310";

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

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

1313
/*
@@ -11597,7 +11597,7 @@ __DEV__ &&
1159711597
: "HTML" === parent.nodeName
1159811598
? parent.ownerDocument.body
1159911599
: parent),
11600-
supportsMoveBefore
11600+
supportsMoveBefore && null !== node.parentNode
1160111601
? parent.moveBefore(node, before)
1160211602
: parent.insertBefore(node, before))
1160311603
: ((before = parent),
@@ -11607,7 +11607,7 @@ __DEV__ &&
1160711607
: "HTML" === before.nodeName
1160811608
? before.ownerDocument.body
1160911609
: before),
11610-
supportsMoveBefore
11610+
supportsMoveBefore && null !== node.parentNode
1161111611
? parent.moveBefore(node, null)
1161211612
: parent.appendChild(node),
1161311613
(before = before._reactRootContainer),
@@ -11636,11 +11636,11 @@ __DEV__ &&
1163611636
if (5 === tag || 6 === tag)
1163711637
(node = node.stateNode),
1163811638
before
11639-
? supportsMoveBefore
11639+
? supportsMoveBefore && null !== node.parentNode
1164011640
? parent.moveBefore(node, before)
1164111641
: parent.insertBefore(node, before)
1164211642
: ((before = parent),
11643-
supportsMoveBefore
11643+
supportsMoveBefore && null !== node.parentNode
1164411644
? before.moveBefore(node, null)
1164511645
: before.appendChild(node));
1164611646
else if (
@@ -26067,11 +26067,11 @@ __DEV__ &&
2606726067
};
2606826068
(function () {
2606926069
var isomorphicReactPackageVersion = React.version;
26070-
if ("19.1.0-native-fb-50ab2dde-20250310" !== isomorphicReactPackageVersion)
26070+
if ("19.1.0-native-fb-99e10240-20250310" !== isomorphicReactPackageVersion)
2607126071
throw Error(
2607226072
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
2607326073
(isomorphicReactPackageVersion +
26074-
"\n - react-dom: 19.1.0-native-fb-50ab2dde-20250310\nLearn more: https://react.dev/warnings/version-mismatch")
26074+
"\n - react-dom: 19.1.0-native-fb-99e10240-20250310\nLearn more: https://react.dev/warnings/version-mismatch")
2607526075
);
2607626076
})();
2607726077
("function" === typeof Map &&
@@ -26108,10 +26108,10 @@ __DEV__ &&
2610826108
!(function () {
2610926109
var internals = {
2611026110
bundleType: 1,
26111-
version: "19.1.0-native-fb-50ab2dde-20250310",
26111+
version: "19.1.0-native-fb-99e10240-20250310",
2611226112
rendererPackageName: "react-dom",
2611326113
currentDispatcherRef: ReactSharedInternals,
26114-
reconcilerVersion: "19.1.0-native-fb-50ab2dde-20250310"
26114+
reconcilerVersion: "19.1.0-native-fb-99e10240-20250310"
2611526115
};
2611626116
internals.overrideHookState = overrideHookState;
2611726117
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -26255,5 +26255,5 @@ __DEV__ &&
2625526255
listenToAllSupportedEvents(container);
2625626256
return new ReactDOMHydrationRoot(initialChildren);
2625726257
};
26258-
exports.version = "19.1.0-native-fb-50ab2dde-20250310";
26258+
exports.version = "19.1.0-native-fb-99e10240-20250310";
2625926259
})();

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

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

1313
/*
@@ -7997,7 +7997,7 @@ function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
79977997
: "HTML" === parent.nodeName
79987998
? parent.ownerDocument.body
79997999
: parent),
8000-
supportsMoveBefore
8000+
supportsMoveBefore && null !== node.parentNode
80018001
? parent.moveBefore(node, before)
80028002
: parent.insertBefore(node, before))
80038003
: ((before = parent),
@@ -8007,7 +8007,7 @@ function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
80078007
: "HTML" === before.nodeName
80088008
? before.ownerDocument.body
80098009
: before),
8010-
supportsMoveBefore
8010+
supportsMoveBefore && null !== node.parentNode
80118011
? parent.moveBefore(node, null)
80128012
: parent.appendChild(node),
80138013
(before = before._reactRootContainer),
@@ -8036,11 +8036,11 @@ function insertOrAppendPlacementNode(node, before, parent) {
80368036
if (5 === tag || 6 === tag)
80378037
(node = node.stateNode),
80388038
before
8039-
? supportsMoveBefore
8039+
? supportsMoveBefore && null !== node.parentNode
80408040
? parent.moveBefore(node, before)
80418041
: parent.insertBefore(node, before)
80428042
: ((before = parent),
8043-
supportsMoveBefore
8043+
supportsMoveBefore && null !== node.parentNode
80448044
? before.moveBefore(node, null)
80458045
: before.appendChild(node));
80468046
else if (
@@ -16177,14 +16177,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1617716177
};
1617816178
var isomorphicReactPackageVersion$jscomp$inline_1817 = React.version;
1617916179
if (
16180-
"19.1.0-native-fb-50ab2dde-20250310" !==
16180+
"19.1.0-native-fb-99e10240-20250310" !==
1618116181
isomorphicReactPackageVersion$jscomp$inline_1817
1618216182
)
1618316183
throw Error(
1618416184
formatProdErrorMessage(
1618516185
527,
1618616186
isomorphicReactPackageVersion$jscomp$inline_1817,
16187-
"19.1.0-native-fb-50ab2dde-20250310"
16187+
"19.1.0-native-fb-99e10240-20250310"
1618816188
)
1618916189
);
1619016190
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -16206,10 +16206,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1620616206
};
1620716207
var internals$jscomp$inline_2290 = {
1620816208
bundleType: 0,
16209-
version: "19.1.0-native-fb-50ab2dde-20250310",
16209+
version: "19.1.0-native-fb-99e10240-20250310",
1621016210
rendererPackageName: "react-dom",
1621116211
currentDispatcherRef: ReactSharedInternals,
16212-
reconcilerVersion: "19.1.0-native-fb-50ab2dde-20250310"
16212+
reconcilerVersion: "19.1.0-native-fb-99e10240-20250310"
1621316213
};
1621416214
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1621516215
var hook$jscomp$inline_2291 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -16313,4 +16313,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
1631316313
listenToAllSupportedEvents(container);
1631416314
return new ReactDOMHydrationRoot(initialChildren);
1631516315
};
16316-
exports.version = "19.1.0-native-fb-50ab2dde-20250310";
16316+
exports.version = "19.1.0-native-fb-99e10240-20250310";

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

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

1313
/*
@@ -8341,7 +8341,7 @@ function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
83418341
: "HTML" === parent.nodeName
83428342
? parent.ownerDocument.body
83438343
: parent),
8344-
supportsMoveBefore
8344+
supportsMoveBefore && null !== node.parentNode
83458345
? parent.moveBefore(node, before)
83468346
: parent.insertBefore(node, before))
83478347
: ((before = parent),
@@ -8351,7 +8351,7 @@ function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
83518351
: "HTML" === before.nodeName
83528352
? before.ownerDocument.body
83538353
: before),
8354-
supportsMoveBefore
8354+
supportsMoveBefore && null !== node.parentNode
83558355
? parent.moveBefore(node, null)
83568356
: parent.appendChild(node),
83578357
(before = before._reactRootContainer),
@@ -8380,11 +8380,11 @@ function insertOrAppendPlacementNode(node, before, parent) {
83808380
if (5 === tag || 6 === tag)
83818381
(node = node.stateNode),
83828382
before
8383-
? supportsMoveBefore
8383+
? supportsMoveBefore && null !== node.parentNode
83848384
? parent.moveBefore(node, before)
83858385
: parent.insertBefore(node, before)
83868386
: ((before = parent),
8387-
supportsMoveBefore
8387+
supportsMoveBefore && null !== node.parentNode
83888388
? before.moveBefore(node, null)
83898389
: before.appendChild(node));
83908390
else if (
@@ -16827,14 +16827,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1682716827
};
1682816828
var isomorphicReactPackageVersion$jscomp$inline_1912 = React.version;
1682916829
if (
16830-
"19.1.0-native-fb-50ab2dde-20250310" !==
16830+
"19.1.0-native-fb-99e10240-20250310" !==
1683116831
isomorphicReactPackageVersion$jscomp$inline_1912
1683216832
)
1683316833
throw Error(
1683416834
formatProdErrorMessage(
1683516835
527,
1683616836
isomorphicReactPackageVersion$jscomp$inline_1912,
16837-
"19.1.0-native-fb-50ab2dde-20250310"
16837+
"19.1.0-native-fb-99e10240-20250310"
1683816838
)
1683916839
);
1684016840
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -16856,10 +16856,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1685616856
};
1685716857
var internals$jscomp$inline_1919 = {
1685816858
bundleType: 0,
16859-
version: "19.1.0-native-fb-50ab2dde-20250310",
16859+
version: "19.1.0-native-fb-99e10240-20250310",
1686016860
rendererPackageName: "react-dom",
1686116861
currentDispatcherRef: ReactSharedInternals,
16862-
reconcilerVersion: "19.1.0-native-fb-50ab2dde-20250310",
16862+
reconcilerVersion: "19.1.0-native-fb-99e10240-20250310",
1686316863
getLaneLabelMap: function () {
1686416864
for (
1686516865
var map = new Map(), lane = 1, index$294 = 0;
@@ -16978,4 +16978,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
1697816978
listenToAllSupportedEvents(container);
1697916979
return new ReactDOMHydrationRoot(initialChildren);
1698016980
};
16981-
exports.version = "19.1.0-native-fb-50ab2dde-20250310";
16981+
exports.version = "19.1.0-native-fb-99e10240-20250310";

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

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

1313
/*
@@ -11605,7 +11605,7 @@ __DEV__ &&
1160511605
: "HTML" === parent.nodeName
1160611606
? parent.ownerDocument.body
1160711607
: parent),
11608-
supportsMoveBefore
11608+
supportsMoveBefore && null !== node.parentNode
1160911609
? parent.moveBefore(node, before)
1161011610
: parent.insertBefore(node, before))
1161111611
: ((before = parent),
@@ -11615,7 +11615,7 @@ __DEV__ &&
1161511615
: "HTML" === before.nodeName
1161611616
? before.ownerDocument.body
1161711617
: before),
11618-
supportsMoveBefore
11618+
supportsMoveBefore && null !== node.parentNode
1161911619
? parent.moveBefore(node, null)
1162011620
: parent.appendChild(node),
1162111621
(before = before._reactRootContainer),
@@ -11644,11 +11644,11 @@ __DEV__ &&
1164411644
if (5 === tag || 6 === tag)
1164511645
(node = node.stateNode),
1164611646
before
11647-
? supportsMoveBefore
11647+
? supportsMoveBefore && null !== node.parentNode
1164811648
? parent.moveBefore(node, before)
1164911649
: parent.insertBefore(node, before)
1165011650
: ((before = parent),
11651-
supportsMoveBefore
11651+
supportsMoveBefore && null !== node.parentNode
1165211652
? before.moveBefore(node, null)
1165311653
: before.appendChild(node));
1165411654
else if (
@@ -26128,11 +26128,11 @@ __DEV__ &&
2612826128
};
2612926129
(function () {
2613026130
var isomorphicReactPackageVersion = React.version;
26131-
if ("19.1.0-native-fb-50ab2dde-20250310" !== isomorphicReactPackageVersion)
26131+
if ("19.1.0-native-fb-99e10240-20250310" !== isomorphicReactPackageVersion)
2613226132
throw Error(
2613326133
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
2613426134
(isomorphicReactPackageVersion +
26135-
"\n - react-dom: 19.1.0-native-fb-50ab2dde-20250310\nLearn more: https://react.dev/warnings/version-mismatch")
26135+
"\n - react-dom: 19.1.0-native-fb-99e10240-20250310\nLearn more: https://react.dev/warnings/version-mismatch")
2613626136
);
2613726137
})();
2613826138
("function" === typeof Map &&
@@ -26169,10 +26169,10 @@ __DEV__ &&
2616926169
!(function () {
2617026170
var internals = {
2617126171
bundleType: 1,
26172-
version: "19.1.0-native-fb-50ab2dde-20250310",
26172+
version: "19.1.0-native-fb-99e10240-20250310",
2617326173
rendererPackageName: "react-dom",
2617426174
currentDispatcherRef: ReactSharedInternals,
26175-
reconcilerVersion: "19.1.0-native-fb-50ab2dde-20250310"
26175+
reconcilerVersion: "19.1.0-native-fb-99e10240-20250310"
2617626176
};
2617726177
internals.overrideHookState = overrideHookState;
2617826178
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -26632,7 +26632,7 @@ __DEV__ &&
2663226632
exports.useFormStatus = function () {
2663326633
return resolveDispatcher().useHostTransitionStatus();
2663426634
};
26635-
exports.version = "19.1.0-native-fb-50ab2dde-20250310";
26635+
exports.version = "19.1.0-native-fb-99e10240-20250310";
2663626636
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
2663726637
"function" ===
2663826638
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

0 commit comments

Comments
 (0)