mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
delete feature flag enableSynchronousStateUpdates (#52607)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/52607 changelog: [internal] The current design of enableSynchronousStateUpdates is not correct and breaks <Modal /> on Android. let's delete it. Reviewed By: philIip Differential Revision: D78332201 fbshipit-source-id: 109909ebc706168372c565e8ff6e0c95d7565b10
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6b550a279e
commit
10bb2241fc
Vendored
-1
@@ -5,7 +5,6 @@
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @fantom_flags enableFixForParentTagDuringReparenting:true
|
||||
* @fantom_flags enableSynchronousStateUpdates:true
|
||||
* @fantom_flags enableViewCulling:true
|
||||
* @flow strict-local
|
||||
* @format
|
||||
|
||||
+1
-7
@@ -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<<9b580dfb56a10ebe9e80bc7ce0c2ca36>>
|
||||
* @generated SignedSource<<2d4b6e579aaa2b8392fa65d7f86d0351>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -228,12 +228,6 @@ public object ReactNativeFeatureFlags {
|
||||
@JvmStatic
|
||||
public fun enableResourceTimingAPI(): Boolean = accessor.enableResourceTimingAPI()
|
||||
|
||||
/**
|
||||
* Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).
|
||||
*/
|
||||
@JvmStatic
|
||||
public fun enableSynchronousStateUpdates(): Boolean = accessor.enableSynchronousStateUpdates()
|
||||
|
||||
/**
|
||||
* Enables View Culling: as soon as a view goes off screen, it can be reused anywhere in the UI and pieced together with other items to create new UI elements.
|
||||
*/
|
||||
|
||||
+1
-11
@@ -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<<99871d495699fdea7f67b3b29af2d28f>>
|
||||
* @generated SignedSource<<7e07bb5556c0935dd1dd7be433a32065>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -53,7 +53,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
||||
private var enablePreparedTextLayoutCache: Boolean? = null
|
||||
private var enablePropsUpdateReconciliationAndroidCache: Boolean? = null
|
||||
private var enableResourceTimingAPICache: Boolean? = null
|
||||
private var enableSynchronousStateUpdatesCache: Boolean? = null
|
||||
private var enableViewCullingCache: Boolean? = null
|
||||
private var enableViewRecyclingCache: Boolean? = null
|
||||
private var enableViewRecyclingForTextCache: Boolean? = null
|
||||
@@ -376,15 +375,6 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
|
||||
return cached
|
||||
}
|
||||
|
||||
override fun enableSynchronousStateUpdates(): Boolean {
|
||||
var cached = enableSynchronousStateUpdatesCache
|
||||
if (cached == null) {
|
||||
cached = ReactNativeFeatureFlagsCxxInterop.enableSynchronousStateUpdates()
|
||||
enableSynchronousStateUpdatesCache = cached
|
||||
}
|
||||
return cached
|
||||
}
|
||||
|
||||
override fun enableViewCulling(): Boolean {
|
||||
var cached = enableViewCullingCache
|
||||
if (cached == null) {
|
||||
|
||||
+1
-3
@@ -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<<cfa7407ac0b1fe6cfb92dbc22449bae2>>
|
||||
* @generated SignedSource<<1cbcbe3a0563e6254d4e377be394f1ab>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -94,8 +94,6 @@ public object ReactNativeFeatureFlagsCxxInterop {
|
||||
|
||||
@DoNotStrip @JvmStatic public external fun enableResourceTimingAPI(): Boolean
|
||||
|
||||
@DoNotStrip @JvmStatic public external fun enableSynchronousStateUpdates(): Boolean
|
||||
|
||||
@DoNotStrip @JvmStatic public external fun enableViewCulling(): Boolean
|
||||
|
||||
@DoNotStrip @JvmStatic public external fun enableViewRecycling(): Boolean
|
||||
|
||||
+1
-3
@@ -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<<21fdb20c1fca274a6096de088bdd85ff>>
|
||||
* @generated SignedSource<<070a222658505c3ddc87911441499518>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -89,8 +89,6 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
|
||||
|
||||
override fun enableResourceTimingAPI(): Boolean = false
|
||||
|
||||
override fun enableSynchronousStateUpdates(): Boolean = false
|
||||
|
||||
override fun enableViewCulling(): Boolean = false
|
||||
|
||||
override fun enableViewRecycling(): Boolean = false
|
||||
|
||||
+1
-12
@@ -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<<09d954a90ac197146c441b71a7352c24>>
|
||||
* @generated SignedSource<<872fdabc2969e8c8e77993d73a152a4b>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -57,7 +57,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
||||
private var enablePreparedTextLayoutCache: Boolean? = null
|
||||
private var enablePropsUpdateReconciliationAndroidCache: Boolean? = null
|
||||
private var enableResourceTimingAPICache: Boolean? = null
|
||||
private var enableSynchronousStateUpdatesCache: Boolean? = null
|
||||
private var enableViewCullingCache: Boolean? = null
|
||||
private var enableViewRecyclingCache: Boolean? = null
|
||||
private var enableViewRecyclingForTextCache: Boolean? = null
|
||||
@@ -413,16 +412,6 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
|
||||
return cached
|
||||
}
|
||||
|
||||
override fun enableSynchronousStateUpdates(): Boolean {
|
||||
var cached = enableSynchronousStateUpdatesCache
|
||||
if (cached == null) {
|
||||
cached = currentProvider.enableSynchronousStateUpdates()
|
||||
accessedFeatureFlags.add("enableSynchronousStateUpdates")
|
||||
enableSynchronousStateUpdatesCache = cached
|
||||
}
|
||||
return cached
|
||||
}
|
||||
|
||||
override fun enableViewCulling(): Boolean {
|
||||
var cached = enableViewCullingCache
|
||||
if (cached == null) {
|
||||
|
||||
+1
-3
@@ -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<<50a3f126540e1b2afd4a4ce85a4d1ac3>>
|
||||
* @generated SignedSource<<63bdcd9aeb09a55028595eecb42cdcae>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -89,8 +89,6 @@ public interface ReactNativeFeatureFlagsProvider {
|
||||
|
||||
@DoNotStrip public fun enableResourceTimingAPI(): Boolean
|
||||
|
||||
@DoNotStrip public fun enableSynchronousStateUpdates(): Boolean
|
||||
|
||||
@DoNotStrip public fun enableViewCulling(): Boolean
|
||||
|
||||
@DoNotStrip public fun enableViewRecycling(): Boolean
|
||||
|
||||
+1
-15
@@ -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<<d106cd4237f65206b31428ec09344536>>
|
||||
* @generated SignedSource<<116217d3620e8ba52a6e0427a0d46fde>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -237,12 +237,6 @@ class ReactNativeFeatureFlagsJavaProvider
|
||||
return method(javaProvider_);
|
||||
}
|
||||
|
||||
bool enableSynchronousStateUpdates() override {
|
||||
static const auto method =
|
||||
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableSynchronousStateUpdates");
|
||||
return method(javaProvider_);
|
||||
}
|
||||
|
||||
bool enableViewCulling() override {
|
||||
static const auto method =
|
||||
getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableViewCulling");
|
||||
@@ -556,11 +550,6 @@ bool JReactNativeFeatureFlagsCxxInterop::enableResourceTimingAPI(
|
||||
return ReactNativeFeatureFlags::enableResourceTimingAPI();
|
||||
}
|
||||
|
||||
bool JReactNativeFeatureFlagsCxxInterop::enableSynchronousStateUpdates(
|
||||
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
||||
return ReactNativeFeatureFlags::enableSynchronousStateUpdates();
|
||||
}
|
||||
|
||||
bool JReactNativeFeatureFlagsCxxInterop::enableViewCulling(
|
||||
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
|
||||
return ReactNativeFeatureFlags::enableViewCulling();
|
||||
@@ -811,9 +800,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
|
||||
makeNativeMethod(
|
||||
"enableResourceTimingAPI",
|
||||
JReactNativeFeatureFlagsCxxInterop::enableResourceTimingAPI),
|
||||
makeNativeMethod(
|
||||
"enableSynchronousStateUpdates",
|
||||
JReactNativeFeatureFlagsCxxInterop::enableSynchronousStateUpdates),
|
||||
makeNativeMethod(
|
||||
"enableViewCulling",
|
||||
JReactNativeFeatureFlagsCxxInterop::enableViewCulling),
|
||||
|
||||
+1
-4
@@ -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<<42e5e857fdfb9ad780ccc3f942638891>>
|
||||
* @generated SignedSource<<96750d4cfdb356392256a175a3c740ef>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -129,9 +129,6 @@ class JReactNativeFeatureFlagsCxxInterop
|
||||
static bool enableResourceTimingAPI(
|
||||
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
||||
|
||||
static bool enableSynchronousStateUpdates(
|
||||
facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
|
||||
|
||||
static bool enableViewCulling(
|
||||
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<<0ebe67635de9568917a9ed02d92a88e2>>
|
||||
* @generated SignedSource<<8e952ab168159599f6c97fbc68dd57bb>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -158,10 +158,6 @@ bool ReactNativeFeatureFlags::enableResourceTimingAPI() {
|
||||
return getAccessor().enableResourceTimingAPI();
|
||||
}
|
||||
|
||||
bool ReactNativeFeatureFlags::enableSynchronousStateUpdates() {
|
||||
return getAccessor().enableSynchronousStateUpdates();
|
||||
}
|
||||
|
||||
bool ReactNativeFeatureFlags::enableViewCulling() {
|
||||
return getAccessor().enableViewCulling();
|
||||
}
|
||||
|
||||
@@ -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<<ce7268c5f71d95c5214909fbcfa9355e>>
|
||||
* @generated SignedSource<<b6df25d8c333bf7656ade934b404020d>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -204,11 +204,6 @@ class ReactNativeFeatureFlags {
|
||||
*/
|
||||
RN_EXPORT static bool enableResourceTimingAPI();
|
||||
|
||||
/**
|
||||
* Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).
|
||||
*/
|
||||
RN_EXPORT static bool enableSynchronousStateUpdates();
|
||||
|
||||
/**
|
||||
* Enables View Culling: as soon as a view goes off screen, it can be reused anywhere in the UI and pieced together with other items to create new UI elements.
|
||||
*/
|
||||
|
||||
+25
-43
@@ -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<<674887274e2f33e31ca43b0aabe77135>>
|
||||
* @generated SignedSource<<074c50ff00ac8dcc6ff0d766ce44bd53>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -623,24 +623,6 @@ bool ReactNativeFeatureFlagsAccessor::enableResourceTimingAPI() {
|
||||
return flagValue.value();
|
||||
}
|
||||
|
||||
bool ReactNativeFeatureFlagsAccessor::enableSynchronousStateUpdates() {
|
||||
auto flagValue = enableSynchronousStateUpdates_.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(33, "enableSynchronousStateUpdates");
|
||||
|
||||
flagValue = currentProvider_->enableSynchronousStateUpdates();
|
||||
enableSynchronousStateUpdates_ = flagValue;
|
||||
}
|
||||
|
||||
return flagValue.value();
|
||||
}
|
||||
|
||||
bool ReactNativeFeatureFlagsAccessor::enableViewCulling() {
|
||||
auto flagValue = enableViewCulling_.load();
|
||||
|
||||
@@ -650,7 +632,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(34, "enableViewCulling");
|
||||
markFlagAsAccessed(33, "enableViewCulling");
|
||||
|
||||
flagValue = currentProvider_->enableViewCulling();
|
||||
enableViewCulling_ = flagValue;
|
||||
@@ -668,7 +650,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(35, "enableViewRecycling");
|
||||
markFlagAsAccessed(34, "enableViewRecycling");
|
||||
|
||||
flagValue = currentProvider_->enableViewRecycling();
|
||||
enableViewRecycling_ = flagValue;
|
||||
@@ -686,7 +668,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(36, "enableViewRecyclingForText");
|
||||
markFlagAsAccessed(35, "enableViewRecyclingForText");
|
||||
|
||||
flagValue = currentProvider_->enableViewRecyclingForText();
|
||||
enableViewRecyclingForText_ = flagValue;
|
||||
@@ -704,7 +686,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(37, "enableViewRecyclingForView");
|
||||
markFlagAsAccessed(36, "enableViewRecyclingForView");
|
||||
|
||||
flagValue = currentProvider_->enableViewRecyclingForView();
|
||||
enableViewRecyclingForView_ = flagValue;
|
||||
@@ -722,7 +704,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewDebugFeatures() {
|
||||
// be accessing the provider multiple times but the end state of this
|
||||
// instance and the returned flag value would be the same.
|
||||
|
||||
markFlagAsAccessed(38, "enableVirtualViewDebugFeatures");
|
||||
markFlagAsAccessed(37, "enableVirtualViewDebugFeatures");
|
||||
|
||||
flagValue = currentProvider_->enableVirtualViewDebugFeatures();
|
||||
enableVirtualViewDebugFeatures_ = flagValue;
|
||||
@@ -740,7 +722,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewRenderState() {
|
||||
// be accessing the provider multiple times but the end state of this
|
||||
// instance and the returned flag value would be the same.
|
||||
|
||||
markFlagAsAccessed(39, "enableVirtualViewRenderState");
|
||||
markFlagAsAccessed(38, "enableVirtualViewRenderState");
|
||||
|
||||
flagValue = currentProvider_->enableVirtualViewRenderState();
|
||||
enableVirtualViewRenderState_ = flagValue;
|
||||
@@ -758,7 +740,7 @@ bool ReactNativeFeatureFlagsAccessor::enableVirtualViewWindowFocusDetection() {
|
||||
// be accessing the provider multiple times but the end state of this
|
||||
// instance and the returned flag value would be the same.
|
||||
|
||||
markFlagAsAccessed(40, "enableVirtualViewWindowFocusDetection");
|
||||
markFlagAsAccessed(39, "enableVirtualViewWindowFocusDetection");
|
||||
|
||||
flagValue = currentProvider_->enableVirtualViewWindowFocusDetection();
|
||||
enableVirtualViewWindowFocusDetection_ = flagValue;
|
||||
@@ -776,7 +758,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(41, "fixMappingOfEventPrioritiesBetweenFabricAndReact");
|
||||
markFlagAsAccessed(40, "fixMappingOfEventPrioritiesBetweenFabricAndReact");
|
||||
|
||||
flagValue = currentProvider_->fixMappingOfEventPrioritiesBetweenFabricAndReact();
|
||||
fixMappingOfEventPrioritiesBetweenFabricAndReact_ = flagValue;
|
||||
@@ -794,7 +776,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(42, "fuseboxEnabledRelease");
|
||||
markFlagAsAccessed(41, "fuseboxEnabledRelease");
|
||||
|
||||
flagValue = currentProvider_->fuseboxEnabledRelease();
|
||||
fuseboxEnabledRelease_ = flagValue;
|
||||
@@ -812,7 +794,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(43, "fuseboxNetworkInspectionEnabled");
|
||||
markFlagAsAccessed(42, "fuseboxNetworkInspectionEnabled");
|
||||
|
||||
flagValue = currentProvider_->fuseboxNetworkInspectionEnabled();
|
||||
fuseboxNetworkInspectionEnabled_ = flagValue;
|
||||
@@ -830,7 +812,7 @@ bool ReactNativeFeatureFlagsAccessor::hideOffscreenVirtualViewsOnIOS() {
|
||||
// be accessing the provider multiple times but the end state of this
|
||||
// instance and the returned flag value would be the same.
|
||||
|
||||
markFlagAsAccessed(44, "hideOffscreenVirtualViewsOnIOS");
|
||||
markFlagAsAccessed(43, "hideOffscreenVirtualViewsOnIOS");
|
||||
|
||||
flagValue = currentProvider_->hideOffscreenVirtualViewsOnIOS();
|
||||
hideOffscreenVirtualViewsOnIOS_ = flagValue;
|
||||
@@ -848,7 +830,7 @@ double ReactNativeFeatureFlagsAccessor::preparedTextCacheSize() {
|
||||
// be accessing the provider multiple times but the end state of this
|
||||
// instance and the returned flag value would be the same.
|
||||
|
||||
markFlagAsAccessed(45, "preparedTextCacheSize");
|
||||
markFlagAsAccessed(44, "preparedTextCacheSize");
|
||||
|
||||
flagValue = currentProvider_->preparedTextCacheSize();
|
||||
preparedTextCacheSize_ = flagValue;
|
||||
@@ -866,7 +848,7 @@ bool ReactNativeFeatureFlagsAccessor::releaseImageDataWhenConsumed() {
|
||||
// be accessing the provider multiple times but the end state of this
|
||||
// instance and the returned flag value would be the same.
|
||||
|
||||
markFlagAsAccessed(46, "releaseImageDataWhenConsumed");
|
||||
markFlagAsAccessed(45, "releaseImageDataWhenConsumed");
|
||||
|
||||
flagValue = currentProvider_->releaseImageDataWhenConsumed();
|
||||
releaseImageDataWhenConsumed_ = flagValue;
|
||||
@@ -884,7 +866,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(47, "traceTurboModulePromiseRejectionsOnAndroid");
|
||||
markFlagAsAccessed(46, "traceTurboModulePromiseRejectionsOnAndroid");
|
||||
|
||||
flagValue = currentProvider_->traceTurboModulePromiseRejectionsOnAndroid();
|
||||
traceTurboModulePromiseRejectionsOnAndroid_ = flagValue;
|
||||
@@ -902,7 +884,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(48, "updateRuntimeShadowNodeReferencesOnCommit");
|
||||
markFlagAsAccessed(47, "updateRuntimeShadowNodeReferencesOnCommit");
|
||||
|
||||
flagValue = currentProvider_->updateRuntimeShadowNodeReferencesOnCommit();
|
||||
updateRuntimeShadowNodeReferencesOnCommit_ = flagValue;
|
||||
@@ -920,7 +902,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(49, "useAlwaysAvailableJSErrorHandling");
|
||||
markFlagAsAccessed(48, "useAlwaysAvailableJSErrorHandling");
|
||||
|
||||
flagValue = currentProvider_->useAlwaysAvailableJSErrorHandling();
|
||||
useAlwaysAvailableJSErrorHandling_ = flagValue;
|
||||
@@ -938,7 +920,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(50, "useFabricInterop");
|
||||
markFlagAsAccessed(49, "useFabricInterop");
|
||||
|
||||
flagValue = currentProvider_->useFabricInterop();
|
||||
useFabricInterop_ = flagValue;
|
||||
@@ -956,7 +938,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(51, "useNativeViewConfigsInBridgelessMode");
|
||||
markFlagAsAccessed(50, "useNativeViewConfigsInBridgelessMode");
|
||||
|
||||
flagValue = currentProvider_->useNativeViewConfigsInBridgelessMode();
|
||||
useNativeViewConfigsInBridgelessMode_ = flagValue;
|
||||
@@ -974,7 +956,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(52, "useOptimizedEventBatchingOnAndroid");
|
||||
markFlagAsAccessed(51, "useOptimizedEventBatchingOnAndroid");
|
||||
|
||||
flagValue = currentProvider_->useOptimizedEventBatchingOnAndroid();
|
||||
useOptimizedEventBatchingOnAndroid_ = flagValue;
|
||||
@@ -992,7 +974,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(53, "useRawPropsJsiValue");
|
||||
markFlagAsAccessed(52, "useRawPropsJsiValue");
|
||||
|
||||
flagValue = currentProvider_->useRawPropsJsiValue();
|
||||
useRawPropsJsiValue_ = flagValue;
|
||||
@@ -1010,7 +992,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(54, "useShadowNodeStateOnClone");
|
||||
markFlagAsAccessed(53, "useShadowNodeStateOnClone");
|
||||
|
||||
flagValue = currentProvider_->useShadowNodeStateOnClone();
|
||||
useShadowNodeStateOnClone_ = flagValue;
|
||||
@@ -1028,7 +1010,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(55, "useTurboModuleInterop");
|
||||
markFlagAsAccessed(54, "useTurboModuleInterop");
|
||||
|
||||
flagValue = currentProvider_->useTurboModuleInterop();
|
||||
useTurboModuleInterop_ = flagValue;
|
||||
@@ -1046,7 +1028,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(56, "useTurboModules");
|
||||
markFlagAsAccessed(55, "useTurboModules");
|
||||
|
||||
flagValue = currentProvider_->useTurboModules();
|
||||
useTurboModules_ = flagValue;
|
||||
@@ -1064,7 +1046,7 @@ double ReactNativeFeatureFlagsAccessor::virtualViewPrerenderRatio() {
|
||||
// be accessing the provider multiple times but the end state of this
|
||||
// instance and the returned flag value would be the same.
|
||||
|
||||
markFlagAsAccessed(57, "virtualViewPrerenderRatio");
|
||||
markFlagAsAccessed(56, "virtualViewPrerenderRatio");
|
||||
|
||||
flagValue = currentProvider_->virtualViewPrerenderRatio();
|
||||
virtualViewPrerenderRatio_ = flagValue;
|
||||
|
||||
+2
-4
@@ -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<<7355987993949fd07c60efac54994d4b>>
|
||||
* @generated SignedSource<<7dd91dc5181b06ffb8909245da18c347>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -65,7 +65,6 @@ class ReactNativeFeatureFlagsAccessor {
|
||||
bool enablePreparedTextLayout();
|
||||
bool enablePropsUpdateReconciliationAndroid();
|
||||
bool enableResourceTimingAPI();
|
||||
bool enableSynchronousStateUpdates();
|
||||
bool enableViewCulling();
|
||||
bool enableViewRecycling();
|
||||
bool enableViewRecyclingForText();
|
||||
@@ -101,7 +100,7 @@ class ReactNativeFeatureFlagsAccessor {
|
||||
std::unique_ptr<ReactNativeFeatureFlagsProvider> currentProvider_;
|
||||
bool wasOverridden_;
|
||||
|
||||
std::array<std::atomic<const char*>, 58> accessedFeatureFlags_;
|
||||
std::array<std::atomic<const char*>, 57> accessedFeatureFlags_;
|
||||
|
||||
std::atomic<std::optional<bool>> commonTestFlag_;
|
||||
std::atomic<std::optional<bool>> cxxNativeAnimatedEnabled_;
|
||||
@@ -136,7 +135,6 @@ class ReactNativeFeatureFlagsAccessor {
|
||||
std::atomic<std::optional<bool>> enablePreparedTextLayout_;
|
||||
std::atomic<std::optional<bool>> enablePropsUpdateReconciliationAndroid_;
|
||||
std::atomic<std::optional<bool>> enableResourceTimingAPI_;
|
||||
std::atomic<std::optional<bool>> enableSynchronousStateUpdates_;
|
||||
std::atomic<std::optional<bool>> enableViewCulling_;
|
||||
std::atomic<std::optional<bool>> enableViewRecycling_;
|
||||
std::atomic<std::optional<bool>> enableViewRecyclingForText_;
|
||||
|
||||
+1
-5
@@ -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<<ce04a87cb868a9885b18951c3c0822ae>>
|
||||
* @generated SignedSource<<64cac29f0902d801e8a7e1d2ab17ddd5>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -159,10 +159,6 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool enableSynchronousStateUpdates() override {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool enableViewCulling() override {
|
||||
return false;
|
||||
}
|
||||
|
||||
+1
-10
@@ -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<<f7c839906f0f5c784d05cd4dae80171c>>
|
||||
* @generated SignedSource<<d8c2161445fd7dead9c4d3444b3c9065>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -342,15 +342,6 @@ class ReactNativeFeatureFlagsDynamicProvider : public ReactNativeFeatureFlagsDef
|
||||
return ReactNativeFeatureFlagsDefaults::enableResourceTimingAPI();
|
||||
}
|
||||
|
||||
bool enableSynchronousStateUpdates() override {
|
||||
auto value = values_["enableSynchronousStateUpdates"];
|
||||
if (!value.isNull()) {
|
||||
return value.getBool();
|
||||
}
|
||||
|
||||
return ReactNativeFeatureFlagsDefaults::enableSynchronousStateUpdates();
|
||||
}
|
||||
|
||||
bool enableViewCulling() override {
|
||||
auto value = values_["enableViewCulling"];
|
||||
if (!value.isNull()) {
|
||||
|
||||
+1
-2
@@ -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<<2aa195b3a81e14b785768b9d74f77132>>
|
||||
* @generated SignedSource<<d759f36e6b262bbcbd7bbdabece76042>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -58,7 +58,6 @@ class ReactNativeFeatureFlagsProvider {
|
||||
virtual bool enablePreparedTextLayout() = 0;
|
||||
virtual bool enablePropsUpdateReconciliationAndroid() = 0;
|
||||
virtual bool enableResourceTimingAPI() = 0;
|
||||
virtual bool enableSynchronousStateUpdates() = 0;
|
||||
virtual bool enableViewCulling() = 0;
|
||||
virtual bool enableViewRecycling() = 0;
|
||||
virtual bool enableViewRecyclingForText() = 0;
|
||||
|
||||
+1
-6
@@ -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<<38ab47539ec62bb4be34a46bb567e28a>>
|
||||
* @generated SignedSource<<3bb595d448d15f55ded8e5ddc4549bcb>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -209,11 +209,6 @@ bool NativeReactNativeFeatureFlags::enableResourceTimingAPI(
|
||||
return ReactNativeFeatureFlags::enableResourceTimingAPI();
|
||||
}
|
||||
|
||||
bool NativeReactNativeFeatureFlags::enableSynchronousStateUpdates(
|
||||
jsi::Runtime& /*runtime*/) {
|
||||
return ReactNativeFeatureFlags::enableSynchronousStateUpdates();
|
||||
}
|
||||
|
||||
bool NativeReactNativeFeatureFlags::enableViewCulling(
|
||||
jsi::Runtime& /*runtime*/) {
|
||||
return ReactNativeFeatureFlags::enableViewCulling();
|
||||
|
||||
+1
-3
@@ -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<<854d17fee309ed9228698bd773c5d44e>>
|
||||
* @generated SignedSource<<130929d2cc38d298a27dd6afc5c746ca>>
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -102,8 +102,6 @@ class NativeReactNativeFeatureFlags
|
||||
|
||||
bool enableResourceTimingAPI(jsi::Runtime& runtime);
|
||||
|
||||
bool enableSynchronousStateUpdates(jsi::Runtime& runtime);
|
||||
|
||||
bool enableViewCulling(jsi::Runtime& runtime);
|
||||
|
||||
bool enableViewRecycling(jsi::Runtime& runtime);
|
||||
|
||||
@@ -20,10 +20,6 @@ EventQueue::EventQueue(
|
||||
eventBeat_(std::move(eventBeat)) {
|
||||
eventBeat_->setBeatCallback(
|
||||
[this](jsi::Runtime& runtime) { onBeat(runtime); });
|
||||
|
||||
if (ReactNativeFeatureFlags::enableSynchronousStateUpdates()) {
|
||||
eventBeat_->unstable_setInduceCallback([this]() { flushStateUpdates(); });
|
||||
}
|
||||
}
|
||||
|
||||
void EventQueue::enqueueEvent(RawEvent&& rawEvent) const {
|
||||
@@ -89,9 +85,7 @@ void EventQueue::experimental_flushSync() const {
|
||||
}
|
||||
|
||||
void EventQueue::onBeat(jsi::Runtime& runtime) const {
|
||||
if (!ReactNativeFeatureFlags::enableSynchronousStateUpdates()) {
|
||||
flushStateUpdates();
|
||||
}
|
||||
flushStateUpdates();
|
||||
flushEvents(runtime);
|
||||
}
|
||||
|
||||
|
||||
@@ -396,17 +396,6 @@ const definitions: FeatureFlagDefinitions = {
|
||||
},
|
||||
ossReleaseStage: 'none',
|
||||
},
|
||||
enableSynchronousStateUpdates: {
|
||||
defaultValue: false,
|
||||
metadata: {
|
||||
dateAdded: '2024-04-25',
|
||||
description:
|
||||
'Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).',
|
||||
expectedReleaseValue: true,
|
||||
purpose: 'experimentation',
|
||||
},
|
||||
ossReleaseStage: 'none',
|
||||
},
|
||||
enableViewCulling: {
|
||||
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<<b4d192e4eb07d03a9e3aa0fb0e988ba5>>
|
||||
* @generated SignedSource<<a81d24ba908aada46657cdb8787b3934>>
|
||||
* @flow strict
|
||||
* @noformat
|
||||
*/
|
||||
@@ -84,7 +84,6 @@ export type ReactNativeFeatureFlags = $ReadOnly<{
|
||||
enablePreparedTextLayout: Getter<boolean>,
|
||||
enablePropsUpdateReconciliationAndroid: Getter<boolean>,
|
||||
enableResourceTimingAPI: Getter<boolean>,
|
||||
enableSynchronousStateUpdates: Getter<boolean>,
|
||||
enableViewCulling: Getter<boolean>,
|
||||
enableViewRecycling: Getter<boolean>,
|
||||
enableViewRecyclingForText: Getter<boolean>,
|
||||
@@ -327,10 +326,6 @@ export const enablePropsUpdateReconciliationAndroid: Getter<boolean> = createNat
|
||||
* Enables the reporting of network resource timings through `PerformanceObserver`.
|
||||
*/
|
||||
export const enableResourceTimingAPI: Getter<boolean> = createNativeFlagGetter('enableResourceTimingAPI', false);
|
||||
/**
|
||||
* Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).
|
||||
*/
|
||||
export const enableSynchronousStateUpdates: Getter<boolean> = createNativeFlagGetter('enableSynchronousStateUpdates', false);
|
||||
/**
|
||||
* Enables View Culling: as soon as a view goes off screen, it can be reused anywhere in the UI and pieced together with other items to create new UI elements.
|
||||
*/
|
||||
|
||||
+1
-2
@@ -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<<f8b808af10955953a2fbec2b9a78a489>>
|
||||
* @generated SignedSource<<8b2d63ddc60c2a236d578b13ecd5ad9f>>
|
||||
* @flow strict
|
||||
* @noformat
|
||||
*/
|
||||
@@ -58,7 +58,6 @@ export interface Spec extends TurboModule {
|
||||
+enablePreparedTextLayout?: () => boolean;
|
||||
+enablePropsUpdateReconciliationAndroid?: () => boolean;
|
||||
+enableResourceTimingAPI?: () => boolean;
|
||||
+enableSynchronousStateUpdates?: () => boolean;
|
||||
+enableViewCulling?: () => boolean;
|
||||
+enableViewRecycling?: () => boolean;
|
||||
+enableViewRecyclingForText?: () => boolean;
|
||||
|
||||
-1
@@ -4,7 +4,6 @@
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @fantom_flags enableSynchronousStateUpdates:true
|
||||
* @flow strict-local
|
||||
* @format
|
||||
*/
|
||||
|
||||
Vendored
+3
-2
@@ -4,7 +4,6 @@
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @fantom_flags enableSynchronousStateUpdates:true
|
||||
* @flow strict-local
|
||||
* @format
|
||||
*/
|
||||
@@ -71,7 +70,9 @@ function TestComponent({
|
||||
* from the JavaScript thread.
|
||||
*/
|
||||
describe('Mounting intermediate commits', () => {
|
||||
it('happens when commiting from the UI thread (bug)', () => {
|
||||
// Enable once synchronous C++ state updates are re-introduced.
|
||||
// eslint-disable-next-line jest/no-disabled-tests
|
||||
it.skip('happens when commiting from the UI thread (bug)', () => {
|
||||
const root = Fantom.createRoot();
|
||||
|
||||
Fantom.runTask(() => {
|
||||
|
||||
Reference in New Issue
Block a user