diff --git a/packages/react-native/React/Fabric/RCTSurfacePresenter.mm b/packages/react-native/React/Fabric/RCTSurfacePresenter.mm index f02df630981..3557485f5fd 100644 --- a/packages/react-native/React/Fabric/RCTSurfacePresenter.mm +++ b/packages/react-native/React/Fabric/RCTSurfacePresenter.mm @@ -288,6 +288,10 @@ static BackgroundExecutor RCTGetBackgroundExecutor() CoreFeatures::enableDefaultAsyncBatchedPriority = true; } + if (reactNativeConfig && reactNativeConfig->getBool("react_fabric:enable_cloneless_state_progression")) { + CoreFeatures::enableClonelessStateProgression = true; + } + auto componentRegistryFactory = [factory = wrapManagedObject(_mountingManager.componentViewRegistry.componentViewFactory)]( const EventDispatcher::Weak &eventDispatcher, const ContextContainer::Shared &contextContainer) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java index 8849d1716f2..ec4e7df44be 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java @@ -156,4 +156,7 @@ public class ReactFeatureFlags { /** Utilize shared Event C++ pipeline with fabric's renderer */ public static boolean enableFabricSharedEventPipeline = false; + + /** When enabled, Fabric will avoid cloning notes to perform state progression. */ + public static boolean enableClonelessStateProgression = false; } diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/Binding.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/Binding.cpp index 1be7b7a1b14..2d4cee4cd9b 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/Binding.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/Binding.cpp @@ -436,6 +436,8 @@ void Binding::installFabricUIManager( getFeatureFlagValue("enableCleanParagraphYogaNode"); CoreFeatures::enableDefaultAsyncBatchedPriority = getFeatureFlagValue("enableDefaultAsyncBatchedPriority"); + CoreFeatures::enableClonelessStateProgression = + getFeatureFlagValue("enableClonelessStateProgression"); // RemoveDelete mega-op ShadowViewMutation::PlatformSupportsRemoveDeleteTreeInstruction =