Skip to content

Commit 66d8807

Browse files
committed
[compiler] Prevent overriding a derivationEntry on effect mutation and instead update typeOfValue and fix infinite loops (#34967)
Summary: With this we are now comparing a snapshot of the derivationCache with the new changes every time we are done recording the derivations happening in the HIR. We have to do this after recording everything since we still do some mutations on the cache when recording mutations. Test Plan: Test the following in playground: ``` // @validateNoDerivedComputationsInEffects_exp function Component({ value }) { const [checked, setChecked] = useState(''); useEffect(() => { setChecked(value === '' ? [] : value.split(',')); }, [value]); return ( <div>{checked}</div> ) } ``` This no longer causes an infinite loop. Added a test case in the next PR in the stack --- [//]: # (BEGIN SAPLING FOOTER) Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/34967). * #35044 * #35020 * #34973 * #34972 * #34995 * __->__ #34967 DiffTrain build for [01fb328](01fb328)
1 parent 20639fb commit 66d8807

23 files changed

+158
-92
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.3.0-native-fb-52684925-20251110
1+
19.3.0-native-fb-01fb3286-20251110

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<<4018d96dc7b453db82daa242d29bc546>>
10+
* @generated SignedSource<<89149bcadb793f97208e8089d16f6826>>
1111
*/
1212

1313
"use strict";
@@ -414,5 +414,5 @@ __DEV__ &&
414414
exports.useFormStatus = function () {
415415
return resolveDispatcher().useHostTransitionStatus();
416416
};
417-
exports.version = "19.3.0-native-fb-52684925-20251110";
417+
exports.version = "19.3.0-native-fb-01fb3286-20251110";
418418
})();

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<<bb1343f22cf263077ddb44c7a3b2ded8>>
10+
* @generated SignedSource<<6ee08aeac9ddfbde53af0cb28f2fc8b1>>
1111
*/
1212

