[Fiber] Replay onChange Events if input/textarea/select has changed before hydration (#33129)

This fixes a long standing issue that controlled inputs gets out of sync
with the browser state if it's changed before we hydrate.

This resolves the issue by replaying the change events (click, input and
change) if the value has changed by the time we commit the hydration.
That way you can reflect the new value in state to bring it in sync. It
does this whether controlled or uncontrolled.

The idea is that this should be ok to replay because it's similar to the
continuous events in that it doesn't replay a sequence but only reflects
the current state of the tree.

Since this is a breaking change I added it behind
`enableHydrationChangeEvent` flag.

There is still an additional issue remaining that I intend to address in
a follow up. If a `useLayoutEffect` triggers an sync rerender on
hydration (always a bad idea) then that can rerender before we have had
a chance to replay the change events. If that renders through a input
then that input will always override the browser value with the
controlled value. Which will reset it before we've had a change to
update to the new value.

DiffTrain build for [587cb8f896](https://github.com/facebook/react/commit/587cb8f8967866139bbfdbae3f519cb37e68a054)
This commit is contained in:
sebmarkbage
2025-05-05 21:17:22 -07:00
parent a22ebb7322
commit b9cbc6c4d6
24 changed files with 3093 additions and 2289 deletions
+1 -1
View File
@@ -1 +1 @@
19.2.0-native-fb-79586c7e-20250505
19.2.0-native-fb-587cb8f8-20250506
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<c258eab382eb0ce61641595d7b64804f>>
* @generated SignedSource<<b4110f7390077a21b17c56f3e392ec09>>
*/
"use strict";
@@ -404,5 +404,5 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
})();
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<c467ed25fe7dc1617f4641b97e5acc2a>>
* @generated SignedSource<<ff65f1ddff564ff15c7f9e1629ceeabb>>
*/
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
exports.useFormStatus = function () {
return ReactSharedInternals.H.useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<c467ed25fe7dc1617f4641b97e5acc2a>>
* @generated SignedSource<<ff65f1ddff564ff15c7f9e1629ceeabb>>
*/
"use strict";
@@ -203,4 +203,4 @@ exports.useFormState = function (action, initialState, permalink) {
exports.useFormStatus = function () {
return ReactSharedInternals.H.useHostTransitionStatus();
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -7,13 +7,13 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<e835befdc279d8da07ba6d8f9db9a7ee>>
* @generated SignedSource<<60cbc0d0582e15ed184cbc8a004dd747>>
*/
"use strict";
__DEV__ &&
(function () {
function JSCompiler_object_inline_createNodeMock_1148() {
function JSCompiler_object_inline_createNodeMock_1154() {
return null;
}
function findHook(fiber, id) {
@@ -9747,7 +9747,29 @@ __DEV__ &&
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
null === current && flags & 4 && commitHostMount(finishedWork);
if (null === current)
if (flags & 4) commitHostMount(finishedWork);
else if (flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
runWithFiberInDEV(
finishedWork,
commitHydratedInstance,
prevProps,
finishedRoot,
current,
finishedWork
);
} catch (error) {
captureCommitPhaseError(
finishedWork,
finishedWork.return,
error
);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -13678,6 +13700,7 @@ __DEV__ &&
isSuspenseInstanceFallback = shim$1,
getSuspenseInstanceFallbackErrorDetails = shim$1,
registerSuspenseInstanceRetry = shim$1,
commitHydratedInstance = shim$1,
clearSuspenseBoundary = shim$1,
clearSuspenseBoundaryFromContainer = shim$1,
hideDehydratedBoundary = shim$1,
@@ -15630,10 +15653,10 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-test-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -15655,7 +15678,7 @@ __DEV__ &&
exports._Scheduler = Scheduler;
exports.act = act;
exports.create = function (element, options) {
var createNodeMock = JSCompiler_object_inline_createNodeMock_1148,
var createNodeMock = JSCompiler_object_inline_createNodeMock_1154,
isConcurrent = !1,
isStrictMode = !1;
"object" === typeof options &&
@@ -15778,5 +15801,5 @@ __DEV__ &&
flushSyncWorkAcrossRoots_impl(0, !0));
}
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
})();
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<c9599c2613e75b13071783088c2b31c8>>
* @generated SignedSource<<80c4ef4dfe465611dbb845044a6113fb>>
*/
"use strict";
@@ -6871,22 +6871,19 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
break;
case 3:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
if (
flags & 64 &&
((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)
) {
current = null;
if (flags & 64 && ((flags = finishedWork.updateQueue), null !== flags)) {
finishedRoot = null;
if (null !== finishedWork.child)
switch (finishedWork.child.tag) {
case 27:
case 5:
current = getPublicInstance(finishedWork.child.stateNode);
finishedRoot = getPublicInstance(finishedWork.child.stateNode);
break;
case 1:
current = finishedWork.child.stateNode;
finishedRoot = finishedWork.child.stateNode;
}
try {
commitCallbacks(finishedRoot, current);
commitCallbacks(flags, finishedRoot);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
@@ -6896,6 +6893,16 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
if (null === current && !(flags & 4) && flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
shim$1(prevProps, finishedRoot, current, finishedWork);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -6907,9 +6914,9 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 13:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
flags & 64 &&
((finishedRoot = finishedWork.memoizedState),
null !== finishedRoot &&
null !== finishedRoot.dehydrated &&
((flags = finishedWork.memoizedState),
null !== flags &&
null !== flags.dehydrated &&
(retryDehydratedSuspenseBoundary.bind(null, finishedWork), shim$1()));
break;
case 22:
@@ -9883,24 +9890,24 @@ function wrapFiber(fiber) {
fiberToWrapper.set(fiber, wrapper));
return wrapper;
}
var internals$jscomp$inline_1439 = {
var internals$jscomp$inline_1445 = {
bundleType: 0,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-test-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1440 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
var hook$jscomp$inline_1446 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (
!hook$jscomp$inline_1440.isDisabled &&
hook$jscomp$inline_1440.supportsFiber
!hook$jscomp$inline_1446.isDisabled &&
hook$jscomp$inline_1446.supportsFiber
)
try {
(rendererID = hook$jscomp$inline_1440.inject(
internals$jscomp$inline_1439
(rendererID = hook$jscomp$inline_1446.inject(
internals$jscomp$inline_1445
)),
(injectedHook = hook$jscomp$inline_1440);
(injectedHook = hook$jscomp$inline_1446);
} catch (err) {}
}
exports._Scheduler = Scheduler;
@@ -10024,4 +10031,4 @@ exports.unstable_batchedUpdates = function (fn, a) {
flushSyncWorkAcrossRoots_impl(0, !0));
}
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<07d3e5c523b5e090077e78383b239bf7>>
* @generated SignedSource<<dbde40ccff605b96c58ff3767bb61032>>
*/
"use strict";
@@ -7316,6 +7316,16 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
if (null === current && !(flags & 4) && flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
shim$1(prevProps, finishedRoot, current, finishedWork);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -10500,12 +10510,12 @@ function wrapFiber(fiber) {
fiberToWrapper.set(fiber, wrapper));
return wrapper;
}
var internals$jscomp$inline_1247 = {
var internals$jscomp$inline_1253 = {
bundleType: 0,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-test-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505",
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506",
getLaneLabelMap: function () {
for (
var map = new Map(), lane = 1, index$155 = 0;
@@ -10523,16 +10533,16 @@ var internals$jscomp$inline_1247 = {
}
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1505 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
var hook$jscomp$inline_1511 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (
!hook$jscomp$inline_1505.isDisabled &&
hook$jscomp$inline_1505.supportsFiber
!hook$jscomp$inline_1511.isDisabled &&
hook$jscomp$inline_1511.supportsFiber
)
try {
(rendererID = hook$jscomp$inline_1505.inject(
internals$jscomp$inline_1247
(rendererID = hook$jscomp$inline_1511.inject(
internals$jscomp$inline_1253
)),
(injectedHook = hook$jscomp$inline_1505);
(injectedHook = hook$jscomp$inline_1511);
} catch (err) {}
}
exports._Scheduler = Scheduler;
@@ -10656,4 +10666,4 @@ exports.unstable_batchedUpdates = function (fn, a) {
flushSyncWorkAcrossRoots_impl(0, !0));
}
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<ba1b3753afcb9f517f5ec974d751ed44>>
* @generated SignedSource<<77fb77f7298cadb59549ff2206997934>>
*/
"use strict";
@@ -1412,7 +1412,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<cb84f6aef3eef9674afceb5e63014e9e>>
* @generated SignedSource<<cc0461d5781bc97fa7ce62fe66fb7ab3>>
*/
"use strict";
@@ -587,4 +587,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<b5330fe03757ece0f562e61add49e7fb>>
* @generated SignedSource<<67bd1bd9ff32271b20d6112a11af28e3>>
*/
"use strict";
@@ -591,7 +591,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.2.0-native-fb-79586c7e-20250505";
exports.version = "19.2.0-native-fb-587cb8f8-20250506";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -1 +1 @@
79586c7eb626c6b9362c308a54c9ee5b66e640e5
587cb8f8967866139bbfdbae3f519cb37e68a054
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<ee1472621f1ac6ccbdf3d3b72a1cd837>>
* @generated SignedSource<<506a129d1d5aeb317d2abeb2a807fdac>>
*/
"use strict";
@@ -10753,7 +10753,29 @@ __DEV__ &&
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
null === current && flags & 4 && commitHostMount(finishedWork);
if (null === current)
if (flags & 4) commitHostMount(finishedWork);
else if (flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
runWithFiberInDEV(
finishedWork,
commitHydratedInstance,
prevProps,
finishedRoot,
current,
finishedWork
);
} catch (error) {
captureCommitPhaseError(
finishedWork,
finishedWork.return,
error
);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -17226,6 +17248,7 @@ __DEV__ &&
isSuspenseInstanceFallback = shim$1,
getSuspenseInstanceFallbackErrorDetails = shim$1,
registerSuspenseInstanceRetry = shim$1,
commitHydratedInstance = shim$1,
preloadResource = shim,
suspendResource = shim,
_nativeFabricUIManage = nativeFabricUIManager,
@@ -17463,10 +17486,10 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
null !== extraDevToolsConfig &&
(internals.rendererConfig = extraDevToolsConfig);
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<b70f49030680f2589fdc65c29ecc0a67>>
* @generated SignedSource<<1f74dfdef0a5edbd0ccf3163f0133f43>>
*/
"use strict";
@@ -8307,22 +8307,19 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
break;
case 3:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
if (
flags & 64 &&
((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)
) {
current = null;
if (flags & 64 && ((flags = finishedWork.updateQueue), null !== flags)) {
finishedRoot = null;
if (null !== finishedWork.child)
switch (finishedWork.child.tag) {
case 27:
case 5:
current = getPublicInstance(finishedWork.child.stateNode);
finishedRoot = getPublicInstance(finishedWork.child.stateNode);
break;
case 1:
current = finishedWork.child.stateNode;
finishedRoot = finishedWork.child.stateNode;
}
try {
commitCallbacks(finishedRoot, current);
commitCallbacks(flags, finishedRoot);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
@@ -8332,7 +8329,18 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
null === current && flags & 4 && commitHostMount(finishedWork);
if (null === current)
if (flags & 4) commitHostMount(finishedWork);
else if (flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
shim$1(prevProps, finishedRoot, current, finishedWork);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -8344,9 +8352,9 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 13:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
flags & 64 &&
((finishedRoot = finishedWork.memoizedState),
null !== finishedRoot &&
null !== finishedRoot.dehydrated &&
((flags = finishedWork.memoizedState),
null !== flags &&
null !== flags.dehydrated &&
(retryDehydratedSuspenseBoundary.bind(null, finishedWork), shim$1()));
break;
case 22:
@@ -11201,26 +11209,26 @@ batchedUpdatesImpl = function (fn, a) {
}
};
var roots = new Map(),
internals$jscomp$inline_1248 = {
internals$jscomp$inline_1254 = {
bundleType: 0,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1248.rendererConfig = extraDevToolsConfig);
(internals$jscomp$inline_1254.rendererConfig = extraDevToolsConfig);
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1570 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
var hook$jscomp$inline_1576 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (
!hook$jscomp$inline_1570.isDisabled &&
hook$jscomp$inline_1570.supportsFiber
!hook$jscomp$inline_1576.isDisabled &&
hook$jscomp$inline_1576.supportsFiber
)
try {
(rendererID = hook$jscomp$inline_1570.inject(
internals$jscomp$inline_1248
(rendererID = hook$jscomp$inline_1576.inject(
internals$jscomp$inline_1254
)),
(injectedHook = hook$jscomp$inline_1570);
(injectedHook = hook$jscomp$inline_1576);
} catch (err) {}
}
exports.createPortal = function (children, containerTag) {
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<1cc470a384f02a2cbe6b41072a9d2441>>
* @generated SignedSource<<54d989d88297e5d3c0e14cea2b00aa53>>
*/
"use strict";
@@ -8789,7 +8789,18 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
null === current && flags & 4 && commitHostMount(finishedWork);
if (null === current)
if (flags & 4) commitHostMount(finishedWork);
else if (flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
shim$1(prevProps, finishedRoot, current, finishedWork);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -11902,16 +11913,16 @@ batchedUpdatesImpl = function (fn, a) {
}
};
var roots = new Map(),
internals$jscomp$inline_1349 = {
internals$jscomp$inline_1355 = {
bundleType: 0,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1349.rendererConfig = extraDevToolsConfig);
internals$jscomp$inline_1349.getLaneLabelMap = function () {
(internals$jscomp$inline_1355.rendererConfig = extraDevToolsConfig);
internals$jscomp$inline_1355.getLaneLabelMap = function () {
for (
var map = new Map(), lane = 1, index$162 = 0;
31 > index$162;
@@ -11923,20 +11934,20 @@ internals$jscomp$inline_1349.getLaneLabelMap = function () {
}
return map;
};
internals$jscomp$inline_1349.injectProfilingHooks = function (profilingHooks) {
internals$jscomp$inline_1355.injectProfilingHooks = function (profilingHooks) {
injectedProfilingHooks = profilingHooks;
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1637 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
var hook$jscomp$inline_1643 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (
!hook$jscomp$inline_1637.isDisabled &&
hook$jscomp$inline_1637.supportsFiber
!hook$jscomp$inline_1643.isDisabled &&
hook$jscomp$inline_1643.supportsFiber
)
try {
(rendererID = hook$jscomp$inline_1637.inject(
internals$jscomp$inline_1349
(rendererID = hook$jscomp$inline_1643.inject(
internals$jscomp$inline_1355
)),
(injectedHook = hook$jscomp$inline_1637);
(injectedHook = hook$jscomp$inline_1643);
} catch (err) {}
}
exports.createPortal = function (children, containerTag) {
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<913fa3034a42c22d136a83e16fee64c3>>
* @generated SignedSource<<45d7c4638da6c193de752c4715305f61>>
*/
"use strict";
@@ -10822,7 +10822,29 @@ __DEV__ &&
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
null === current && flags & 4 && commitHostMount(finishedWork);
if (null === current)
if (flags & 4) commitHostMount(finishedWork);
else if (flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
runWithFiberInDEV(
finishedWork,
commitHydratedInstance,
prevProps,
finishedRoot,
current,
finishedWork
);
} catch (error) {
captureCommitPhaseError(
finishedWork,
finishedWork.return,
error
);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -15713,6 +15735,7 @@ __DEV__ &&
isSuspenseInstanceFallback = shim$1,
getSuspenseInstanceFallbackErrorDetails = shim$1,
registerSuspenseInstanceRetry = shim$1,
commitHydratedInstance = shim$1,
clearSuspenseBoundary = shim$1,
clearSuspenseBoundaryFromContainer = shim$1,
hideDehydratedBoundary = shim$1,
@@ -17622,11 +17645,11 @@ __DEV__ &&
shouldSuspendImpl = newShouldSuspendImpl;
};
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-79586c7e-20250505" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-587cb8f8-20250506" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.2.0-native-fb-79586c7e-20250505\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.2.0-native-fb-587cb8f8-20250506\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -17652,10 +17675,10 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
null !== extraDevToolsConfig &&
(internals.rendererConfig = extraDevToolsConfig);
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<c58a68621508a1da4a9570e372098b1c>>
* @generated SignedSource<<dd96dbb63152320068a0ef4dd8746a09>>
*/
"use strict";
@@ -8353,22 +8353,19 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
break;
case 3:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
if (
flags & 64 &&
((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)
) {
current = null;
if (flags & 64 && ((flags = finishedWork.updateQueue), null !== flags)) {
finishedRoot = null;
if (null !== finishedWork.child)
switch (finishedWork.child.tag) {
case 27:
case 5:
current = getPublicInstance(finishedWork.child.stateNode);
finishedRoot = getPublicInstance(finishedWork.child.stateNode);
break;
case 1:
current = finishedWork.child.stateNode;
finishedRoot = finishedWork.child.stateNode;
}
try {
commitCallbacks(finishedRoot, current);
commitCallbacks(flags, finishedRoot);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
@@ -8378,6 +8375,16 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
if (null === current && !(flags & 4) && flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
shim$1(prevProps, finishedRoot, current, finishedWork);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -8389,9 +8396,9 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 13:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
flags & 64 &&
((finishedRoot = finishedWork.memoizedState),
null !== finishedRoot &&
null !== finishedRoot.dehydrated &&
((flags = finishedWork.memoizedState),
null !== flags &&
null !== flags.dehydrated &&
(retryDehydratedSuspenseBoundary.bind(null, finishedWork), shim$1()));
break;
case 22:
@@ -11243,11 +11250,11 @@ function updateContainer(element, container, parentComponent, callback) {
return lane;
}
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-79586c7e-20250505" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-587cb8f8-20250506" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.2.0-native-fb-79586c7e-20250505\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.2.0-native-fb-587cb8f8-20250506\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -11294,26 +11301,26 @@ batchedUpdatesImpl = function (fn, a) {
}
};
var roots = new Map(),
internals$jscomp$inline_1299 = {
internals$jscomp$inline_1305 = {
bundleType: 0,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1299.rendererConfig = extraDevToolsConfig);
(internals$jscomp$inline_1305.rendererConfig = extraDevToolsConfig);
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1647 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
var hook$jscomp$inline_1653 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (
!hook$jscomp$inline_1647.isDisabled &&
hook$jscomp$inline_1647.supportsFiber
!hook$jscomp$inline_1653.isDisabled &&
hook$jscomp$inline_1653.supportsFiber
)
try {
(rendererID = hook$jscomp$inline_1647.inject(
internals$jscomp$inline_1299
(rendererID = hook$jscomp$inline_1653.inject(
internals$jscomp$inline_1305
)),
(injectedHook = hook$jscomp$inline_1647);
(injectedHook = hook$jscomp$inline_1653);
} catch (err) {}
}
exports.createPortal = function (children, containerTag) {
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<e6625dfc4dfe5627caeea43be2fb13ae>>
* @generated SignedSource<<33dbd8ad1f96496b71db966f5505500c>>
*/
"use strict";
@@ -8835,6 +8835,16 @@ function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
case 26:
case 5:
recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
if (null === current && !(flags & 4) && flags & 64) {
finishedRoot = finishedWork.type;
current = finishedWork.memoizedProps;
prevProps = finishedWork.stateNode;
try {
shim$1(prevProps, finishedRoot, current, finishedWork);
} catch (error) {
captureCommitPhaseError(finishedWork, finishedWork.return, error);
}
}
flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
break;
case 12:
@@ -11942,11 +11952,11 @@ function updateContainer(element, container, parentComponent, callback) {
return lane;
}
var isomorphicReactPackageVersion = React.version;
if ("19.2.0-native-fb-79586c7e-20250505" !== isomorphicReactPackageVersion)
if ("19.2.0-native-fb-587cb8f8-20250506" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.2.0-native-fb-79586c7e-20250505\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.2.0-native-fb-587cb8f8-20250506\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -11993,16 +12003,16 @@ batchedUpdatesImpl = function (fn, a) {
}
};
var roots = new Map(),
internals$jscomp$inline_1400 = {
internals$jscomp$inline_1406 = {
bundleType: 0,
version: "19.2.0-native-fb-79586c7e-20250505",
version: "19.2.0-native-fb-587cb8f8-20250506",
rendererPackageName: "react-native-renderer",
currentDispatcherRef: ReactSharedInternals,
reconcilerVersion: "19.2.0-native-fb-79586c7e-20250505"
reconcilerVersion: "19.2.0-native-fb-587cb8f8-20250506"
};
null !== extraDevToolsConfig &&
(internals$jscomp$inline_1400.rendererConfig = extraDevToolsConfig);
internals$jscomp$inline_1400.getLaneLabelMap = function () {
(internals$jscomp$inline_1406.rendererConfig = extraDevToolsConfig);
internals$jscomp$inline_1406.getLaneLabelMap = function () {
for (
var map = new Map(), lane = 1, index$165 = 0;
31 > index$165;
@@ -12014,20 +12024,20 @@ internals$jscomp$inline_1400.getLaneLabelMap = function () {
}
return map;
};
internals$jscomp$inline_1400.injectProfilingHooks = function (profilingHooks) {
internals$jscomp$inline_1406.injectProfilingHooks = function (profilingHooks) {
injectedProfilingHooks = profilingHooks;
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1714 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
var hook$jscomp$inline_1720 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
if (
!hook$jscomp$inline_1714.isDisabled &&
hook$jscomp$inline_1714.supportsFiber
!hook$jscomp$inline_1720.isDisabled &&
hook$jscomp$inline_1720.supportsFiber
)
try {
(rendererID = hook$jscomp$inline_1714.inject(
internals$jscomp$inline_1400
(rendererID = hook$jscomp$inline_1720.inject(
internals$jscomp$inline_1406
)),
(injectedHook = hook$jscomp$inline_1714);
(injectedHook = hook$jscomp$inline_1720);
} catch (err) {}
}
exports.createPortal = function (children, containerTag) {
@@ -1,7 +1,7 @@
{
"name": "eslint-plugin-react-hooks",
"description": "ESLint rules for React Hooks",
"version": "0.0.0-experimental-79586c7e-20250505",
"version": "0.0.0-experimental-587cb8f8-20250506",
"repository": {
"type": "git",
"url": "https://github.com/facebook/react.git",