@samitouri / QOS-React-2 / commits / 28625c6f45

Disable strict effects for legacy roots (again) (#21591)

Brian Vaughn committed May 31, 2021 at 10:05 UTC 28625c6f45423e6edc5ca0e2932281769c0d431e
4 files changed +10 -10
packages/react-reconciler/src/ReactFiber.new.js
+5 -1
@@ -492,7 +492,11 @@ export function createFiberFromTypeAndProps(
492 break;
493 case REACT_STRICT_MODE_TYPE:
494 fiberTag = Mode;
495 - mode |= StrictLegacyMode | StrictEffectsMode;
495 + mode |= StrictLegacyMode;
496 + if (enableStrictEffects && (mode & ConcurrentMode) !== NoMode) {
497 + // Strict effects should never run on legacy roots
498 + mode |= StrictEffectsMode;
499 + }
500 break;
501 case REACT_PROFILER_TYPE:
502 return createFiberFromProfiler(pendingProps, mode, lanes, key);
packages/react-reconciler/src/ReactFiber.old.js
+5 -1
@@ -492,7 +492,11 @@ export function createFiberFromTypeAndProps(
492 break;
493 case REACT_STRICT_MODE_TYPE:
494 fiberTag = Mode;
495 - mode |= StrictLegacyMode | StrictEffectsMode;
495 + mode |= StrictLegacyMode;
496 + if (enableStrictEffects && (mode & ConcurrentMode) !== NoMode) {
497 + // Strict effects should never run on legacy roots
498 + mode |= StrictEffectsMode;
499 + }
500 break;
501 case REACT_PROFILER_TYPE:
502 return createFiberFromProfiler(pendingProps, mode, lanes, key);
packages/react-reconciler/src/ReactFiberClassComponent.new.js
-4
@@ -923,7 +923,6 @@ function mountClassInstance(
923 enableStrictEffects &&
924 (workInProgress.mode & StrictEffectsMode) !== NoMode
925 ) {
926 - // Never double-invoke effects for legacy roots.
926 fiberFlags |= MountLayoutDev;
927 }
928 workInProgress.flags |= fiberFlags;
@@ -1005,7 +1004,6 @@ function resumeMountClassInstance(
1004 enableStrictEffects &&
1005 (workInProgress.mode & StrictEffectsMode) !== NoMode
1006 ) {
1008 - // Never double-invoke effects for legacy roots.
1007 fiberFlags |= MountLayoutDev;
1008 }
1009 workInProgress.flags |= fiberFlags;
@@ -1060,7 +1058,6 @@ function resumeMountClassInstance(
1058 enableStrictEffects &&
1059 (workInProgress.mode & StrictEffectsMode) !== NoMode
1060 ) {
1063 - // Never double-invoke effects for legacy roots.
1061 fiberFlags |= MountLayoutDev;
1062 }
1063 workInProgress.flags |= fiberFlags;
@@ -1078,7 +1075,6 @@ function resumeMountClassInstance(
1075 enableStrictEffects &&
1076 (workInProgress.mode & StrictEffectsMode) !== NoMode
1077 ) {
1081 - // Never double-invoke effects for legacy roots.
1078 fiberFlags |= MountLayoutDev;
1079 }
1080 workInProgress.flags |= fiberFlags;
packages/react-reconciler/src/ReactFiberClassComponent.old.js
-4
@@ -923,7 +923,6 @@ function mountClassInstance(
923 enableStrictEffects &&
924 (workInProgress.mode & StrictEffectsMode) !== NoMode
925 ) {
926 - // Never double-invoke effects for legacy roots.
926 fiberFlags |= MountLayoutDev;
927 }
928 workInProgress.flags |= fiberFlags;
@@ -1005,7 +1004,6 @@ function resumeMountClassInstance(
1004 enableStrictEffects &&
1005 (workInProgress.mode & StrictEffectsMode) !== NoMode
1006 ) {
1008 - // Never double-invoke effects for legacy roots.
1007 fiberFlags |= MountLayoutDev;
1008 }
1009 workInProgress.flags |= fiberFlags;
@@ -1060,7 +1058,6 @@ function resumeMountClassInstance(
1058 enableStrictEffects &&
1059 (workInProgress.mode & StrictEffectsMode) !== NoMode
1060 ) {
1063 - // Never double-invoke effects for legacy roots.
1061 fiberFlags |= MountLayoutDev;
1062 }
1063 workInProgress.flags |= fiberFlags;
@@ -1078,7 +1075,6 @@ function resumeMountClassInstance(
1075 enableStrictEffects &&
1076 (workInProgress.mode & StrictEffectsMode) !== NoMode
1077 ) {
1081 - // Never double-invoke effects for legacy roots.
1078 fiberFlags |= MountLayoutDev;
1079 }
1080 workInProgress.flags |= fiberFlags;