1313
"use strict";
@@ -209,4 +209,4 @@ exports.useFormState = function (action, initialState, permalink) {
209209
exports.useFormStatus = function () {
210210
return ReactSharedInternals.H.useHostTransitionStatus();
211211
};
212-
exports.version = "19.3.0-native-fb-52684925-20251110";
212+
exports.version = "19.3.0-native-fb-01fb3286-20251110";

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<<bb1343f22cf263077ddb44c7a3b2ded8>>
10+
* @generated SignedSource<<6ee08aeac9ddfbde53af0cb28f2fc8b1>>
1111
*/
1212

1313
"use strict";
@@ -209,4 +209,4 @@ exports.useFormState = function (action, initialState, permalink) {
209209
exports.useFormStatus = function () {
210210
return ReactSharedInternals.H.useHostTransitionStatus();
211211
};
212-
exports.version = "19.3.0-native-fb-52684925-20251110";
212+
exports.version = "19.3.0-native-fb-01fb3286-20251110";

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

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

1313
/*
@@ -29870,11 +29870,11 @@ __DEV__ &&
2987029870
};
2987129871
(function () {
2987229872
var isomorphicReactPackageVersion = React.version;
29873-
if ("19.3.0-native-fb-52684925-20251110" !== isomorphicReactPackageVersion)
29873+
if ("19.3.0-native-fb-01fb3286-20251110" !== isomorphicReactPackageVersion)
2987429874
throw Error(
2987529875
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
2987629876
(isomorphicReactPackageVersion +
29877-
"\n - react-dom: 19.3.0-native-fb-52684925-20251110\nLearn more: https://react.dev/warnings/version-mismatch")
29877+
"\n - react-dom: 19.3.0-native-fb-01fb3286-20251110\nLearn more: https://react.dev/warnings/version-mismatch")
2987829878
);
2987929879
})();
2988029880
("function" === typeof Map &&
@@ -29911,10 +29911,10 @@ __DEV__ &&
2991129911
!(function () {
2991229912
var internals = {
2991329913
bundleType: 1,
29914-
version: "19.3.0-native-fb-52684925-20251110",
29914+
version: "19.3.0-native-fb-01fb3286-20251110",
2991529915
rendererPackageName: "react-dom",
2991629916
currentDispatcherRef: ReactSharedInternals,
29917-
reconcilerVersion: "19.3.0-native-fb-52684925-20251110"
29917+
reconcilerVersion: "19.3.0-native-fb-01fb3286-20251110"
2991829918
};
2991929919
internals.overrideHookState = overrideHookState;
2992029920
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -30064,5 +30064,5 @@ __DEV__ &&
3006430064
listenToAllSupportedEvents(container);
3006530065
return new ReactDOMHydrationRoot(initialChildren);
3006630066
};
30067-
exports.version = "19.3.0-native-fb-52684925-20251110";
30067+
exports.version = "19.3.0-native-fb-01fb3286-20251110";
3006830068
})();

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

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

1313
/*
@@ -17493,14 +17493,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1749317493
};
1749417494
var isomorphicReactPackageVersion$jscomp$inline_2052 = React.version;
1749517495
if (
17496-
"19.3.0-native-fb-52684925-20251110" !==
17496+
"19.3.0-native-fb-01fb3286-20251110" !==
1749717497
isomorphicReactPackageVersion$jscomp$inline_2052
1749817498
)
1749917499
throw Error(
1750017500
formatProdErrorMessage(
1750117501
527,
1750217502
isomorphicReactPackageVersion$jscomp$inline_2052,
17503-
"19.3.0-native-fb-52684925-20251110"
17503+
"19.3.0-native-fb-01fb3286-20251110"
1750417504
)
1750517505
);
1750617506
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -17522,10 +17522,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1752217522
};
1752317523
var internals$jscomp$inline_2660 = {
1752417524
bundleType: 0,
17525-
version: "19.3.0-native-fb-52684925-20251110",
17525+
version: "19.3.0-native-fb-01fb3286-20251110",
1752617526
rendererPackageName: "react-dom",
1752717527
currentDispatcherRef: ReactSharedInternals,
17528-
reconcilerVersion: "19.3.0-native-fb-52684925-20251110"
17528+
reconcilerVersion: "19.3.0-native-fb-01fb3286-20251110"
1752917529
};
1753017530
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1753117531
var hook$jscomp$inline_2661 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -17632,4 +17632,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
1763217632
listenToAllSupportedEvents(container);
1763317633
return new ReactDOMHydrationRoot(initialChildren);
1763417634
};
17635-
exports.version = "19.3.0-native-fb-52684925-20251110";
17635+
exports.version = "19.3.0-native-fb-01fb3286-20251110";

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

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

1313
/*
@@ -19601,14 +19601,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1960119601
};
1960219602
var isomorphicReactPackageVersion$jscomp$inline_2367 = React.version;
1960319603
if (
19604-
"19.3.0-native-fb-52684925-20251110" !==
19604+
"19.3.0-native-fb-01fb3286-20251110" !==
1960519605
isomorphicReactPackageVersion$jscomp$inline_2367
1960619606
)
1960719607
throw Error(
1960819608
formatProdErrorMessage(
1960919609
527,
1961019610
isomorphicReactPackageVersion$jscomp$inline_2367,
19611-
"19.3.0-native-fb-52684925-20251110"
19611+
"19.3.0-native-fb-01fb3286-20251110"
1961219612
)
1961319613
);
1961419614
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -19630,10 +19630,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1963019630
};
1963119631
var internals$jscomp$inline_2374 = {
1963219632
bundleType: 0,
19633-
version: "19.3.0-native-fb-52684925-20251110",
19633+
version: "19.3.0-native-fb-01fb3286-20251110",
1963419634
rendererPackageName: "react-dom",
1963519635
currentDispatcherRef: ReactSharedInternals,
19636-
reconcilerVersion: "19.3.0-native-fb-52684925-20251110",
19636+
reconcilerVersion: "19.3.0-native-fb-01fb3286-20251110",
1963719637
getLaneLabelMap: function () {
1963819638
for (
1963919639
var map = new Map(), lane = 1, index$327 = 0;
@@ -19756,4 +19756,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
1975619756
listenToAllSupportedEvents(container);
1975719757
return new ReactDOMHydrationRoot(initialChildren);
1975819758
};
19759-
exports.version = "19.3.0-native-fb-52684925-20251110";
19759+
exports.version = "19.3.0-native-fb-01fb3286-20251110";

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

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

1313
/*
@@ -29926,11 +29926,11 @@ __DEV__ &&
2992629926
};
2992729927
(function () {
2992829928
var isomorphicReactPackageVersion = React.version;
29929-
if ("19.3.0-native-fb-52684925-20251110" !== isomorphicReactPackageVersion)
29929+
if ("19.3.0-native-fb-01fb3286-20251110" !== isomorphicReactPackageVersion)
2993029930
throw Error(
2993129931
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
2993229932
(isomorphicReactPackageVersion +
29933-
"\n - react-dom: 19.3.0-native-fb-52684925-20251110\nLearn more: https://react.dev/warnings/version-mismatch")
29933+
"\n - react-dom: 19.3.0-native-fb-01fb3286-20251110\nLearn more: https://react.dev/warnings/version-mismatch")
2993429934
);
2993529935
})();
2993629936
("function" === typeof Map &&
@@ -29967,10 +29967,10 @@ __DEV__ &&
2996729967
!(function () {
2996829968
var internals = {
2996929969
bundleType: 1,
29970-
version: "19.3.0-native-fb-52684925-20251110",
29970+
version: "19.3.0-native-fb-01fb3286-20251110",
2997129971
rendererPackageName: "react-dom",
2997229972
currentDispatcherRef: ReactSharedInternals,
29973-
reconcilerVersion: "19.3.0-native-fb-52684925-20251110"
29973+
reconcilerVersion: "19.3.0-native-fb-01fb3286-20251110"
2997429974
};
2997529975
internals.overrideHookState = overrideHookState;
2997629976
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
@@ -30450,7 +30450,7 @@ __DEV__ &&
3045030450
exports.useFormStatus = function () {
3045130451
return resolveDispatcher().useHostTransitionStatus();
3045230452
};
30453-
exports.version = "19.3.0-native-fb-52684925-20251110";
30453+
exports.version = "19.3.0-native-fb-01fb3286-20251110";
3045430454
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
3045530455
"function" ===
3045630456
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

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

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

1313
/*
@@ -17504,14 +17504,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1750417504
};
1750517505
var isomorphicReactPackageVersion$jscomp$inline_2053 = React.version;
1750617506
if (
17507-
"19.3.0-native-fb-52684925-20251110" !==
17507+
"19.3.0-native-fb-01fb3286-20251110" !==
1750817508
isomorphicReactPackageVersion$jscomp$inline_2053
1750917509
)
1751017510
throw Error(
1751117511
formatProdErrorMessage(
1751217512
527,
1751317513
isomorphicReactPackageVersion$jscomp$inline_2053,
17514-
"19.3.0-native-fb-52684925-20251110"
17514+
"19.3.0-native-fb-01fb3286-20251110"
1751517515
)
1751617516
);
1751717517
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -17533,10 +17533,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1753317533
};
1753417534
var internals$jscomp$inline_2663 = {
1753517535
bundleType: 0,
17536-
version: "19.3.0-native-fb-52684925-20251110",
17536+
version: "19.3.0-native-fb-01fb3286-20251110",
1753717537
rendererPackageName: "react-dom",
1753817538
currentDispatcherRef: ReactSharedInternals,
17539-
reconcilerVersion: "19.3.0-native-fb-52684925-20251110"
17539+
reconcilerVersion: "19.3.0-native-fb-01fb3286-20251110"
1754017540
};
1754117541
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1754217542
var hook$jscomp$inline_2664 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -17803,4 +17803,4 @@ exports.useFormState = function (action, initialState, permalink) {
1780317803
exports.useFormStatus = function () {
1780417804
return ReactSharedInternals.H.useHostTransitionStatus();
1780517805
};
17806-
exports.version = "19.3.0-native-fb-52684925-20251110";
17806+
exports.version = "19.3.0-native-fb-01fb3286-20251110";

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

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

1313
/*
@@ -19616,14 +19616,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1961619616
};
1961719617
var isomorphicReactPackageVersion$jscomp$inline_2368 = React.version;
1961819618
if (
19619-
"19.3.0-native-fb-52684925-20251110" !==
19619+
"19.3.0-native-fb-01fb3286-20251110" !==
1962019620
isomorphicReactPackageVersion$jscomp$inline_2368
1962119621
)
1962219622
throw Error(
1962319623
formatProdErrorMessage(
1962419624
527,
1962519625
isomorphicReactPackageVersion$jscomp$inline_2368,
19626-
"19.3.0-native-fb-52684925-20251110"
19626+
"19.3.0-native-fb-01fb3286-20251110"
1962719627
)
1962819628
);
1962919629
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -19645,10 +19645,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1964519645
};
1964619646
var internals$jscomp$inline_2375 = {
1964719647
bundleType: 0,
19648-
version: "19.3.0-native-fb-52684925-20251110",
19648+
version: "19.3.0-native-fb-01fb3286-20251110",
1964919649
rendererPackageName: "react-dom",
1965019650
currentDispatcherRef: ReactSharedInternals,
19651-
reconcilerVersion: "19.3.0-native-fb-52684925-20251110",
19651+
reconcilerVersion: "19.3.0-native-fb-01fb3286-20251110",
1965219652
getLaneLabelMap: function () {
1965319653
for (
1965419654
var map = new Map(), lane = 1, index$327 = 0;
@@ -19931,7 +19931,7 @@ exports.useFormState = function (action, initialState, permalink) {
1993119931
exports.useFormStatus = function () {
1993219932
return ReactSharedInternals.H.useHostTransitionStatus();
1993319933
};
19934-
exports.version = "19.3.0-native-fb-52684925-20251110";
19934+
exports.version = "19.3.0-native-fb-01fb3286-20251110";
1993519935
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
1993619936
"function" ===
1993719937
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

0 commit comments

Comments
 (0)