diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt index f72fdaed61a..d6d5f257f04 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt @@ -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<<82a7973a820b75c46977931a8b178493>> + * @generated SignedSource<> */ /** @@ -58,6 +58,12 @@ object ReactNativeFeatureFlags { @JvmStatic fun enableSpannableBuildingUnification() = accessor.enableSpannableBuildingUnification() + /** + * When enabled, Fabric will use customDrawOrder in ReactViewGroup (similar to old architecture). + */ + @JvmStatic + fun enableCustomDrawOrderFabric() = accessor.enableCustomDrawOrderFabric() + /** * Overrides the feature flags with the ones provided by the given provider * (generally one that extends `ReactNativeFeatureFlagsDefaults`). diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt index 76e8066ac9a..4fd306ada37 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt @@ -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<<881b7f9eb6b1765764b70719155a457c>> + * @generated SignedSource<<126de7eafa27c27df31d9d4e984ab96c>> */ /** @@ -25,6 +25,7 @@ class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccessor { private var enableMicrotasksCache: Boolean? = null private var batchRenderingUpdatesInEventLoopCache: Boolean? = null private var enableSpannableBuildingUnificationCache: Boolean? = null + private var enableCustomDrawOrderFabricCache: Boolean? = null override fun commonTestFlag(): Boolean { var cached = commonTestFlagCache @@ -71,6 +72,15 @@ class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccessor { return cached } + override fun enableCustomDrawOrderFabric(): Boolean { + var cached = enableCustomDrawOrderFabricCache + if (cached == null) { + cached = ReactNativeFeatureFlagsCxxInterop.enableCustomDrawOrderFabric() + enableCustomDrawOrderFabricCache = cached + } + return cached + } + override fun override(provider: ReactNativeFeatureFlagsProvider) = ReactNativeFeatureFlagsCxxInterop.override(provider as Any) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt index bfb2f4fb25b..5c2b7f55c13 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt @@ -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<> + * @generated SignedSource<<7b01e2f777839812437c60503ebe321b>> */ /** @@ -38,6 +38,8 @@ object ReactNativeFeatureFlagsCxxInterop { @DoNotStrip @JvmStatic external fun enableSpannableBuildingUnification(): Boolean + @DoNotStrip @JvmStatic external fun enableCustomDrawOrderFabric(): Boolean + @DoNotStrip @JvmStatic external fun override(provider: Any) @DoNotStrip @JvmStatic external fun dangerouslyReset() diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt index 10c18f34920..e9913c53ac6 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt @@ -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<<44159bbcf15dc403e40656c71d84516a>> + * @generated SignedSource<<53537c2dcc2f4e298822eaa92b5c507f>> */ /** @@ -32,4 +32,6 @@ open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvider { override fun batchRenderingUpdatesInEventLoop(): Boolean = false override fun enableSpannableBuildingUnification(): Boolean = false + + override fun enableCustomDrawOrderFabric(): Boolean = false } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt index 4646c8ed069..3709da98fe7 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt @@ -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<<85d0ebc43b7c390be7dd89c58f1b7a7a>> + * @generated SignedSource<<9ea3b9587aa49be565b990b4c2f4a870>> */ /** @@ -29,6 +29,7 @@ class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAccessor { private var enableMicrotasksCache: Boolean? = null private var batchRenderingUpdatesInEventLoopCache: Boolean? = null private var enableSpannableBuildingUnificationCache: Boolean? = null + private var enableCustomDrawOrderFabricCache: Boolean? = null override fun commonTestFlag(): Boolean { var cached = commonTestFlagCache @@ -80,6 +81,16 @@ class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAccessor { return cached } + override fun enableCustomDrawOrderFabric(): Boolean { + var cached = enableCustomDrawOrderFabricCache + if (cached == null) { + cached = currentProvider.enableCustomDrawOrderFabric() + accessedFeatureFlags.add("enableCustomDrawOrderFabric") + enableCustomDrawOrderFabricCache = cached + } + return cached + } + override fun override(provider: ReactNativeFeatureFlagsProvider) { if (accessedFeatureFlags.isNotEmpty()) { val accessedFeatureFlagsStr = accessedFeatureFlags.joinToString(separator = ", ") { it } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt index 9ad99119168..4c7d89c2942 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt @@ -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<> + * @generated SignedSource<<9abdc5010330b660feded87e9db882c4>> */ /** @@ -32,4 +32,6 @@ interface ReactNativeFeatureFlagsProvider { @DoNotStrip fun batchRenderingUpdatesInEventLoop(): Boolean @DoNotStrip fun enableSpannableBuildingUnification(): Boolean + + @DoNotStrip fun enableCustomDrawOrderFabric(): Boolean } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java index 6bd724ecb34..913655e17bd 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java @@ -32,6 +32,7 @@ import com.facebook.react.bridge.ReactNoCrashSoftException; import com.facebook.react.bridge.ReactSoftExceptionLogger; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.annotations.VisibleForTesting; +import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags; import com.facebook.react.modules.i18nmanager.I18nUtil; import com.facebook.react.touch.OnInterceptTouchEventListener; import com.facebook.react.touch.ReactHitSlopView; @@ -496,7 +497,11 @@ public class ReactViewGroup extends ViewGroup if (getId() == NO_ID) { return false; } - return ViewUtil.getUIManagerType(getId()) == UIManagerType.FABRIC; + if (ViewUtil.getUIManagerType(getId()) != UIManagerType.FABRIC) { + return false; + } + + return !ReactNativeFeatureFlags.enableCustomDrawOrderFabric(); } private void handleAddView(View view) { diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp index c6c2475efe2..6e77758e963 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp @@ -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<<36acddfcb6c038dbf523ad669bcedeba>> + * @generated SignedSource<<1ba33b527792e241891e821b18b11000>> */ /** @@ -48,6 +48,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableSpannableBuildingUnification( return ReactNativeFeatureFlags::enableSpannableBuildingUnification(); } +bool JReactNativeFeatureFlagsCxxInterop::enableCustomDrawOrderFabric( + facebook::jni::alias_ref /*unused*/) { + return ReactNativeFeatureFlags::enableCustomDrawOrderFabric(); +} + void JReactNativeFeatureFlagsCxxInterop::override( facebook::jni::alias_ref /*unused*/, jni::alias_ref provider) { @@ -80,6 +85,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() { makeNativeMethod( "enableSpannableBuildingUnification", JReactNativeFeatureFlagsCxxInterop::enableSpannableBuildingUnification), + makeNativeMethod( + "enableCustomDrawOrderFabric", + JReactNativeFeatureFlagsCxxInterop::enableCustomDrawOrderFabric), }); } diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h index 0f1d0701aa3..22c991e3b3c 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h @@ -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<> + * @generated SignedSource<> */ /** @@ -45,6 +45,9 @@ class JReactNativeFeatureFlagsCxxInterop static bool enableSpannableBuildingUnification( facebook::jni::alias_ref); + static bool enableCustomDrawOrderFabric( + facebook::jni::alias_ref); + static void override( facebook::jni::alias_ref, jni::alias_ref provider); diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.cpp index b0307d199fb..891a592f003 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.cpp @@ -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<<5f99c47d357e45524b359e6517d1f2eb>> + * @generated SignedSource<<47d7a81b555e133f79db174f599a1940>> */ /** @@ -57,4 +57,10 @@ bool ReactNativeFeatureFlagsProviderHolder::enableSpannableBuildingUnification() return method(javaProvider_); } +bool ReactNativeFeatureFlagsProviderHolder::enableCustomDrawOrderFabric() { + static const auto method = + getJClass()->getMethod("enableCustomDrawOrderFabric"); + return method(javaProvider_); +} + } // namespace facebook::react diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.h b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.h index 858ac784dc5..bb113b90e08 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/ReactNativeFeatureFlagsProviderHolder.h @@ -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<<6aaa06ae0c12de2f432374d0cd048460>> + * @generated SignedSource<<228921c4374aa45bdcd496f0f10d653a>> */ /** @@ -40,6 +40,7 @@ class ReactNativeFeatureFlagsProviderHolder bool enableMicrotasks() override; bool batchRenderingUpdatesInEventLoop() override; bool enableSpannableBuildingUnification() override; + bool enableCustomDrawOrderFabric() override; private: jni::global_ref javaProvider_; diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp index 76a0c4b0fb1..ac6ff131670 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp @@ -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<<809c23db6d36e18d448554900e462aa0>> + * @generated SignedSource<> */ /** @@ -41,6 +41,10 @@ bool ReactNativeFeatureFlags::enableSpannableBuildingUnification() { return getAccessor().enableSpannableBuildingUnification(); } +bool ReactNativeFeatureFlags::enableCustomDrawOrderFabric() { + return getAccessor().enableCustomDrawOrderFabric(); +} + void ReactNativeFeatureFlags::override( std::unique_ptr provider) { getAccessor().override(std::move(provider)); diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h index 336f98fd326..fce650d14c8 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h @@ -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<> + * @generated SignedSource<<479f3a75128ee7e9ea60af544b69e0d7>> */ /** @@ -57,6 +57,11 @@ class ReactNativeFeatureFlags { */ static bool enableSpannableBuildingUnification(); + /** + * When enabled, Fabric will use customDrawOrder in ReactViewGroup (similar to old architecture). + */ + static bool enableCustomDrawOrderFabric(); + /** * Overrides the feature flags with the ones provided by the given provider * (generally one that extends `ReactNativeFeatureFlagsDefaults`). diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp index 4a895702e31..08735ee54f9 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp @@ -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<<15858c6ab96e90350aa5f29eb108b051>> + * @generated SignedSource<> */ /** @@ -113,6 +113,23 @@ bool ReactNativeFeatureFlagsAccessor::enableSpannableBuildingUnification() { return enableSpannableBuildingUnification_.value(); } +bool ReactNativeFeatureFlagsAccessor::enableCustomDrawOrderFabric() { + if (!enableCustomDrawOrderFabric_.has_value()) { + // Mark the flag as accessed. + static const char* flagName = "enableCustomDrawOrderFabric"; + if (std::find( + accessedFeatureFlags_.begin(), + accessedFeatureFlags_.end(), + flagName) == accessedFeatureFlags_.end()) { + accessedFeatureFlags_.push_back(flagName); + } + + enableCustomDrawOrderFabric_.emplace(currentProvider_->enableCustomDrawOrderFabric()); + } + + return enableCustomDrawOrderFabric_.value(); +} + void ReactNativeFeatureFlagsAccessor::override( std::unique_ptr provider) { if (!accessedFeatureFlags_.empty()) { diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h index 08dce4ade84..3738877c920 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h @@ -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<<938f1f3ad6aa3343beb3ad7707a49a87>> + * @generated SignedSource<> */ /** @@ -35,6 +35,7 @@ class ReactNativeFeatureFlagsAccessor { bool enableMicrotasks(); bool batchRenderingUpdatesInEventLoop(); bool enableSpannableBuildingUnification(); + bool enableCustomDrawOrderFabric(); void override(std::unique_ptr provider); @@ -47,6 +48,7 @@ class ReactNativeFeatureFlagsAccessor { std::optional enableMicrotasks_; std::optional batchRenderingUpdatesInEventLoop_; std::optional enableSpannableBuildingUnification_; + std::optional enableCustomDrawOrderFabric_; }; } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h index a01456bcb1d..1c22a1e5131 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h @@ -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<<18dc9a1aa23d156bc94e426ee1864359>> + * @generated SignedSource<<10089e5b138ecb72a6d2b2de22496cb5>> */ /** @@ -46,6 +46,10 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider { bool enableSpannableBuildingUnification() override { return false; } + + bool enableCustomDrawOrderFabric() override { + return false; + } }; } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h index 866ea57bde0..574125bf1d2 100644 --- a/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +++ b/packages/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h @@ -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<<2828ad8eb7ea0a0ea9cb0240eadedeb8>> + * @generated SignedSource<<646e0d7982b7e72f9ff227c80d4c2a49>> */ /** @@ -30,6 +30,7 @@ class ReactNativeFeatureFlagsProvider { virtual bool enableMicrotasks() = 0; virtual bool batchRenderingUpdatesInEventLoop() = 0; virtual bool enableSpannableBuildingUnification() = 0; + virtual bool enableCustomDrawOrderFabric() = 0; }; } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp index 9ae53163109..8c0b73489d5 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +++ b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp @@ -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<> + * @generated SignedSource<<1fc0f55ffba5d6a7be9bb8f7942d45a2>> */ /** @@ -60,4 +60,9 @@ bool NativeReactNativeFeatureFlags::enableSpannableBuildingUnification( return ReactNativeFeatureFlags::enableSpannableBuildingUnification(); } +bool NativeReactNativeFeatureFlags::enableCustomDrawOrderFabric( + jsi::Runtime& /*runtime*/) { + return ReactNativeFeatureFlags::enableCustomDrawOrderFabric(); +} + } // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h index 66c8a516fe7..b812bdd2d61 100644 --- a/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +++ b/packages/react-native/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h @@ -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<> + * @generated SignedSource<<1642f4bbd50bb535c369642dd3a647ad>> */ /** @@ -39,6 +39,8 @@ class NativeReactNativeFeatureFlags bool batchRenderingUpdatesInEventLoop(jsi::Runtime& runtime); bool enableSpannableBuildingUnification(jsi::Runtime& runtime); + + bool enableCustomDrawOrderFabric(jsi::Runtime& runtime); }; } // namespace facebook::react diff --git a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.json b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.json index 8990cc1c3e6..48279fa0a76 100644 --- a/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.json +++ b/packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.json @@ -19,6 +19,10 @@ "enableSpannableBuildingUnification": { "description": "Uses new, deduplicated logic for constructing Android Spannables from text fragments", "defaultValue": false + }, + "enableCustomDrawOrderFabric": { + "description": "When enabled, Fabric will use customDrawOrder in ReactViewGroup (similar to old architecture).", + "defaultValue": false } }, "jsOnly": { diff --git a/packages/react-native/src/private/featureflags/NativeReactNativeFeatureFlags.js b/packages/react-native/src/private/featureflags/NativeReactNativeFeatureFlags.js index 4a8588eb2d3..e610f066761 100644 --- a/packages/react-native/src/private/featureflags/NativeReactNativeFeatureFlags.js +++ b/packages/react-native/src/private/featureflags/NativeReactNativeFeatureFlags.js @@ -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<<80726297990981a85ae106f8566ec662>> + * @generated SignedSource<<4617616de77a1e9255f727fdc8039d92>> * @flow strict-local */ @@ -28,6 +28,7 @@ export interface Spec extends TurboModule { +enableMicrotasks?: () => boolean; +batchRenderingUpdatesInEventLoop?: () => boolean; +enableSpannableBuildingUnification?: () => boolean; + +enableCustomDrawOrderFabric?: () => boolean; } const NativeReactNativeFeatureFlags: ?Spec = TurboModuleRegistry.get( diff --git a/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js b/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js index 8dc98a1f985..858d4a00ba0 100644 --- a/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js +++ b/packages/react-native/src/private/featureflags/ReactNativeFeatureFlags.js @@ -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<> + * @generated SignedSource<> * @flow strict-local */ @@ -44,6 +44,7 @@ export type ReactNativeFeatureFlags = { enableMicrotasks: Getter, batchRenderingUpdatesInEventLoop: Getter, enableSpannableBuildingUnification: Getter, + enableCustomDrawOrderFabric: Getter, } /** @@ -101,6 +102,10 @@ export const batchRenderingUpdatesInEventLoop: Getter = createNativeFla * Uses new, deduplicated logic for constructing Android Spannables from text fragments */ export const enableSpannableBuildingUnification: Getter = createNativeFlagGetter('enableSpannableBuildingUnification', false); +/** + * When enabled, Fabric will use customDrawOrder in ReactViewGroup (similar to old architecture). + */ +export const enableCustomDrawOrderFabric: Getter = createNativeFlagGetter('enableCustomDrawOrderFabric', false); /** * Overrides the feature flags with the provided methods.