Remove usages of ShadowNodes by fully releasing disableShadowNodeOnNewArchitectureAndroid() (#50908)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/50908

This diff removes the usages of ShadowNodes in the new architecture by fully releasing disableShadowNodeOnNewArchitectureAndroid() feature flag.
changelog: [internal] internal

Reviewed By: cortinico

Differential Revision: D73519567

fbshipit-source-id: e222e3b4fab371c8bc5480950da005d2a12a8619
This commit is contained in:
David Vacca
2025-04-25 10:29:33 -07:00
committed by Facebook GitHub Bot
parent 6520db2868
commit dfa3a9575a
21 changed files with 60 additions and 176 deletions
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<539c3b06eebd5ba5b12198da7b276851>>
* @generated SignedSource<<48d7086046009130361c8878bded54d0>>
*/
/**
@@ -60,12 +60,6 @@ public object ReactNativeFeatureFlags {
@JvmStatic
public fun disableMountItemReorderingAndroid(): Boolean = accessor.disableMountItemReorderingAndroid()
/**
* Disables the use of ShadowNode (to calculate ViewConfigs) on apps that are fully running on the new architecture on Android
*/
@JvmStatic
public fun disableShadowNodeOnNewArchitectureAndroid(): Boolean = accessor.disableShadowNodeOnNewArchitectureAndroid()
/**
* When enabled, the accessibilityOrder prop will propagate to native platforms and define the accessibility order.
*/
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<800051a42305429384c0a46f17543d86>>
* @generated SignedSource<<2657b39d8c9d8c0020139c267f3c7b2b>>
*/
/**
@@ -25,7 +25,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
private var cxxNativeAnimatedEnabledCache: Boolean? = null
private var disableMainQueueSyncDispatchIOSCache: Boolean? = null
private var disableMountItemReorderingAndroidCache: Boolean? = null
private var disableShadowNodeOnNewArchitectureAndroidCache: Boolean? = null
private var enableAccessibilityOrderCache: Boolean? = null
private var enableAccumulatedUpdatesInRawPropsAndroidCache: Boolean? = null
private var enableBridgelessArchitectureCache: Boolean? = null
@@ -108,15 +107,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
return cached
}
override fun disableShadowNodeOnNewArchitectureAndroid(): Boolean {
var cached = disableShadowNodeOnNewArchitectureAndroidCache
if (cached == null) {
cached = ReactNativeFeatureFlagsCxxInterop.disableShadowNodeOnNewArchitectureAndroid()
disableShadowNodeOnNewArchitectureAndroidCache = cached
}
return cached
}
override fun enableAccessibilityOrder(): Boolean {
var cached = enableAccessibilityOrderCache
if (cached == null) {
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<f467a3ec108e03bde6ee4249ac2fb6ae>>
* @generated SignedSource<<67fd03886fec1f6874bf3ef07878bdc7>>
*/
/**
@@ -38,8 +38,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
@DoNotStrip @JvmStatic public external fun disableMountItemReorderingAndroid(): Boolean
@DoNotStrip @JvmStatic public external fun disableShadowNodeOnNewArchitectureAndroid(): Boolean
@DoNotStrip @JvmStatic public external fun enableAccessibilityOrder(): Boolean
@DoNotStrip @JvmStatic public external fun enableAccumulatedUpdatesInRawPropsAndroid(): Boolean
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<1b96ba67dfa2a679ed2da6f7e70d2a14>>
* @generated SignedSource<<4aa66c9504fb46e2a6b052d708fdc4b0>>
*/
/**
@@ -33,8 +33,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
override fun disableMountItemReorderingAndroid(): Boolean = false
override fun disableShadowNodeOnNewArchitectureAndroid(): Boolean = true
override fun enableAccessibilityOrder(): Boolean = false
override fun enableAccumulatedUpdatesInRawPropsAndroid(): Boolean = false
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<c15f06adf75101e9f8d54e872e5b2f1c>>
* @generated SignedSource<<259f5f37683db64fd63ffb92e4fbae54>>
*/
/**
@@ -29,7 +29,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
private var cxxNativeAnimatedEnabledCache: Boolean? = null
private var disableMainQueueSyncDispatchIOSCache: Boolean? = null
private var disableMountItemReorderingAndroidCache: Boolean? = null
private var disableShadowNodeOnNewArchitectureAndroidCache: Boolean? = null
private var enableAccessibilityOrderCache: Boolean? = null
private var enableAccumulatedUpdatesInRawPropsAndroidCache: Boolean? = null
private var enableBridgelessArchitectureCache: Boolean? = null
@@ -117,16 +116,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
return cached
}
override fun disableShadowNodeOnNewArchitectureAndroid(): Boolean {
var cached = disableShadowNodeOnNewArchitectureAndroidCache
if (cached == null) {
cached = currentProvider.disableShadowNodeOnNewArchitectureAndroid()
accessedFeatureFlags.add("disableShadowNodeOnNewArchitectureAndroid")
disableShadowNodeOnNewArchitectureAndroidCache = cached
}
return cached
}
override fun enableAccessibilityOrder(): Boolean {
var cached = enableAccessibilityOrderCache
if (cached == null) {
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<ba9fe789d14bb30ea8daa0e2d2e4a931>>
* @generated SignedSource<<3082bb1b859031b09fd70de878722016>>
*/
/**
@@ -33,8 +33,6 @@ public interface ReactNativeFeatureFlagsProvider {
@DoNotStrip public fun disableMountItemReorderingAndroid(): Boolean
@DoNotStrip public fun disableShadowNodeOnNewArchitectureAndroid(): Boolean
@DoNotStrip public fun enableAccessibilityOrder(): Boolean
@DoNotStrip public fun enableAccumulatedUpdatesInRawPropsAndroid(): Boolean
@@ -409,11 +409,12 @@ public abstract class ViewManager<T extends View, C extends ReactShadowNode>
*/
public Map<String, String> getNativeProps() {
if (ReactBuildConfig.UNSTABLE_ENABLE_MINIFY_LEGACY_ARCHITECTURE
&& ReactNativeNewArchitectureFeatureFlags.enableBridgelessArchitecture()
&& ReactNativeFeatureFlags.disableShadowNodeOnNewArchitectureAndroid()) {
&& ReactNativeNewArchitectureFeatureFlags.enableBridgelessArchitecture()) {
// TODO: review if we need to check fabricInterop here
return ViewManagerPropertyUpdater.getNativeProps(getClass(), null);
} else {
return ViewManagerPropertyUpdater.getNativeProps(getClass(), getShadowNodeClass());
}
return ViewManagerPropertyUpdater.getNativeProps(getClass(), getShadowNodeClass());
}
/**
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<f985b01434771a1f1b2999a64deb61e5>>
* @generated SignedSource<<d6ad64e99d507c7c51e5c938b2092bfb>>
*/
/**
@@ -69,12 +69,6 @@ class ReactNativeFeatureFlagsJavaProvider
return method(javaProvider_);
}
bool disableShadowNodeOnNewArchitectureAndroid() override {
static const auto method =
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("disableShadowNodeOnNewArchitectureAndroid");
return method(javaProvider_);
}
bool enableAccessibilityOrder() override {
static const auto method =
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableAccessibilityOrder");
@@ -320,11 +314,6 @@ bool JReactNativeFeatureFlagsCxxInterop::disableMountItemReorderingAndroid(
return ReactNativeFeatureFlags::disableMountItemReorderingAndroid();
}
bool JReactNativeFeatureFlagsCxxInterop::disableShadowNodeOnNewArchitectureAndroid(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
return ReactNativeFeatureFlags::disableShadowNodeOnNewArchitectureAndroid();
}
bool JReactNativeFeatureFlagsCxxInterop::enableAccessibilityOrder(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
return ReactNativeFeatureFlags::enableAccessibilityOrder();
@@ -551,9 +540,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
makeNativeMethod(
"disableMountItemReorderingAndroid",
JReactNativeFeatureFlagsCxxInterop::disableMountItemReorderingAndroid),
makeNativeMethod(
"disableShadowNodeOnNewArchitectureAndroid",
JReactNativeFeatureFlagsCxxInterop::disableShadowNodeOnNewArchitectureAndroid),
makeNativeMethod(
"enableAccessibilityOrder",
JReactNativeFeatureFlagsCxxInterop::enableAccessibilityOrder),
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<415bc7c11b79560633d6499014967b61>>
* @generated SignedSource<<b17ca08aeefffe7d55983cca427769e5>>
*/
/**
@@ -45,9 +45,6 @@ class JReactNativeFeatureFlagsCxxInterop
static bool disableMountItemReorderingAndroid(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
static bool disableShadowNodeOnNewArchitectureAndroid(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
static bool enableAccessibilityOrder(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<e5e676c4adc6de06a04d98edce18e1fa>>
* @generated SignedSource<<e53f5772e4813a4084752c9d60766b53>>
*/
/**
@@ -46,10 +46,6 @@ bool ReactNativeFeatureFlags::disableMountItemReorderingAndroid() {
return getAccessor().disableMountItemReorderingAndroid();
}
bool ReactNativeFeatureFlags::disableShadowNodeOnNewArchitectureAndroid() {
return getAccessor().disableShadowNodeOnNewArchitectureAndroid();
}
bool ReactNativeFeatureFlags::enableAccessibilityOrder() {
return getAccessor().enableAccessibilityOrder();
}
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<760cd85fbc95ad02ef5a3e8ff417c4c9>>
* @generated SignedSource<<7db312ec3cf0991e95572baeba2a140e>>
*/
/**
@@ -64,11 +64,6 @@ class ReactNativeFeatureFlags {
*/
RN_EXPORT static bool disableMountItemReorderingAndroid();
/**
* Disables the use of ShadowNode (to calculate ViewConfigs) on apps that are fully running on the new architecture on Android
*/
RN_EXPORT static bool disableShadowNodeOnNewArchitectureAndroid();
/**
* When enabled, the accessibilityOrder prop will propagate to native platforms and define the accessibility order.
*/
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<aebf3b440bbf83c8b9b4203f10cdec5d>>
* @generated SignedSource<<4d75e9c876181bc1ccff9668eb74399b>>
*/
/**
@@ -119,24 +119,6 @@ bool ReactNativeFeatureFlagsAccessor::disableMountItemReorderingAndroid() {
return flagValue.value();
}
bool ReactNativeFeatureFlagsAccessor::disableShadowNodeOnNewArchitectureAndroid() {
auto flagValue = disableShadowNodeOnNewArchitectureAndroid_.load();
if (!flagValue.has_value()) {
// This block is not exclusive but it is not necessary.
// If multiple threads try to initialize the feature flag, we would only
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(5, "disableShadowNodeOnNewArchitectureAndroid");
flagValue = currentProvider_->disableShadowNodeOnNewArchitectureAndroid();
disableShadowNodeOnNewArchitectureAndroid_ = flagValue;
}
return flagValue.value();
}
bool ReactNativeFeatureFlagsAccessor::enableAccessibilityOrder() {
auto flagValue = enableAccessibilityOrder_.load();
@@ -146,7 +128,7 @@ bool ReactNativeFeatureFlagsAccessor::enableAccessibilityOrder() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(6, "enableAccessibilityOrder");
markFlagAsAccessed(5, "enableAccessibilityOrder");
flagValue = currentProvider_->enableAccessibilityOrder();
enableAccessibilityOrder_ = flagValue;
@@ -164,7 +146,7 @@ bool ReactNativeFeatureFlagsAccessor::enableAccumulatedUpdatesInRawPropsAndroid(
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(7, "enableAccumulatedUpdatesInRawPropsAndroid");
markFlagAsAccessed(6, "enableAccumulatedUpdatesInRawPropsAndroid");
flagValue = currentProvider_->enableAccumulatedUpdatesInRawPropsAndroid();
enableAccumulatedUpdatesInRawPropsAndroid_ = flagValue;
@@ -182,7 +164,7 @@ bool ReactNativeFeatureFlagsAccessor::enableBridgelessArchitecture() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(8, "enableBridgelessArchitecture");
markFlagAsAccessed(7, "enableBridgelessArchitecture");
flagValue = currentProvider_->enableBridgelessArchitecture();
enableBridgelessArchitecture_ = flagValue;
@@ -200,7 +182,7 @@ bool ReactNativeFeatureFlagsAccessor::enableCppPropsIteratorSetter() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(9, "enableCppPropsIteratorSetter");
markFlagAsAccessed(8, "enableCppPropsIteratorSetter");
flagValue = currentProvider_->enableCppPropsIteratorSetter();
enableCppPropsIteratorSetter_ = flagValue;
@@ -218,7 +200,7 @@ bool ReactNativeFeatureFlagsAccessor::enableEagerRootViewAttachment() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(10, "enableEagerRootViewAttachment");
markFlagAsAccessed(9, "enableEagerRootViewAttachment");
flagValue = currentProvider_->enableEagerRootViewAttachment();
enableEagerRootViewAttachment_ = flagValue;
@@ -236,7 +218,7 @@ bool ReactNativeFeatureFlagsAccessor::enableFabricLogs() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(11, "enableFabricLogs");
markFlagAsAccessed(10, "enableFabricLogs");
flagValue = currentProvider_->enableFabricLogs();
enableFabricLogs_ = flagValue;
@@ -254,7 +236,7 @@ bool ReactNativeFeatureFlagsAccessor::enableFabricRenderer() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(12, "enableFabricRenderer");
markFlagAsAccessed(11, "enableFabricRenderer");
flagValue = currentProvider_->enableFabricRenderer();
enableFabricRenderer_ = flagValue;
@@ -272,7 +254,7 @@ bool ReactNativeFeatureFlagsAccessor::enableFixForParentTagDuringReparenting() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(13, "enableFixForParentTagDuringReparenting");
markFlagAsAccessed(12, "enableFixForParentTagDuringReparenting");
flagValue = currentProvider_->enableFixForParentTagDuringReparenting();
enableFixForParentTagDuringReparenting_ = flagValue;
@@ -290,7 +272,7 @@ bool ReactNativeFeatureFlagsAccessor::enableFontScaleChangesUpdatingLayout() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(14, "enableFontScaleChangesUpdatingLayout");
markFlagAsAccessed(13, "enableFontScaleChangesUpdatingLayout");
flagValue = currentProvider_->enableFontScaleChangesUpdatingLayout();
enableFontScaleChangesUpdatingLayout_ = flagValue;
@@ -308,7 +290,7 @@ bool ReactNativeFeatureFlagsAccessor::enableIOSViewClipToPaddingBox() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(15, "enableIOSViewClipToPaddingBox");
markFlagAsAccessed(14, "enableIOSViewClipToPaddingBox");
flagValue = currentProvider_->enableIOSViewClipToPaddingBox();
enableIOSViewClipToPaddingBox_ = flagValue;
@@ -326,7 +308,7 @@ bool ReactNativeFeatureFlagsAccessor::enableJSRuntimeGCOnMemoryPressureOnIOS() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(16, "enableJSRuntimeGCOnMemoryPressureOnIOS");
markFlagAsAccessed(15, "enableJSRuntimeGCOnMemoryPressureOnIOS");
flagValue = currentProvider_->enableJSRuntimeGCOnMemoryPressureOnIOS();
enableJSRuntimeGCOnMemoryPressureOnIOS_ = flagValue;
@@ -344,7 +326,7 @@ bool ReactNativeFeatureFlagsAccessor::enableLayoutAnimationsOnAndroid() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(17, "enableLayoutAnimationsOnAndroid");
markFlagAsAccessed(16, "enableLayoutAnimationsOnAndroid");
flagValue = currentProvider_->enableLayoutAnimationsOnAndroid();
enableLayoutAnimationsOnAndroid_ = flagValue;
@@ -362,7 +344,7 @@ bool ReactNativeFeatureFlagsAccessor::enableLayoutAnimationsOnIOS() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(18, "enableLayoutAnimationsOnIOS");
markFlagAsAccessed(17, "enableLayoutAnimationsOnIOS");
flagValue = currentProvider_->enableLayoutAnimationsOnIOS();
enableLayoutAnimationsOnIOS_ = flagValue;
@@ -380,7 +362,7 @@ bool ReactNativeFeatureFlagsAccessor::enableMainQueueModulesOnIOS() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(19, "enableMainQueueModulesOnIOS");
markFlagAsAccessed(18, "enableMainQueueModulesOnIOS");
flagValue = currentProvider_->enableMainQueueModulesOnIOS();
enableMainQueueModulesOnIOS_ = flagValue;
@@ -398,7 +380,7 @@ bool ReactNativeFeatureFlagsAccessor::enableNativeCSSParsing() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(20, "enableNativeCSSParsing");
markFlagAsAccessed(19, "enableNativeCSSParsing");
flagValue = currentProvider_->enableNativeCSSParsing();
enableNativeCSSParsing_ = flagValue;
@@ -416,7 +398,7 @@ bool ReactNativeFeatureFlagsAccessor::enableNewBackgroundAndBorderDrawables() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(21, "enableNewBackgroundAndBorderDrawables");
markFlagAsAccessed(20, "enableNewBackgroundAndBorderDrawables");
flagValue = currentProvider_->enableNewBackgroundAndBorderDrawables();
enableNewBackgroundAndBorderDrawables_ = flagValue;
@@ -434,7 +416,7 @@ bool ReactNativeFeatureFlagsAccessor::enablePropsUpdateReconciliationAndroid() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(22, "enablePropsUpdateReconciliationAndroid");
markFlagAsAccessed(21, "enablePropsUpdateReconciliationAndroid");
flagValue = currentProvider_->enablePropsUpdateReconciliationAndroid();
enablePropsUpdateReconciliationAndroid_ = flagValue;
@@ -452,7 +434,7 @@ bool ReactNativeFeatureFlagsAccessor::enableSynchronousStateUpdates() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(23, "enableSynchronousStateUpdates");
markFlagAsAccessed(22, "enableSynchronousStateUpdates");
flagValue = currentProvider_->enableSynchronousStateUpdates();
enableSynchronousStateUpdates_ = flagValue;
@@ -470,7 +452,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewCulling() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(24, "enableViewCulling");
markFlagAsAccessed(23, "enableViewCulling");
flagValue = currentProvider_->enableViewCulling();
enableViewCulling_ = flagValue;
@@ -488,7 +470,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecycling() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(25, "enableViewRecycling");
markFlagAsAccessed(24, "enableViewRecycling");
flagValue = currentProvider_->enableViewRecycling();
enableViewRecycling_ = flagValue;
@@ -506,7 +488,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForText() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(26, "enableViewRecyclingForText");
markFlagAsAccessed(25, "enableViewRecyclingForText");
flagValue = currentProvider_->enableViewRecyclingForText();
enableViewRecyclingForText_ = flagValue;
@@ -524,7 +506,7 @@ bool ReactNativeFeatureFlagsAccessor::enableViewRecyclingForView() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(27, "enableViewRecyclingForView");
markFlagAsAccessed(26, "enableViewRecyclingForView");
flagValue = currentProvider_->enableViewRecyclingForView();
enableViewRecyclingForView_ = flagValue;
@@ -542,7 +524,7 @@ bool ReactNativeFeatureFlagsAccessor::fixMappingOfEventPrioritiesBetweenFabricAn
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(28, "fixMappingOfEventPrioritiesBetweenFabricAndReact");
markFlagAsAccessed(27, "fixMappingOfEventPrioritiesBetweenFabricAndReact");
flagValue = currentProvider_->fixMappingOfEventPrioritiesBetweenFabricAndReact();
fixMappingOfEventPrioritiesBetweenFabricAndReact_ = flagValue;
@@ -560,7 +542,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxEnabledRelease() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(29, "fuseboxEnabledRelease");
markFlagAsAccessed(28, "fuseboxEnabledRelease");
flagValue = currentProvider_->fuseboxEnabledRelease();
fuseboxEnabledRelease_ = flagValue;
@@ -578,7 +560,7 @@ bool ReactNativeFeatureFlagsAccessor::fuseboxNetworkInspectionEnabled() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(30, "fuseboxNetworkInspectionEnabled");
markFlagAsAccessed(29, "fuseboxNetworkInspectionEnabled");
flagValue = currentProvider_->fuseboxNetworkInspectionEnabled();
fuseboxNetworkInspectionEnabled_ = flagValue;
@@ -596,7 +578,7 @@ bool ReactNativeFeatureFlagsAccessor::traceTurboModulePromiseRejectionsOnAndroid
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(31, "traceTurboModulePromiseRejectionsOnAndroid");
markFlagAsAccessed(30, "traceTurboModulePromiseRejectionsOnAndroid");
flagValue = currentProvider_->traceTurboModulePromiseRejectionsOnAndroid();
traceTurboModulePromiseRejectionsOnAndroid_ = flagValue;
@@ -614,7 +596,7 @@ bool ReactNativeFeatureFlagsAccessor::updateRuntimeShadowNodeReferencesOnCommit(
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(32, "updateRuntimeShadowNodeReferencesOnCommit");
markFlagAsAccessed(31, "updateRuntimeShadowNodeReferencesOnCommit");
flagValue = currentProvider_->updateRuntimeShadowNodeReferencesOnCommit();
updateRuntimeShadowNodeReferencesOnCommit_ = flagValue;
@@ -632,7 +614,7 @@ bool ReactNativeFeatureFlagsAccessor::useAlwaysAvailableJSErrorHandling() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(33, "useAlwaysAvailableJSErrorHandling");
markFlagAsAccessed(32, "useAlwaysAvailableJSErrorHandling");
flagValue = currentProvider_->useAlwaysAvailableJSErrorHandling();
useAlwaysAvailableJSErrorHandling_ = flagValue;
@@ -650,7 +632,7 @@ bool ReactNativeFeatureFlagsAccessor::useEditTextStockAndroidFocusBehavior() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(34, "useEditTextStockAndroidFocusBehavior");
markFlagAsAccessed(33, "useEditTextStockAndroidFocusBehavior");
flagValue = currentProvider_->useEditTextStockAndroidFocusBehavior();
useEditTextStockAndroidFocusBehavior_ = flagValue;
@@ -668,7 +650,7 @@ bool ReactNativeFeatureFlagsAccessor::useFabricInterop() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(35, "useFabricInterop");
markFlagAsAccessed(34, "useFabricInterop");
flagValue = currentProvider_->useFabricInterop();
useFabricInterop_ = flagValue;
@@ -686,7 +668,7 @@ bool ReactNativeFeatureFlagsAccessor::useNativeViewConfigsInBridgelessMode() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(36, "useNativeViewConfigsInBridgelessMode");
markFlagAsAccessed(35, "useNativeViewConfigsInBridgelessMode");
flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode();
useNativeViewConfigsInBridgelessMode_ = flagValue;
@@ -704,7 +686,7 @@ bool ReactNativeFeatureFlagsAccessor::useOptimizedEventBatchingOnAndroid() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(37, "useOptimizedEventBatchingOnAndroid");
markFlagAsAccessed(36, "useOptimizedEventBatchingOnAndroid");
flagValue = currentProvider_->useOptimizedEventBatchingOnAndroid();
useOptimizedEventBatchingOnAndroid_ = flagValue;
@@ -722,7 +704,7 @@ bool ReactNativeFeatureFlagsAccessor::useRawPropsJsiValue() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(38, "useRawPropsJsiValue");
markFlagAsAccessed(37, "useRawPropsJsiValue");
flagValue = currentProvider_->useRawPropsJsiValue();
useRawPropsJsiValue_ = flagValue;
@@ -740,7 +722,7 @@ bool ReactNativeFeatureFlagsAccessor::useShadowNodeStateOnClone() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(39, "useShadowNodeStateOnClone");
markFlagAsAccessed(38, "useShadowNodeStateOnClone");
flagValue = currentProvider_->useShadowNodeStateOnClone();
useShadowNodeStateOnClone_ = flagValue;
@@ -758,7 +740,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModuleInterop() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(40, "useTurboModuleInterop");
markFlagAsAccessed(39, "useTurboModuleInterop");
flagValue = currentProvider_->useTurboModuleInterop();
useTurboModuleInterop_ = flagValue;
@@ -776,7 +758,7 @@ bool ReactNativeFeatureFlagsAccessor::useTurboModules() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(41, "useTurboModules");
markFlagAsAccessed(40, "useTurboModules");
flagValue = currentProvider_->useTurboModules();
useTurboModules_ = flagValue;
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<185f6e3026fd7451a5d1f0c512d9e3b0>>
* @generated SignedSource<<7f4bbe548120b2e917cb461bebc9e618>>
*/
/**
@@ -37,7 +37,6 @@ class ReactNativeFeatureFlagsAccessor {
bool cxxNativeAnimatedEnabled();
bool disableMainQueueSyncDispatchIOS();
bool disableMountItemReorderingAndroid();
bool disableShadowNodeOnNewArchitectureAndroid();
bool enableAccessibilityOrder();
bool enableAccumulatedUpdatesInRawPropsAndroid();
bool enableBridgelessArchitecture();
@@ -85,14 +84,13 @@ class ReactNativeFeatureFlagsAccessor {
std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
bool wasOverridden_;
std::array<std::atomic<const char*>, 42> accessedFeatureFlags_;
std::array<std::atomic<const char*>, 41> accessedFeatureFlags_;
std::atomic<std::optional<bool>> commonTestFlag_;
std::atomic<std::optional<bool>> animatedShouldSignalBatch_;
std::atomic<std::optional<bool>> cxxNativeAnimatedEnabled_;
std::atomic<std::optional<bool>> disableMainQueueSyncDispatchIOS_;
std::atomic<std::optional<bool>> disableMountItemReorderingAndroid_;
std::atomic<std::optional<bool>> disableShadowNodeOnNewArchitectureAndroid_;
std::atomic<std::optional<bool>> enableAccessibilityOrder_;
std::atomic<std::optional<bool>> enableAccumulatedUpdatesInRawPropsAndroid_;
std::atomic<std::optional<bool>> enableBridgelessArchitecture_;
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<02eee4ab43643c5b4a77a041775da76f>>
* @generated SignedSource<<66f9e7efff940d44d6e0155c217a58fa>>
*/
/**
@@ -47,10 +47,6 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
return false;
}
bool disableShadowNodeOnNewArchitectureAndroid() override {
return true;
}
bool enableAccessibilityOrder() override {
return false;
}
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<dc4db71645093cb063feeb6f5c1b42ef>>
* @generated SignedSource<<e6ac6ad8ad5f9ccca5b0ae6542351e4b>>
*/
/**
@@ -90,15 +90,6 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
return ReactNativeFeatureFlagsDefaults::disableMountItemReorderingAndroid();
}
bool disableShadowNodeOnNewArchitectureAndroid() override {
auto value = values_["disableShadowNodeOnNewArchitectureAndroid"];
if (!value.isNull()) {
return value.getBool();
}
return ReactNativeFeatureFlagsDefaults::disableShadowNodeOnNewArchitectureAndroid();
}
bool enableAccessibilityOrder() override {
auto value = values_["enableAccessibilityOrder"];
if (!value.isNull()) {
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<a911a5b7f38d1d5a06fc7abaf78520fb>>
* @generated SignedSource<<ac6770e48879436585097f5a52daf1a9>>
*/
/**
@@ -30,7 +30,6 @@ class ReactNativeFeatureFlagsProvider {
virtual bool cxxNativeAnimatedEnabled() = 0;
virtual bool disableMainQueueSyncDispatchIOS() = 0;
virtual bool disableMountItemReorderingAndroid() = 0;
virtual bool disableShadowNodeOnNewArchitectureAndroid() = 0;
virtual bool enableAccessibilityOrder() = 0;
virtual bool enableAccumulatedUpdatesInRawPropsAndroid() = 0;
virtual bool enableBridgelessArchitecture() = 0;
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<efefae523e3959b9d988beff7723eb0a>>
* @generated SignedSource<<9fe893ed03ed7e5e7311e0f2a42665fa>>
*/
/**
@@ -69,11 +69,6 @@ bool NativeReactNativeFeatureFlags::disableMountItemReorderingAndroid(
return ReactNativeFeatureFlags::disableMountItemReorderingAndroid();
}
bool NativeReactNativeFeatureFlags::disableShadowNodeOnNewArchitectureAndroid(
jsi::Runtime& /*runtime*/) {
return ReactNativeFeatureFlags::disableShadowNodeOnNewArchitectureAndroid();
}
bool NativeReactNativeFeatureFlags::enableAccessibilityOrder(
jsi::Runtime& /*runtime*/) {
return ReactNativeFeatureFlags::enableAccessibilityOrder();
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<7582cb98a7030e782c43987534354b39>>
* @generated SignedSource<<946133c5d7558ff45e1a30ba67d4e170>>
*/
/**
@@ -47,8 +47,6 @@ class NativeReactNativeFeatureFlags
bool disableMountItemReorderingAndroid(jsi::Runtime& runtime);
bool disableShadowNodeOnNewArchitectureAndroid(jsi::Runtime& runtime);
bool enableAccessibilityOrder(jsi::Runtime& runtime);
bool enableAccumulatedUpdatesInRawPropsAndroid(jsi::Runtime& runtime);
@@ -102,17 +102,6 @@ const definitions: FeatureFlagDefinitions = {
},
ossReleaseStage: 'none',
},
disableShadowNodeOnNewArchitectureAndroid: {
defaultValue: true,
metadata: {
dateAdded: '2025-04-07',
description:
'Disables the use of ShadowNode (to calculate ViewConfigs) on apps that are fully running on the new architecture on Android',
expectedReleaseValue: true,
purpose: 'experimentation',
},
ossReleaseStage: 'none',
},
enableAccessibilityOrder: {
defaultValue: false,
metadata: {
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<09dd2edcdc795abe64fa33ba1c16b2c6>>
* @generated SignedSource<<4114c831605f7c3fc4ff620dbe62a1a6>>
* @flow strict
*/
@@ -51,7 +51,6 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
cxxNativeAnimatedEnabled: Getter<boolean>,
disableMainQueueSyncDispatchIOS: Getter<boolean>,
disableMountItemReorderingAndroid: Getter<boolean>,
disableShadowNodeOnNewArchitectureAndroid: Getter<boolean>,
enableAccessibilityOrder: Getter<boolean>,
enableAccumulatedUpdatesInRawPropsAndroid: Getter<boolean>,
enableBridgelessArchitecture: Getter<boolean>,
@@ -174,10 +173,6 @@ export const disableMainQueueSyncDispatchIOS: Getter<boolean> = createNativeFlag
* Prevent FabricMountingManager from reordering mountItems, which may lead to invalid state on the UI thread
*/
export const disableMountItemReorderingAndroid: Getter<boolean> = createNativeFlagGetter('disableMountItemReorderingAndroid', false);
/**
* Disables the use of ShadowNode (to calculate ViewConfigs) on apps that are fully running on the new architecture on Android
*/
export const disableShadowNodeOnNewArchitectureAndroid: Getter<boolean> = createNativeFlagGetter('disableShadowNodeOnNewArchitectureAndroid', true);
/**
* When enabled, the accessibilityOrder prop will propagate to native platforms and define the accessibility order.
*/
@@ -4,7 +4,7 @@
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @generated SignedSource<<4c50d18e0eb10cbdb8cd0282f4812dd0>>
* @generated SignedSource<<10cdac8c3b5be3166412b34593286bd1>>
* @flow strict
*/
@@ -29,7 +29,6 @@ export interface Spec extends TurboModule {
+cxxNativeAnimatedEnabled?: () => boolean;
+disableMainQueueSyncDispatchIOS?: () => boolean;
+disableMountItemReorderingAndroid?: () => boolean;
+disableShadowNodeOnNewArchitectureAndroid?: () => boolean;
+enableAccessibilityOrder?: () => boolean;
+enableAccumulatedUpdatesInRawPropsAndroid?: () => boolean;
+enableBridgelessArchitecture?: () => boolean;