Skip to content

Check Network domain state in RuntimeTargetNetwork - #54082

Closed
motiz88 wants to merge 4 commits into
react:mainfrom
motiz88:export-D83847356
Closed

Check Network domain state in RuntimeTargetNetwork#54082
motiz88 wants to merge 4 commits into
react:mainfrom
motiz88:export-D83847356

Conversation

@motiz88

@motiz88 motiz88 commented Oct 7, 2025

Copy link
Copy Markdown
Contributor

Summary:
Changelog: [Internal]

Followup from D83238216.

Adds bookkeeping in RuntimeTarget to allow checking from the JS thread whether there is a session with the Network CDP enabled. We then use this in the implementation of __NETWORK_REPORTER__.createDevToolsRequestId as a more precise alternative to checking the NetworkHandler singleton's state.

This is a first step towards breaking up the NetworkHandler singleton, subsuming its responsibilities into the Target/Agent architecture of jsinspector-modern and fixing a variety of bugs in the process.

NOTE: The additions to RuntimeTarget are more general than just tracking the Network domain - I'll use them in an upcoming diff to fix a concrete bug related to concurrent session support in DebuggerSessionObserver.

Differential Revision: D83847356

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Oct 7, 2025
@meta-codesync

meta-codesync Bot commented Oct 7, 2025

Copy link
Copy Markdown

@motiz88 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D83847356.

motiz88 added a commit to motiz88/react-native that referenced this pull request Oct 8, 2025
Summary:

Changelog: [Internal]

Followup from D83238216. 

Adds bookkeeping in `RuntimeTarget` to allow checking from the JS thread whether there is a session with the `Network` CDP enabled. We then use this in the implementation of `__NETWORK_REPORTER__.createDevToolsRequestId` as a more precise alternative to checking the `NetworkHandler` singleton's state.

This is a first step towards breaking up the `NetworkHandler` singleton, subsuming its responsibilities into the Target/Agent architecture of `jsinspector-modern` and fixing a variety of bugs in the process.

NOTE: The additions to `RuntimeTarget` are more general than just tracking the `Network` domain - I'll use them in an upcoming diff to fix a concrete bug related to concurrent session support in `DebuggerSessionObserver`.

Reviewed By: huntie

Differential Revision: D83847356
…act#54050)

Summary:

Changelog: [Internal]

A naive approach to keeping track of request initiators inside the `NetworkHandler` singleton for CDP reporting purposes:

1. Expose a new `recordRequestInitiatorStack` method.
2. Keep the CDP-formatted stack trace (as a `folly::dynamic`) in a map keyed by request ID.
3. Destructively consume the stack trace during `onRequestWillBeSent`.

Reviewed By: huntie

Differential Revision: D83754143
Summary:

Changelog: [Internal]

Adds a minimal standards-compliant UUID v4 generator to `react/utils` for use elsewhere in React Native. We don't need UUID parsing, support for UUID versions other than 4, a UUID value type, or extremely high performance - which makes inlining this simple, portable implementation directly in our codebase acceptable.

Reviewed By: robhogan

Differential Revision: D84149720
…eact#54051)

Summary:

Adds the private, experimental `__NETWORK_REPORTER__.createDevToolsRequestId()` JavaScript method behind the Fusebox network inspection feature flag.

`createDevToolsRequestId()` returns a unique string ID for a network request, and records the current call stack as the request's [initiator](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Network#type-Initiator). If the native networking layer passes the same request ID into the C++ `NetworkReporter::reportRequestStart` method, the corresponding CDP [`requestWillBeSent`](https://cdpstatus.reactnative.dev/devtools-protocol/tot/Network#event-requestWillBeSent) event will contain the stack trace.

Changelog: [Internal]

Reviewed By: robhogan, huntie

Differential Revision: D83238216
Summary:

Changelog: [Internal]

Followup from D83238216. 

Adds bookkeeping in `RuntimeTarget` to allow checking from the JS thread whether there is a session with the `Network` CDP enabled. We then use this in the implementation of `__NETWORK_REPORTER__.createDevToolsRequestId` as a more precise alternative to checking the `NetworkHandler` singleton's state.

This is a first step towards breaking up the `NetworkHandler` singleton, subsuming its responsibilities into the Target/Agent architecture of `jsinspector-modern` and fixing a variety of bugs in the process.

NOTE: The additions to `RuntimeTarget` are more general than just tracking the `Network` domain - I'll use them in an upcoming diff to fix a concrete bug related to concurrent session support in `DebuggerSessionObserver`.

Reviewed By: huntie

Differential Revision: D83847356
motiz88 added a commit to motiz88/react-native that referenced this pull request Oct 8, 2025
Summary:

Changelog: [Internal]

Followup from D83238216. 

Adds bookkeeping in `RuntimeTarget` to allow checking from the JS thread whether there is a session with the `Network` CDP enabled. We then use this in the implementation of `__NETWORK_REPORTER__.createDevToolsRequestId` as a more precise alternative to checking the `NetworkHandler` singleton's state.

This is a first step towards breaking up the `NetworkHandler` singleton, subsuming its responsibilities into the Target/Agent architecture of `jsinspector-modern` and fixing a variety of bugs in the process.

NOTE: The additions to `RuntimeTarget` are more general than just tracking the `Network` domain - I'll use them in an upcoming diff to fix a concrete bug related to concurrent session support in `DebuggerSessionObserver`.

Reviewed By: huntie

Differential Revision: D83847356
@meta-codesync meta-codesync Bot closed this in aa68540 Oct 8, 2025
@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Oct 8, 2025
@meta-codesync

meta-codesync Bot commented Oct 8, 2025

Copy link
Copy Markdown

This pull request has been merged in aa68540.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported Merged This PR has been merged. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants