diff --git a/packages/dev-middleware/src/inspector-proxy/types.js b/packages/dev-middleware/src/inspector-proxy/types.js index a89bfc9a914d57..ed37c285fc5aa0 100644 --- a/packages/dev-middleware/src/inspector-proxy/types.js +++ b/packages/dev-middleware/src/inspector-proxy/types.js @@ -37,6 +37,13 @@ export type TargetCapabilityFlags = $ReadOnly<{ * In the proxy, this disables intercepting and storing network requests. */ nativeNetworkInspection?: boolean, + + /** + * The target supports the modern `rn_fusebox.html` entry point. + * + * In the launch flow, this controls the Chrome DevTools entrypoint that is used. + */ + prefersFuseboxFrontend?: boolean, }>; // Page information received from the device. New page is created for diff --git a/packages/dev-middleware/src/middleware/openDebuggerMiddleware.js b/packages/dev-middleware/src/middleware/openDebuggerMiddleware.js index 6b571f7aa026cd..2f1cf95b5d159e 100644 --- a/packages/dev-middleware/src/middleware/openDebuggerMiddleware.js +++ b/packages/dev-middleware/src/middleware/openDebuggerMiddleware.js @@ -107,6 +107,9 @@ export default function openDebuggerMiddleware({ return; } + const useFuseboxEntryPoint = + target.reactNative.capabilities?.prefersFuseboxFrontend; + try { switch (launchType) { case 'launch': @@ -122,6 +125,7 @@ export default function openDebuggerMiddleware({ experiments, target.webSocketDebuggerUrl, serverBaseUrl, + {useFuseboxEntryPoint}, ), ), ); @@ -133,7 +137,7 @@ export default function openDebuggerMiddleware({ experiments, target.webSocketDebuggerUrl, serverBaseUrl, - {relative: true}, + {relative: true, useFuseboxEntryPoint}, ), }); res.end(); diff --git a/packages/dev-middleware/src/utils/getDevToolsFrontendUrl.js b/packages/dev-middleware/src/utils/getDevToolsFrontendUrl.js index 7dd33dfd9d08a3..a3cabc78afc092 100644 --- a/packages/dev-middleware/src/utils/getDevToolsFrontendUrl.js +++ b/packages/dev-middleware/src/utils/getDevToolsFrontendUrl.js @@ -20,6 +20,7 @@ export default function getDevToolsFrontendUrl( devServerUrl: string, options?: $ReadOnly<{ relative?: boolean, + useFuseboxEntryPoint?: boolean, }>, ): string { const wsParam = getWsParam({ @@ -29,7 +30,10 @@ export default function getDevToolsFrontendUrl( const appUrl = (options?.relative === true ? '' : devServerUrl) + - '/debugger-frontend/rn_inspector.html'; + '/debugger-frontend/' + + (options?.useFuseboxEntryPoint === true + ? 'rn_fusebox.html' + : 'rn_inspector.html'); const searchParams = new URLSearchParams([ [wsParam.key, wsParam.value],