diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt index 7a33df4ae121..6ed45e57e0e4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt @@ -12,6 +12,7 @@ import com.facebook.common.logging.FLog import com.facebook.react.bridge.ReadableArray import com.facebook.react.uimanager.ViewManagersPropertyCache.PropSetter import java.util.HashMap +import java.util.concurrent.ConcurrentHashMap @Suppress("DEPRECATION") public object ViewManagerPropertyUpdater { @@ -31,8 +32,11 @@ public object ViewManagerPropertyUpdater { private const val TAG = "ViewManagerPropertyUpdater" - private val VIEW_MANAGER_SETTER_MAP: MutableMap, ViewManagerSetter<*, *>> = HashMap() - private val SHADOW_NODE_SETTER_MAP: MutableMap, ShadowNodeSetter<*>> = HashMap() + // Used from the JS thread (view configs) and the UI thread (prop updates). + private val VIEW_MANAGER_SETTER_MAP: MutableMap, ViewManagerSetter<*, *>> = + ConcurrentHashMap() + private val SHADOW_NODE_SETTER_MAP: MutableMap, ShadowNodeSetter<*>> = + ConcurrentHashMap() @JvmStatic public fun clear() { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.kt index 2c4f6c702b83..1cad6c414322 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.kt @@ -21,6 +21,7 @@ import com.facebook.react.uimanager.annotations.ReactProp import com.facebook.react.uimanager.annotations.ReactPropGroup import com.facebook.yoga.YogaValue import java.lang.reflect.Method +import java.util.concurrent.ConcurrentHashMap /** * This class is responsible for holding view manager property setters and is used in a process of @@ -29,7 +30,9 @@ import java.lang.reflect.Method @Suppress("DEPRECATION") // ReactShadowNode is @Deprecated but still required by this cache. internal object ViewManagersPropertyCache { - private val CLASS_PROPS_CACHE: MutableMap, Map> = HashMap() + // Used from the JS thread (view configs) and the UI thread (prop updates). + private val CLASS_PROPS_CACHE: MutableMap, Map> = + ConcurrentHashMap() private val EMPTY_PROPS_MAP: MutableMap = HashMap() @JvmStatic