Skip to content

Commit

Permalink
Remove Flipper actions in Dev Menu, add new Open Debugger action (iOS) (
Browse files Browse the repository at this point in the history
#39124)

Summary:
Pull Request resolved: #39124

## Context

RFC: Decoupling Flipper from React Native core: react-native-community/discussions-and-proposals#641

## Changes

- Removes Flipper-backed "Launch Debugger" and "Launch React DevTools" actions from the Dev Menu.
- Adds replacement "Launch Debugger" action triggering the new one-click Hermes debugger flow for 0.73.

Changelog:
[iOS][Changed] Remove Flipper actions in Dev Menu, add new Open Debugger action

Reviewed By: motiz88, blakef

Differential Revision: D46220076

fbshipit-source-id: 7fd47dff4b4e29a8dda77fa98369cc7e5219fa7b
  • Loading branch information
huntie authored and facebook-github-bot committed Sep 16, 2023
1 parent d053137 commit 5bfc507
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 17 deletions.
21 changes: 4 additions & 17 deletions packages/react-native/React/CoreModules/RCTDevMenu.mm
Original file line number Diff line number Diff line change
Expand Up @@ -260,29 +260,16 @@ - (void)setDefaultJSBundle
if (!devSettings.isProfilingEnabled) {
#if RCT_ENABLE_INSPECTOR
if (devSettings.isDeviceDebuggingAvailable) {
// For on-device debugging we link out to Flipper.
// Since we're assuming Flipper is available, also include the DevTools.
// Note: For parity with the Android code.
// On-device JS debugging (CDP). Render action to open debugger frontend.
[items addObject:[RCTDevMenuItem
buttonItemWithTitleBlock:^NSString * {
return @"Open Debugger";
}
handler:^{
[RCTInspectorDevServerHelper
openURL:@"flipper://null/Hermesdebuggerrn?device=React%20Native"
withBundleURL:bundleManager.bundleURL
withErrorMessage:@"Failed to open Flipper. Please check that Metro is running."];
}]];

[items addObject:[RCTDevMenuItem
buttonItemWithTitleBlock:^NSString * {
return @"Open React DevTools";
}
handler:^{
[RCTInspectorDevServerHelper
openURL:@"flipper://null/React?device=React%20Native"
withBundleURL:bundleManager.bundleURL
withErrorMessage:@"Failed to open Flipper. Please check that Metro is running."];
openDebugger:bundleManager.bundleURL
withErrorMessage:
@"Failed to open debugger. Please check that the dev server is running."];
}]];
}
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
+ (RCTInspectorPackagerConnection *)connectWithBundleURL:(NSURL *)bundleURL;
+ (void)disableDebugger;
+ (void)openURL:(NSString *)url withBundleURL:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessage;
+ (void)openDebugger:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessage;
@end

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,26 @@ + (void)openURL:(NSString *)url withBundleURL:(NSURL *)bundleURL withErrorMessag
}] resume];
}

+ (void)openDebugger:(NSURL *)bundleURL withErrorMessage:(NSString *)errorMessage
{
NSString *appId = [[[NSBundle mainBundle] bundleIdentifier]
stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet];

NSURL *url = [NSURL
URLWithString:[NSString stringWithFormat:@"http://%@/open-debugger?appId=%@", getServerHost(bundleURL), appId]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];

[[[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(
__unused NSData *_Nullable data, __unused NSURLResponse *_Nullable response, NSError *_Nullable error) {
if (error != nullptr) {
RCTLogWarn(@"%@", errorMessage);
}
}] resume];
}

+ (void)disableDebugger
{
sendEventToAllConnections(kDebuggerMsgDisable);
Expand Down

0 comments on commit 5bfc507

Please sign in to comment.