PerfMonitor - Add show/hide to dev menu (#53958)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53958

Adds a dev menu option to enable/disable the overlay, in case devs want to screenshot/record without disabling it at buildtime.

Changelog: [Internal]

Reviewed By: huntie

Differential Revision: D83293591

fbshipit-source-id: 3564b83a279db296d1cd22a8e8a83876cc705dbd
This commit is contained in:
Devan Buggay
2025-09-26 12:28:25 -07:00
committed by Facebook GitHub Bot
parent 456e01bf3f
commit 218d2f6fdc
3 changed files with 25 additions and 0 deletions
@@ -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
@@ -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
@@ -13,6 +13,8 @@
<string name="catalyst_performance_background" project="catalyst" translatable="false">Finish performance trace</string>
<string name="catalyst_performance_disabled" project="catalyst" translatable="false">Start performance trace</string>
<string name="catalyst_performance_cdp" project="catalyst" translatable="false">Performance tracing disabled</string>
<string name="catalyst_performance_enable" project="catalyst" translatable="false">Show performance overlay</string>
<string name="catalyst_performance_disable" project="catalyst" translatable="false">Hide performance overlay</string>
<string name="catalyst_debug_open_disabled" project="catalyst" translatable="false">Connect to the bundler to debug JavaScript</string>
<string name="catalyst_debug_connecting" project="catalyst" translatable="false">Connecting to debugger...</string>
<string name="catalyst_debug_error" project="catalyst" translatable="false">Failed to connect to debugger!</string>