diff --git a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java index 43c16011521..2b257e7e7f1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +++ b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java @@ -60,9 +60,6 @@ public class ReactFeatureFlags { /** Enables JS Responder in Fabric */ public static boolean enableJSResponder = false; - /** Enables MapBuffer Serialization */ - public static boolean mapBufferSerializationEnabled = false; - /** An interface used to compute flags on demand. */ public interface FlagProvider { boolean get(); @@ -75,6 +72,17 @@ public class ReactFeatureFlags { enableRuntimeExecutorFlushingProvider = provider; } + private static boolean mapBufferSerializationEnabled = false; + + /** Enables or disables MapBuffer Serialization */ + public static void setMapBufferSerializationEnabled(boolean enabled) { + mapBufferSerializationEnabled = enabled; + } + + public static boolean isMapBufferSerializationEnabled() { + return mapBufferSerializationEnabled; + } + public static boolean enableRuntimeExecutorFlushing() { if (enableRuntimeExecutorFlushingProvider != null) { return enableRuntimeExecutorFlushingProvider.get(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp index d1781bda770..078ab334ff0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp @@ -453,6 +453,17 @@ void Binding::setConstraints( } } +bool isMapBufferSerializationEnabled() { + static const auto reactFeatureFlagsJavaDescriptor = + jni::findClassStatic(Binding::ReactFeatureFlagsJavaDescriptor); + static const auto isMapBufferSerializationEnabledMethod = + reactFeatureFlagsJavaDescriptor->getStaticMethod( + "isMapBufferSerializationEnabled"); + bool value = + isMapBufferSerializationEnabledMethod(reactFeatureFlagsJavaDescriptor); + return value; +} + void Binding::installFabricUIManager( jni::alias_ref runtimeExecutorHolder, jni::alias_ref javaUIManager, @@ -462,9 +473,6 @@ void Binding::installFabricUIManager( jni::alias_ref reactNativeConfig) { SystraceSection s("FabricUIManagerBinding::installFabricUIManager"); - static const auto reactFeatureFlagsJavaDescriptor = - jni::findClassStatic(Binding::ReactFeatureFlagsJavaDescriptor); - std::shared_ptr config = std::make_shared(reactNativeConfig); @@ -533,14 +541,8 @@ void Binding::installFabricUIManager( // Keep reference to config object and cache some feature flags here reactNativeConfig_ = config; - static const auto mapBufferSerializationEnabledField = - reactFeatureFlagsJavaDescriptor->getStaticField( - "mapBufferSerializationEnabled"); - bool mapBufferSerializationEnabled = - reactFeatureFlagsJavaDescriptor->getStaticFieldValue( - mapBufferSerializationEnabledField); contextContainer->insert( - "MapBufferSerializationEnabled", mapBufferSerializationEnabled); + "MapBufferSerializationEnabled", isMapBufferSerializationEnabled()); disablePreallocateViews_ = reactNativeConfig_->getBool( "react_fabric:disabled_view_preallocation_android"); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java index ba871e1679f..f4f618c5ef9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java @@ -95,7 +95,7 @@ public class ReactTextViewManager return null; } - if (ReactFeatureFlags.mapBufferSerializationEnabled) { + if (ReactFeatureFlags.isMapBufferSerializationEnabled()) { ReadableMapBuffer stateMapBuffer = stateWrapper.getStatDataMapBuffer(); if (stateMapBuffer != null) { return getReactTextUpdate(view, props, stateMapBuffer);