Skip to content

Commit 152c6e8

Browse files
okwasniewskipull[bot]
authored andcommitted
fix: PerfMonitor option not showing on iOS (Bridgeless) (facebook#42891)
Summary: This PR fixes PerfMonitor option not showing on iOS when running bridgeless. The `initialize` method is not called in bridgeless which causes this option to not be added. I've converted this approach to work for both bridgeless and non-bridgeless. bypass-github-export-checks ## Changelog: [IOS] [FIXED] - Perf Monitor option not showing in Bridgeless Pull Request resolved: facebook#42891 Test Plan: Run RNTester, open Perf monitor Reviewed By: RSNara Differential Revision: D53518507 Pulled By: cipolleschi fbshipit-source-id: c16d41006c5a3f96d53d4f76fd317941a1eb839f
1 parent 66e2350 commit 152c6e8

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

packages/react-native/React/CoreModules/RCTDevMenu.mm

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
#import <React/RCTInspectorDevServerHelper.h>
2424
#endif
2525

26+
@protocol RCTDevMenuItemProvider
27+
- (RCTDevMenuItem *)devMenuItem;
28+
@end
29+
2630
NSString *const RCTShowDevMenuNotification = @"RCTShowDevMenuNotification";
2731

2832
@implementation UIWindow (RCTDevMenu)
@@ -302,6 +306,13 @@ - (void)setDefaultJSBundle
302306
}]];
303307
}
304308

309+
id perfMonitorItemOpaque = [_moduleRegistry moduleForName:"PerfMonitor"];
310+
SEL devMenuItem = @selector(devMenuItem);
311+
if ([perfMonitorItemOpaque respondsToSelector:devMenuItem]) {
312+
RCTDevMenuItem *perfMonitorItem = [perfMonitorItemOpaque devMenuItem];
313+
[items addObject:perfMonitorItem];
314+
}
315+
305316
[items
306317
addObject:[RCTDevMenuItem
307318
buttonItemWithTitleBlock:^NSString * {

packages/react-native/React/CoreModules/RCTPerfMonitor.mm

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,8 @@ static vm_size_t RCTGetResidentMemorySize(void)
6060
return memoryUsageInByte;
6161
}
6262

63-
@interface RCTPerfMonitor : NSObject <
64-
RCTBridgeModule,
65-
RCTTurboModule,
66-
RCTInitializing,
67-
RCTInvalidating,
68-
UITableViewDataSource,
69-
UITableViewDelegate>
63+
@interface RCTPerfMonitor
64+
: NSObject <RCTBridgeModule, RCTTurboModule, RCTInvalidating, UITableViewDataSource, UITableViewDelegate>
7065

7166
#if __has_include(<React/RCTDevMenu.h>)
7267
@property (nonatomic, strong, readonly) RCTDevMenuItem *devMenuItem;
@@ -131,13 +126,6 @@ - (dispatch_queue_t)methodQueue
131126
return dispatch_get_main_queue();
132127
}
133128

134-
- (void)initialize
135-
{
136-
#if __has_include(<React/RCTDevMenu.h>)
137-
[(RCTDevMenu *)[_moduleRegistry moduleForName:"DevMenu"] addItem:self.devMenuItem];
138-
#endif
139-
}
140-
141129
- (void)invalidate
142130
{
143131
[self hide];

0 commit comments

Comments
 (0)