diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt
index f6f4faa3bf6..c29044beef6 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt
@@ -398,6 +398,24 @@ public abstract class DevSupportManagerBase(
}
}
+ if (ReactNativeFeatureFlags.perfMonitorV2Enabled()) {
+ val isConnected = isPackagerConnected
+
+ val togglePerfMonitorItemString =
+ if (perfMonitorOverlayManager?.isEnabled == true)
+ applicationContext.getString(R.string.catalyst_performance_disable)
+ else applicationContext.getString(R.string.catalyst_performance_enable)
+
+ if (!isConnected) {
+ disabledItemKeys.add(togglePerfMonitorItemString)
+ }
+
+ options[togglePerfMonitorItemString] =
+ if (perfMonitorOverlayManager?.isEnabled == true)
+ DevOptionHandler { perfMonitorOverlayManager?.disable() }
+ else DevOptionHandler { perfMonitorOverlayManager?.enable() }
+ }
+
options[applicationContext.getString(R.string.catalyst_change_bundle_location)] =
DevOptionHandler {
val context = reactInstanceDevHelper.currentActivity
diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt
index 795fd1e2f13..f093c0b92df 100644
--- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt
+++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt
@@ -15,6 +15,11 @@ internal class PerfMonitorOverlayManager(
private val onRequestOpenDevTools: () -> Unit,
) : PerfMonitorUpdateListener {
private var enabled: Boolean = false
+
+ /** Whether the Perf Monitor overlay is currently enabled. */
+ val isEnabled: Boolean
+ get() = enabled
+
private var view: PerfMonitorOverlayView? = null
private var tracingState: TracingState = TracingState.ENABLEDINCDPMODE
diff --git a/packages/react-native/ReactAndroid/src/main/res/devsupport/values/strings.xml b/packages/react-native/ReactAndroid/src/main/res/devsupport/values/strings.xml
index 19e9c21abc7..29a8b8d1dea 100644
--- a/packages/react-native/ReactAndroid/src/main/res/devsupport/values/strings.xml
+++ b/packages/react-native/ReactAndroid/src/main/res/devsupport/values/strings.xml
@@ -13,6 +13,8 @@
Finish performance trace
Start performance trace
Performance tracing disabled
+ Show performance overlay
+ Hide performance overlay
Connect to the bundler to debug JavaScript
Connecting to debugger...
Failed to connect to debugger!