diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java
new file mode 100644
index 00000000000..7d1cb572449
--- /dev/null
+++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricComponents.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+package com.facebook.react.fabric;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Utility class for Fabric components, this will be removed
+ *
+ *
//TODO T31905686: remove this class when the component names are unified between JS - Android
+ * - iOS - C++
+ */
+public class FabricComponents {
+
+ private static final Map sComponentNames = new HashMap<>();
+
+ static {
+ // TODO T31905686: unify component names between JS - Android - iOS - C++
+ sComponentNames.put("View", "RCTView");
+ sComponentNames.put("Image", "RCTImageView");
+ sComponentNames.put("ScrollView", "RCTScrollView");
+ sComponentNames.put("Slider", "RCTSlider");
+ sComponentNames.put("ModalHostView", "RCTModalHostView");
+ sComponentNames.put("Paragraph", "RCTText");
+ sComponentNames.put("Text", "RCText");
+ sComponentNames.put("RawText", "RCTRawText");
+ sComponentNames.put("ActivityIndicatorView", "AndroidProgressBar");
+ sComponentNames.put("ShimmeringView", "RKShimmeringView");
+ sComponentNames.put("TemplateView", "RCTTemplateView");
+ sComponentNames.put("AxialGradientView", "RCTAxialGradientView");
+ }
+
+ /**
+ * @return the name of component in the Fabric environment
+ */
+ static String getFabricComponentName(String componentName) {
+ String component = sComponentNames.get(componentName);
+ return component != null ? component : componentName;
+ }
+
+}
diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java
index e126da4a0e9..f83bbd4abd6 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricJSIModuleProvider.java
@@ -96,6 +96,7 @@ public class FabricJSIModuleProvider implements JSIModuleProvider {
private static void loadClasses() {
BatchEventDispatchedListener.class.getClass();
ReactNativeConfig.class.getClass();
+ FabricComponents.class.getClass();
ViewManagerFactory.class.getClass();
StateWrapper.class.getClass();
ViewFactory.class.getClass();
diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java
index 912523c68b6..2f3c6584328 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java
@@ -7,6 +7,7 @@
package com.facebook.react.fabric;
import static com.facebook.infer.annotation.ThreadConfined.UI;
+import static com.facebook.react.fabric.FabricComponents.getFabricComponentName;
import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getMaxSize;
import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getMinSize;
import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getYogaMeasureMode;
@@ -15,10 +16,10 @@ import static com.facebook.react.uimanager.common.UIManagerType.FABRIC;
import android.annotation.SuppressLint;
import android.os.SystemClock;
+import android.view.View;
import androidx.annotation.GuardedBy;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
-import android.view.View;
import com.facebook.common.logging.FLog;
import com.facebook.debug.holder.PrinterHolder;
import com.facebook.debug.tags.ReactDebugOverlayTags;
@@ -38,9 +39,9 @@ import com.facebook.react.fabric.jsi.Binding;
import com.facebook.react.fabric.jsi.EventBeatManager;
import com.facebook.react.fabric.jsi.EventEmitterWrapper;
import com.facebook.react.fabric.jsi.FabricSoLoader;
-import com.facebook.react.fabric.mounting.mountitems.CreateMountItem;
import com.facebook.react.fabric.mounting.MountingManager;
import com.facebook.react.fabric.mounting.mountitems.BatchMountItem;
+import com.facebook.react.fabric.mounting.mountitems.CreateMountItem;
import com.facebook.react.fabric.mounting.mountitems.DeleteMountItem;
import com.facebook.react.fabric.mounting.mountitems.DispatchCommandMountItem;
import com.facebook.react.fabric.mounting.mountitems.InsertMountItem;
@@ -73,27 +74,12 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
public static final String TAG = FabricUIManager.class.getSimpleName();
public static final boolean DEBUG =
PrinterHolder.getPrinter().shouldDisplayLogMessage(ReactDebugOverlayTags.FABRIC_UI_MANAGER);
- private static final Map sComponentNames = new HashMap<>();
private static final int FRAME_TIME_MS = 16;
private static final int MAX_TIME_IN_FRAME_FOR_NON_BATCHED_OPERATIONS_MS = 8;
private static final int PRE_MOUNT_ITEMS_INITIAL_SIZE_ARRAY = 250;
static {
FabricSoLoader.staticInit();
-
- // TODO T31905686: unify component names between JS - Android - iOS - C++
- sComponentNames.put("View", "RCTView");
- sComponentNames.put("Image", "RCTImageView");
- sComponentNames.put("ScrollView", "RCTScrollView");
- sComponentNames.put("Slider", "RCTSlider");
- sComponentNames.put("ModalHostView", "RCTModalHostView");
- sComponentNames.put("Paragraph", "RCTText");
- sComponentNames.put("Text", "RCText");
- sComponentNames.put("RawText", "RCTRawText");
- sComponentNames.put("ActivityIndicatorView", "AndroidProgressBar");
- sComponentNames.put("ShimmeringView", "RKShimmeringView");
- sComponentNames.put("TemplateView", "RCTTemplateView");
- sComponentNames.put("AxialGradientView", "RCTAxialGradientView");
}
private Binding mBinding;
@@ -192,7 +178,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
@Nullable ReadableMap props,
boolean isLayoutable) {
ThemedReactContext context = mReactContextForRootTag.get(rootTag);
- String component = getComponent(componentName);
+ String component = getFabricComponentName(componentName);
synchronized (mPreMountItemsLock) {
mPreMountItems.add(
new PreAllocateViewMountItem(
@@ -205,16 +191,11 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
}
}
- private String getComponent(String componentName) {
- String component = sComponentNames.get(componentName);
- return component != null ? component : componentName;
- }
-
@DoNotStrip
@SuppressWarnings("unused")
private MountItem createMountItem(
String componentName, int reactRootTag, int reactTag, boolean isLayoutable) {
- String component = getComponent(componentName);
+ String component = getFabricComponentName(componentName);
ThemedReactContext reactContext = mReactContextForRootTag.get(reactRootTag);
if (reactContext == null) {
throw new IllegalArgumentException("Unable to find ReactContext for root: " + reactRootTag);