Skip to content

Make host target tracing implementation headers private (#58797) - #58797

Open
coado wants to merge 5 commits into
react:mainfrom
coado:export-D122791607
Open

coado wants to merge 5 commits into
react:mainfrom
coado:export-D122791607

Conversation

@coado

@coado coado commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary:

Mark the following headers as private instead of for-frameworks. All of them are implementation details of the host target and how it records and serializes a trace, and no for-frameworks header includes them:

  • HostAgent.h
  • HostTargetTraceRecording.h
  • HostTargetTracing.h
  • InspectorUtilities.h
  • InstanceAgent.h
  • TracingAgent.h

Changelog: [Internal]

Differential Revision: D122791607

@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 1, 2026
@meta-codesync

meta-codesync Bot commented Oct 1, 2026

Copy link
Copy Markdown

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

@facebook-github-tools facebook-github-tools Bot added p: Software Mansion Partner: Software Mansion Partner labels Oct 1, 2026
@facebook-github-tools facebook-github-tools Bot added the p: Facebook Partner: Facebook label Oct 1, 2026
@meta-codesync meta-codesync Bot changed the title Make host tracing profile serialization headers private Make host target tracing implementation headers private Oct 2, 2026
@coado
coado force-pushed the export-D122791607 branch 2 times, most recently from 05fa935 to e22e719 Compare October 5, 2026 14:47
Dawid Małecki and others added 5 commits October 8, 2026 06:22
Summary:
Lower the following `react/renderer/components/textinput` headers from "for frameworks" to private:

Platform component descriptors:
- Android `androidtextinput/AndroidTextInputComponentDescriptor.h`
- iOS and macOS `iostextinput/TextInputComponentDescriptor.h`

All three classes are `final`, so they cannot be extended, and they are registered only by React Native's own platform glue (the Android core components registry and the iOS TextInput component view). The Android descriptor is additionally coupled to React Native's Java `FabricUIManager` (it reads theme padding over JNI in `getInitialState`).

Prop conversion helpers:
- `baseConversions.h` (conversions for the shared text input enums)
- iOS and macOS `iostextinput/propsConversions.h` (iOS/macOS text input trait parsers)

These are only included by the module's own props sources (`BaseTextInputProps.cpp` and the platform `TextInputProps.cpp` / `AndroidTextInputProps.cpp`).

No header includes any of them. The TextInput shadow nodes, props, state and event emitters stay "for frameworks", since third-party text input libraries build on them directly. The iOS/macOS `conversions.h` also stays "for frameworks", as the iOS/macOS `TextInputProps.h` includes it.

Changelog: [Internal]

Differential Revision: D123643375
Summary:
Mark the following `jsinspector-modern` headers as private instead of for-frameworks. All of them are implementation details of the inspector, and no for-frameworks header includes them:

- `ConsoleTask`, `ConsoleTaskContext` and `ConsoleTaskOrchestrator` implement `console.createTask()`: the task object, the context that captures the stack trace when a task is created, and the singleton that tracks which task is currently running. They are only used by the inspector's console sources, a console test, and `PerformanceEntryReporter.cpp`, which reads the current task from the orchestrator.
- `EmulationAgent` handles the CDP `Emulation` domain. It is only used by `EmulationAgent.cpp` and `HostAgent.cpp`.
- `FallbackRuntimeAgentDelegate` answers CDP requests for a JavaScript runtime that does not support debugging. It is only used by `FallbackRuntimeAgentDelegate.cpp` and `FallbackRuntimeTargetDelegate.cpp`. `FallbackRuntimeTargetDelegate.h`, which creates it, stays for-frameworks.
- `InspectorPackagerConnectionImpl.h` defines `InspectorPackagerConnection::Impl`, the hidden implementation of the inspector-proxy protocol. `InspectorPackagerConnection.h` only forward-declares it, and it is only used by `InspectorPackagerConnection.cpp`. `InspectorPackagerConnection.h` and `WebSocketInterfaces.h` stay for-frameworks, because each platform implements `InspectorPackagerConnectionDelegate`.
- `RuntimeTargetGlobalStateObserver` installs a JavaScript global that reports a boolean state, such as whether a debugger session is active, and notifies its subscribers when the state changes. `RuntimeTargetTracingStateObserver` uses it to report whether tracing is active. Both are only used by the `RuntimeTarget` sources and their own sources.
- `Utf8.h` provides `truncateToValidUTF8`, which trims a byte buffer so it does not end in the middle of a UTF-8 code point when `IO.read` slices a network resource. It is only used by `NetworkIOAgent.cpp` and its own unit test.
- `ExecutionContextManager` allocates execution context IDs. It is only created by `HostTarget.cpp` and used by `InstanceTarget.cpp`. `HostTarget.h` and `InstanceTarget.h` only hold it through `std::shared_ptr`, so they now forward-declare it instead of including the header, and the two sources include it directly.

React Native's own targets define `RN_BUILDING`, so the private guard does not affect them.

Changelog: [Internal]

Differential Revision: D123009197
Summary:
Mark the following tracing headers as private instead of for-frameworks. All of them are implementation details of React Native's tracing infrastructure, and no for-frameworks header includes them:

- `EventLoopReporter` is an RAII helper the runtime scheduler uses to report event loop task and microtask phases to the performance tracer. It is only used by `EventLoopReporter.cpp` and `RuntimeScheduler_Modern.cpp`.
- `RuntimeSamplingProfileTraceEventSerializer` turns a runtime sampling profile into trace events. It is only used by tracing sources, `TracingAgent.cpp` and its own unit test.
- `TraceEventSerializer` serializes trace events to `folly::dynamic`. It is only used by tracing sources and `TracingAgent.cpp`.
- `TraceEventGenerator` builds trace events for the performance tracer and the host profile serializer. It is only used by tracing sources and was already not exported in Buck.
- `ProfileTreeNode` is an auxiliary tree used to build the profile and deduplicate identical frames. It is only used by `RuntimeSamplingProfileTraceEventSerializer.cpp` and its own unit test.
- `Timing.h` defines the tracing clock origin and the conversions from `HighResTimeStamp` and `HighResDuration` to trace event microseconds. It is only used by tracing sources and a tracing unit test.

`TracingAgent.h` included `Timing.h` without using it; that include is removed.

React Native's own targets define `RN_BUILDING`, so the private guard does not affect them.

Changelog: [Internal]

Differential Revision: D122780825
Summary:
`StackTraceParser` is an implementation detail of `JsErrorHandler`: it is only used by `JsErrorHandler.cpp` and its own unit test, and `JsErrorHandler.h` does not include it. Mark it as a private header instead of a for-frameworks one.

- Swap `FrameworksGuard.h` for `PrivateGuard.h` in `StackTraceParser.h`.
- Include `JsErrorHandler.h` via its namespaced path so the header resolves when it is not exported alongside it.
- Stop shipping `StackTraceParser.h` as a header for prebuilt `React-jserrorhandler` pods.

Changelog: [Internal]

Differential Revision: D122770464
Summary:
Pull Request resolved: react#58797

Mark the following headers as private instead of for-frameworks. All of them are implementation details of the host target and how it records and serializes a trace, and no for-frameworks header includes them:

- HostAgent.h
- HostTargetTraceRecording.h
- HostTargetTracing.h
- InspectorUtilities.h
- InstanceAgent.h
- TracingAgent.h

Changelog: [Internal]

Differential Revision: D122791607
@meta-codesync meta-codesync Bot changed the title Make host target tracing implementation headers private Make host target tracing implementation headers private (#58797) Oct 8, 2026
@coado
coado force-pushed the export-D122791607 branch from e22e719 to 06ed8e8 Compare October 8, 2026 15:09

This branch has not been deployed

No deployments
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. meta-exported p: Facebook Partner: Facebook p: Software Mansion Partner: Software Mansion Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant