Skip to content

Commit b102cb0

Browse files
committed
[RN] experiment moving Fabric completeWork to the commit phase
1 parent 87b1a94 commit b102cb0

9 files changed

+22
-2
lines changed

packages/react-native-renderer/src/ReactFiberConfigFabric.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ const {
4848
unstable_getCurrentEventPriority: fabricGetCurrentEventPriority,
4949
} = nativeFabricUIManager;
5050

51-
import {passChildrenWhenCloningPersistedNodes} from 'shared/ReactFeatureFlags';
51+
import {
52+
enableFabricCompleteRootInCommitPhase,
53+
passChildrenWhenCloningPersistedNodes,
54+
} from 'shared/ReactFeatureFlags';
5255

5356
const {get: getViewConfigForType} = ReactNativeViewConfigRegistry;
5457

@@ -469,14 +472,19 @@ export function finalizeContainerChildren(
469472
container: Container,
470473
newChildren: ChildSet,
471474
): void {
472-
completeRoot(container, newChildren);
475+
if (!enableFabricCompleteRootInCommitPhase) {
476+
completeRoot(container, newChildren);
477+
}
473478
}
474479

475480
export function replaceContainerChildren(
476481
container: Container,
477482
newChildren: ChildSet,
478483
): void {
479484
// Noop - children will be replaced in finalizeContainerChildren
485+
if (enableFabricCompleteRootInCommitPhase) {
486+
completeRoot(container, newChildren);
487+
}
480488
}
481489

482490
export function getInstanceFromNode(node: any): empty {

packages/shared/ReactFeatureFlags.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ export const enableTaint = __EXPERIMENTAL__;
8787

8888
export const enablePostpone = __EXPERIMENTAL__;
8989

90+
/**
91+
* Switches the Fabric API from doing layout in commit work instead of complete work.
92+
*/
93+
export const enableFabricCompleteRootInCommitPhase = false;
94+
9095
/**
9196
* Switches Fiber creation to a simple object instead of a constructor.
9297
*/

packages/shared/forks/ReactFeatureFlags.native-fb-dynamic.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ export const enableAddPropertiesFastPath = __VARIANT__;
2222
export const enableObjectFiber = __VARIANT__;
2323
export const enableShallowPropDiffing = __VARIANT__;
2424
export const passChildrenWhenCloningPersistedNodes = __VARIANT__;
25+
export const enableFabricCompleteRootInCommitPhase = __VARIANT__;

packages/shared/forks/ReactFeatureFlags.native-fb.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const dynamicFlags: DynamicExportsType = (dynamicFlagsUntyped: any);
2121
export const {
2222
alwaysThrottleRetries,
2323
enableAddPropertiesFastPath,
24+
enableFabricCompleteRootInCommitPhase,
2425
enableObjectFiber,
2526
enableShallowPropDiffing,
2627
passChildrenWhenCloningPersistedNodes,

packages/shared/forks/ReactFeatureFlags.native-oss.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export const enableCreateEventHandleAPI = false;
4444
export const enableDebugTracing = false;
4545
export const enableDeferRootSchedulingToMicrotask = true;
4646
export const enableDO_NOT_USE_disableStrictPassiveEffect = false;
47+
export const enableFabricCompleteRootInCommitPhase = false;
4748
export const enableFilterEmptyStringAttributesDOM = true;
4849
export const enableFizzExternalRuntime = true;
4950
export const enableFlightReadableStream = true;

packages/shared/forks/ReactFeatureFlags.test-renderer.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export const enableComponentStackLocations = true;
4444
export const enableLegacyFBSupport = false;
4545
export const enableFilterEmptyStringAttributesDOM = true;
4646
export const enableGetInspectorDataForInstanceInProduction = false;
47+
export const enableFabricCompleteRootInCommitPhase = false;
4748

4849
export const enableRetryLaneExpiration = false;
4950
export const retryLaneExpirationMs = 5000;

packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ export const retryLaneExpirationMs = 5000;
7878
export const syncLaneExpirationMs = 250;
7979
export const transitionLaneExpirationMs = 5000;
8080
export const useModernStrictMode = true;
81+
export const enableFabricCompleteRootInCommitPhase = false;
8182

8283
// Flow magic to verify the exports of this file match the original version.
8384
((((null: any): ExportsType): FeatureFlagsType): ExportsType);

packages/shared/forks/ReactFeatureFlags.test-renderer.www.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const enableLegacyFBSupport = false;
4747
export const enableFilterEmptyStringAttributesDOM = true;
4848
export const enableGetInspectorDataForInstanceInProduction = false;
4949
export const enableRenderableContext = false;
50+
export const enableFabricCompleteRootInCommitPhase = false;
5051

5152
export const enableRetryLaneExpiration = false;
5253
export const retryLaneExpirationMs = 5000;

packages/shared/forks/ReactFeatureFlags.www.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ export const enableProfilerTimer = __PROFILE__;
4646
export const enableProfilerCommitHooks = __PROFILE__;
4747
export const enableProfilerNestedUpdatePhase = __PROFILE__;
4848
export const enableUpdaterTracking = __PROFILE__;
49+
export const enableFabricCompleteRootInCommitPhase = false;
4950

5051
export const enableSuspenseAvoidThisFallback = true;
5152
export const enableSuspenseAvoidThisFallbackFizz = false;

0 commit comments

Comments
 (0)