remove enableFixForClippedSubviewsCrash experiment (#43963)

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

changelog: [internal]

This experiment did work out. Let's clean it up

Reviewed By: cortinico

Differential Revision: D55797519

fbshipit-source-id: a5da97a7d31b9395b25bfd37db567054721599b0
This commit is contained in:
Samuel Susla
2024-04-09 07:59:00 -07:00
committed by Facebook GitHub Bot
parent 49b0d26d45
commit 3e73dfb535
21 changed files with 31 additions and 154 deletions
@@ -35,7 +35,6 @@ import com.facebook.react.fabric.GuardedFrameCallback;
import com.facebook.react.fabric.events.EventEmitterWrapper;
import com.facebook.react.fabric.mounting.MountingManager.MountItemExecutor;
import com.facebook.react.fabric.mounting.mountitems.MountItem;
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags;
import com.facebook.react.modules.core.ReactChoreographer;
import com.facebook.react.touch.JSResponderHandler;
import com.facebook.react.uimanager.IViewGroupManager;
@@ -50,7 +49,6 @@ import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.ViewManager;
import com.facebook.react.uimanager.ViewManagerRegistry;
import com.facebook.react.uimanager.events.EventCategoryDef;
import com.facebook.react.views.view.ReactViewGroup;
import java.util.ArrayDeque;
import java.util.HashSet;
import java.util.LinkedList;
@@ -384,25 +382,8 @@ public class SurfaceMountingManager {
// should be impossible - we mark this as a "readded" View and
// thus prevent the RemoveDeleteTree worker from deleting this
// View in the future.
if (ReactNativeFeatureFlags.enableFixForClippedSubviewsCrash()) {
if (viewParent instanceof ReactViewGroup) {
ReactViewGroup viewParentGroup = (ReactViewGroup) viewParent;
// If the parent group has subview clipping enabled, we need to use the specialized
// method.
// Otherwise, ReactViewGroup's member variables managing subview clipping
// will get out of sync with Android's view hierarchy, leading to a crash.
if (viewParentGroup.getRemoveClippedSubviews()) {
viewParentGroup.removeViewWithSubviewClippingEnabled(view);
} else {
viewParentGroup.removeView(view);
}
} else if (viewParent instanceof ViewGroup) {
((ViewGroup) viewParent).removeView(view);
}
} else {
if (viewParent instanceof ViewGroup) {
((ViewGroup) viewParent).removeView(view);
}
if (viewParent instanceof ViewGroup) {
((ViewGroup) viewParent).removeView(view);
}
mErroneouslyReaddedReactTags.add(tag);
}
@@ -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<<cc44495e0b264e2d56e155a164a774e7>>
* @generated SignedSource<<4c0ede4fa927bc8361d0355bc7cddb10>>
*/
/**
@@ -58,12 +58,6 @@ public object ReactNativeFeatureFlags {
@JvmStatic
public fun enableCustomDrawOrderFabric(): Boolean = accessor.enableCustomDrawOrderFabric()
/**
* Attempt at fixing a crash related to subview clipping on Android. This is a kill switch for the fix
*/
@JvmStatic
public fun enableFixForClippedSubviewsCrash(): Boolean = accessor.enableFixForClippedSubviewsCrash()
/**
* Enables the use of microtasks in Hermes (scheduling) and RuntimeScheduler (execution).
*/
@@ -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<<99c459dce42767a7da84810fbceea73e>>
* @generated SignedSource<<aa5b9eac9da720ff1a1bc44325a92c46>>
*/
/**
@@ -25,7 +25,6 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
private var enableBackgroundExecutorCache: Boolean? = null
private var enableCleanTextInputYogaNodeCache: Boolean? = null
private var enableCustomDrawOrderFabricCache: Boolean? = null
private var enableFixForClippedSubviewsCrashCache: Boolean? = null
private var enableMicrotasksCache: Boolean? = null
private var enableMountHooksAndroidCache: Boolean? = null
private var enableSpannableBuildingUnificationCache: Boolean? = null
@@ -81,15 +80,6 @@ public class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAccesso
return cached
}
override fun enableFixForClippedSubviewsCrash(): Boolean {
var cached = enableFixForClippedSubviewsCrashCache
if (cached == null) {
cached = ReactNativeFeatureFlagsCxxInterop.enableFixForClippedSubviewsCrash()
enableFixForClippedSubviewsCrashCache = cached
}
return cached
}
override fun enableMicrotasks(): Boolean {
var cached = enableMicrotasksCache
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<<e3a1a041fc9d4f8ea504d064ea01607a>>
* @generated SignedSource<<69c4a4aa9621adfe02c15f5f011b3804>>
*/
/**
@@ -38,8 +38,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
@DoNotStrip @JvmStatic public external fun enableCustomDrawOrderFabric(): Boolean
@DoNotStrip @JvmStatic public external fun enableFixForClippedSubviewsCrash(): Boolean
@DoNotStrip @JvmStatic public external fun enableMicrotasks(): Boolean
@DoNotStrip @JvmStatic public external fun enableMountHooksAndroid(): 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<<cc645d933e253361d5933f56501a35e9>>
* @generated SignedSource<<299901489d5059ed7124f6738be0e48d>>
*/
/**
@@ -33,8 +33,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
override fun enableCustomDrawOrderFabric(): Boolean = false
override fun enableFixForClippedSubviewsCrash(): Boolean = false
override fun enableMicrotasks(): Boolean = false
override fun enableMountHooksAndroid(): 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<<dc699311bdbebb8db4ee313611d192b5>>
* @generated SignedSource<<1c5e5d965ec746a3d06748ef922b8460>>
*/
/**
@@ -29,7 +29,6 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
private var enableBackgroundExecutorCache: Boolean? = null
private var enableCleanTextInputYogaNodeCache: Boolean? = null
private var enableCustomDrawOrderFabricCache: Boolean? = null
private var enableFixForClippedSubviewsCrashCache: Boolean? = null
private var enableMicrotasksCache: Boolean? = null
private var enableMountHooksAndroidCache: Boolean? = null
private var enableSpannableBuildingUnificationCache: Boolean? = null
@@ -90,16 +89,6 @@ public class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcces
return cached
}
override fun enableFixForClippedSubviewsCrash(): Boolean {
var cached = enableFixForClippedSubviewsCrashCache
if (cached == null) {
cached = currentProvider.enableFixForClippedSubviewsCrash()
accessedFeatureFlags.add("enableFixForClippedSubviewsCrash")
enableFixForClippedSubviewsCrashCache = cached
}
return cached
}
override fun enableMicrotasks(): Boolean {
var cached = enableMicrotasksCache
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<<51dd25e88ebf2ac9929c477e710d3d8d>>
* @generated SignedSource<<2412f7c99bf424397e091a529ac05f32>>
*/
/**
@@ -33,8 +33,6 @@ public interface ReactNativeFeatureFlagsProvider {
@DoNotStrip public fun enableCustomDrawOrderFabric(): Boolean
@DoNotStrip public fun enableFixForClippedSubviewsCrash(): Boolean
@DoNotStrip public fun enableMicrotasks(): Boolean
@DoNotStrip public fun enableMountHooksAndroid(): Boolean
@@ -692,9 +692,7 @@ public class ReactViewGroup extends ViewGroup
}
}
// TODO: make this method package only once we remove Android's mounting layer retry mechanism.
@VisibleForTesting
public void removeViewWithSubviewClippingEnabled(View view) {
/*package*/ void removeViewWithSubviewClippingEnabled(View view) {
UiThreadUtil.assertOnUiThread();
Assertions.assertCondition(mRemoveClippedSubviews);
@@ -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<<ade99ab28f82affa77445231caed9e9d>>
* @generated SignedSource<<0756d56ae2ce45f020ac9a87e9a3d1c3>>
*/
/**
@@ -69,12 +69,6 @@ class ReactNativeFeatureFlagsProviderHolder
return method(javaProvider_);
}
bool enableFixForClippedSubviewsCrash() override {
static const auto method =
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableFixForClippedSubviewsCrash");
return method(javaProvider_);
}
bool enableMicrotasks() override {
static const auto method =
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableMicrotasks");
@@ -158,11 +152,6 @@ bool JReactNativeFeatureFlagsCxxInterop::enableCustomDrawOrderFabric(
return ReactNativeFeatureFlags::enableCustomDrawOrderFabric();
}
bool JReactNativeFeatureFlagsCxxInterop::enableFixForClippedSubviewsCrash(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
return ReactNativeFeatureFlags::enableFixForClippedSubviewsCrash();
}
bool JReactNativeFeatureFlagsCxxInterop::enableMicrotasks(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
return ReactNativeFeatureFlags::enableMicrotasks();
@@ -240,9 +229,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
makeNativeMethod(
"enableCustomDrawOrderFabric",
JReactNativeFeatureFlagsCxxInterop::enableCustomDrawOrderFabric),
makeNativeMethod(
"enableFixForClippedSubviewsCrash",
JReactNativeFeatureFlagsCxxInterop::enableFixForClippedSubviewsCrash),
makeNativeMethod(
"enableMicrotasks",
JReactNativeFeatureFlagsCxxInterop::enableMicrotasks),
@@ -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<<ca2e44ed44d1ba779bb4ac49d795299f>>
* @generated SignedSource<<1ae5c51e5b1c1725565e57a02d19c3a7>>
*/
/**
@@ -45,9 +45,6 @@ class JReactNativeFeatureFlagsCxxInterop
static bool enableCustomDrawOrderFabric(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
static bool enableFixForClippedSubviewsCrash(
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
static bool enableMicrotasks(
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<<f1a871bce940e7558363902e56a1ed5e>>
* @generated SignedSource<<520ae882fb57dec58ededd47411c0b1d>>
*/
/**
@@ -41,10 +41,6 @@ bool ReactNativeFeatureFlags::enableCustomDrawOrderFabric() {
return getAccessor().enableCustomDrawOrderFabric();
}
bool ReactNativeFeatureFlags::enableFixForClippedSubviewsCrash() {
return getAccessor().enableFixForClippedSubviewsCrash();
}
bool ReactNativeFeatureFlags::enableMicrotasks() {
return getAccessor().enableMicrotasks();
}
@@ -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<<881b149aca14f4f73e45e02089787a88>>
* @generated SignedSource<<e9fbc07cb8f1c50e015e34035d50b8d1>>
*/
/**
@@ -62,11 +62,6 @@ class ReactNativeFeatureFlags {
*/
RN_EXPORT static bool enableCustomDrawOrderFabric();
/**
* Attempt at fixing a crash related to subview clipping on Android. This is a kill switch for the fix
*/
RN_EXPORT static bool enableFixForClippedSubviewsCrash();
/**
* Enables the use of microtasks in Hermes (scheduling) and RuntimeScheduler (execution).
*/
@@ -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<<a6f3bb8f6215eb4178483add1df7c626>>
* @generated SignedSource<<65cbd0e1b92ee06da3f466386c516dbc>>
*/
/**
@@ -119,24 +119,6 @@ bool ReactNativeFeatureFlagsAccessor::enableCustomDrawOrderFabric() {
return flagValue.value();
}
bool ReactNativeFeatureFlagsAccessor::enableFixForClippedSubviewsCrash() {
auto flagValue = enableFixForClippedSubviewsCrash_.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, "enableFixForClippedSubviewsCrash");
flagValue = currentProvider_->enableFixForClippedSubviewsCrash();
enableFixForClippedSubviewsCrash_ = flagValue;
}
return flagValue.value();
}
bool ReactNativeFeatureFlagsAccessor::enableMicrotasks() {
auto flagValue = enableMicrotasks_.load();
@@ -146,7 +128,7 @@ bool ReactNativeFeatureFlagsAccessor::enableMicrotasks() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(6, "enableMicrotasks");
markFlagAsAccessed(5, "enableMicrotasks");
flagValue = currentProvider_->enableMicrotasks();
enableMicrotasks_ = flagValue;
@@ -164,7 +146,7 @@ bool ReactNativeFeatureFlagsAccessor::enableMountHooksAndroid() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(7, "enableMountHooksAndroid");
markFlagAsAccessed(6, "enableMountHooksAndroid");
flagValue = currentProvider_->enableMountHooksAndroid();
enableMountHooksAndroid_ = flagValue;
@@ -182,7 +164,7 @@ bool ReactNativeFeatureFlagsAccessor::enableSpannableBuildingUnification() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(8, "enableSpannableBuildingUnification");
markFlagAsAccessed(7, "enableSpannableBuildingUnification");
flagValue = currentProvider_->enableSpannableBuildingUnification();
enableSpannableBuildingUnification_ = flagValue;
@@ -200,7 +182,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(9, "enableSynchronousStateUpdates");
markFlagAsAccessed(8, "enableSynchronousStateUpdates");
flagValue = currentProvider_->enableSynchronousStateUpdates();
enableSynchronousStateUpdates_ = flagValue;
@@ -218,7 +200,7 @@ bool ReactNativeFeatureFlagsAccessor::enableUIConsistency() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(10, "enableUIConsistency");
markFlagAsAccessed(9, "enableUIConsistency");
flagValue = currentProvider_->enableUIConsistency();
enableUIConsistency_ = flagValue;
@@ -236,7 +218,7 @@ bool ReactNativeFeatureFlagsAccessor::inspectorEnableCxxInspectorPackagerConnect
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(11, "inspectorEnableCxxInspectorPackagerConnection");
markFlagAsAccessed(10, "inspectorEnableCxxInspectorPackagerConnection");
flagValue = currentProvider_->inspectorEnableCxxInspectorPackagerConnection();
inspectorEnableCxxInspectorPackagerConnection_ = flagValue;
@@ -254,7 +236,7 @@ bool ReactNativeFeatureFlagsAccessor::inspectorEnableModernCDPRegistry() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(12, "inspectorEnableModernCDPRegistry");
markFlagAsAccessed(11, "inspectorEnableModernCDPRegistry");
flagValue = currentProvider_->inspectorEnableModernCDPRegistry();
inspectorEnableModernCDPRegistry_ = flagValue;
@@ -272,7 +254,7 @@ bool ReactNativeFeatureFlagsAccessor::useModernRuntimeScheduler() {
// be accessing the provider multiple times but the end state of this
// instance and the returned flag value would be the same.
markFlagAsAccessed(13, "useModernRuntimeScheduler");
markFlagAsAccessed(12, "useModernRuntimeScheduler");
flagValue = currentProvider_->useModernRuntimeScheduler();
useModernRuntimeScheduler_ = flagValue;
@@ -290,7 +272,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(14, "useNativeViewConfigsInBridgelessMode");
markFlagAsAccessed(13, "useNativeViewConfigsInBridgelessMode");
flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode();
useNativeViewConfigsInBridgelessMode_ = 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<<48b454c264577c4e85eb6b9b46d5d2c5>>
* @generated SignedSource<<00e1c8f5c451c9744257e0b3fc566949>>
*/
/**
@@ -36,7 +36,6 @@ class ReactNativeFeatureFlagsAccessor {
bool enableBackgroundExecutor();
bool enableCleanTextInputYogaNode();
bool enableCustomDrawOrderFabric();
bool enableFixForClippedSubviewsCrash();
bool enableMicrotasks();
bool enableMountHooksAndroid();
bool enableSpannableBuildingUnification();
@@ -56,14 +55,13 @@ class ReactNativeFeatureFlagsAccessor {
std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
bool wasOverridden_;
std::array<std::atomic<const char*>, 15> accessedFeatureFlags_;
std::array<std::atomic<const char*>, 14> accessedFeatureFlags_;
std::atomic<std::optional<bool>> commonTestFlag_;
std::atomic<std::optional<bool>> batchRenderingUpdatesInEventLoop_;
std::atomic<std::optional<bool>> enableBackgroundExecutor_;
std::atomic<std::optional<bool>> enableCleanTextInputYogaNode_;
std::atomic<std::optional<bool>> enableCustomDrawOrderFabric_;
std::atomic<std::optional<bool>> enableFixForClippedSubviewsCrash_;
std::atomic<std::optional<bool>> enableMicrotasks_;
std::atomic<std::optional<bool>> enableMountHooksAndroid_;
std::atomic<std::optional<bool>> enableSpannableBuildingUnification_;
@@ -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<<6b07d06ca1f100cca35e2b8b108f1993>>
* @generated SignedSource<<57c83d1855f16d4c3ffdd5cb98d57571>>
*/
/**
@@ -47,10 +47,6 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
return false;
}
bool enableFixForClippedSubviewsCrash() override {
return false;
}
bool enableMicrotasks() 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<<633090e21068e67cff5aa9b0d4f9e323>>
* @generated SignedSource<<664351a329e558acf1923baeafe35e9d>>
*/
/**
@@ -30,7 +30,6 @@ class ReactNativeFeatureFlagsProvider {
virtual bool enableBackgroundExecutor() = 0;
virtual bool enableCleanTextInputYogaNode() = 0;
virtual bool enableCustomDrawOrderFabric() = 0;
virtual bool enableFixForClippedSubviewsCrash() = 0;
virtual bool enableMicrotasks() = 0;
virtual bool enableMountHooksAndroid() = 0;
virtual bool enableSpannableBuildingUnification() = 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<<8b20f7b7385c91e54cd385d6af54691b>>
* @generated SignedSource<<8c7e1d8afe1bc2068c94148a258c2ed0>>
*/
/**
@@ -62,11 +62,6 @@ bool NativeReactNativeFeatureFlags::enableCustomDrawOrderFabric(
return ReactNativeFeatureFlags::enableCustomDrawOrderFabric();
}
bool NativeReactNativeFeatureFlags::enableFixForClippedSubviewsCrash(
jsi::Runtime& /*runtime*/) {
return ReactNativeFeatureFlags::enableFixForClippedSubviewsCrash();
}
bool NativeReactNativeFeatureFlags::enableMicrotasks(
jsi::Runtime& /*runtime*/) {
return ReactNativeFeatureFlags::enableMicrotasks();
@@ -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<<0dcfc928ff0eca1cb37766170d9b4379>>
* @generated SignedSource<<9d8d8fd8a9da981fd35c9f134f575e57>>
*/
/**
@@ -45,8 +45,6 @@ class NativeReactNativeFeatureFlags
bool enableCustomDrawOrderFabric(jsi::Runtime& runtime);
bool enableFixForClippedSubviewsCrash(jsi::Runtime& runtime);
bool enableMicrotasks(jsi::Runtime& runtime);
bool enableMountHooksAndroid(jsi::Runtime& runtime);
@@ -51,11 +51,6 @@ const definitions: FeatureFlagDefinitions = {
description:
'When enabled, Fabric will use customDrawOrder in ReactViewGroup (similar to old architecture).',
},
enableFixForClippedSubviewsCrash: {
defaultValue: false,
description:
'Attempt at fixing a crash related to subview clipping on Android. This is a kill switch for the fix',
},
enableMicrotasks: {
defaultValue: false,
description:
@@ -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<<ee6090277aad4b98818b1a3ecb913a23>>
* @generated SignedSource<<9286e5fc6398d839d271af4f4a8ae94b>>
* @flow strict-local
*/
@@ -45,7 +45,6 @@ export type ReactNativeFeatureFlags = {
enableBackgroundExecutor: Getter<boolean>,
enableCleanTextInputYogaNode: Getter<boolean>,
enableCustomDrawOrderFabric: Getter<boolean>,
enableFixForClippedSubviewsCrash: Getter<boolean>,
enableMicrotasks: Getter<boolean>,
enableMountHooksAndroid: Getter<boolean>,
enableSpannableBuildingUnification: Getter<boolean>,
@@ -117,10 +116,6 @@ export const enableCleanTextInputYogaNode: Getter<boolean> = createNativeFlagGet
* When enabled, Fabric will use customDrawOrder in ReactViewGroup (similar to old architecture).
*/
export const enableCustomDrawOrderFabric: Getter<boolean> = createNativeFlagGetter('enableCustomDrawOrderFabric', false);
/**
* Attempt at fixing a crash related to subview clipping on Android. This is a kill switch for the fix
*/
export const enableFixForClippedSubviewsCrash: Getter<boolean> = createNativeFlagGetter('enableFixForClippedSubviewsCrash', false);
/**
* Enables the use of microtasks in Hermes (scheduling) and RuntimeScheduler (execution).
*/
@@ -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<<9e0489da8f2a77565018ee983f7fae7e>>
* @generated SignedSource<<ac87a6f3de21bd3dd244b99322cb2d2c>>
* @flow strict-local
*/
@@ -28,7 +28,6 @@ export interface Spec extends TurboModule {
+enableBackgroundExecutor?: () => boolean;
+enableCleanTextInputYogaNode?: () => boolean;
+enableCustomDrawOrderFabric?: () => boolean;
+enableFixForClippedSubviewsCrash?: () => boolean;
+enableMicrotasks?: () => boolean;
+enableMountHooksAndroid?: () => boolean;
+enableSpannableBuildingUnification?: () => boolean;