diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index ae5fb0dcbc8..9cf38464ce3 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -1423,6 +1423,12 @@ public final class com/facebook/react/bridge/ReactSoftExceptionLogger { public static final fun removeListener (Lcom/facebook/react/bridge/ReactSoftExceptionLogger$ReactSoftExceptionListener;)V } +public final class com/facebook/react/bridge/ReactSoftExceptionLogger$Categories { + public static final field INSTANCE Lcom/facebook/react/bridge/ReactSoftExceptionLogger$Categories; + public static final field RVG_IS_VIEW_CLIPPED Ljava/lang/String; + public static final field RVG_ON_VIEW_REMOVED Ljava/lang/String; +} + public abstract interface class com/facebook/react/bridge/ReactSoftExceptionLogger$ReactSoftExceptionListener { public abstract fun logSoftException (Ljava/lang/String;Ljava/lang/Throwable;)V } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt index 1a17fa8994c..2656b9376eb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt @@ -14,6 +14,11 @@ import kotlin.jvm.JvmStatic @DoNotStrip public object ReactSoftExceptionLogger { + /** Constants that listeners can utilize for custom category-based behavior. */ + public object Categories { + public const val RVG_IS_VIEW_CLIPPED: String = "ReactViewGroup.isViewClipped" + public const val RVG_ON_VIEW_REMOVED: String = "ReactViewGroup.onViewRemoved" + } // Use a list instead of a set here because we expect the number of listeners // to be very small, and we want listeners to be called in a deterministic diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java index 16904ce7d02..ea1da3f5039 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java @@ -610,7 +610,7 @@ public class ReactViewGroup extends ViewGroup Object tag = child.getTag(R.id.view_clipped); if (!expectedTag.equals(tag)) { ReactSoftExceptionLogger.logSoftException( - "ReactViewGroup.onViewRemoved", + ReactSoftExceptionLogger.Categories.RVG_ON_VIEW_REMOVED, new ReactNoCrashSoftException( "View clipping tag mismatch: tag=" + tag + " expected=" + expectedTag)); } @@ -777,7 +777,7 @@ public class ReactViewGroup extends ViewGroup boolean transitioning = isChildRemovedWhileTransitioning(view); if (index != null) { ReactSoftExceptionLogger.logSoftException( - "ReactViewGroup.isViewClipped", + ReactSoftExceptionLogger.Categories.RVG_IS_VIEW_CLIPPED, new ReactNoCrashSoftException( "View missing clipping tag: index=" + index