Skip to content

Remove unused bindings from the React private interface (#58455) - #58455

Closed
rubennorte wants to merge 7 commits into
react:mainfrom
rubennorte:export-D119500025
Closed

Remove unused bindings from the React private interface (#58455)#58455
rubennorte wants to merge 7 commits into
react:mainfrom
rubennorte:export-D119500025

Conversation

@rubennorte

@rubennorte rubennorte commented Sep 10, 2026

Copy link
Copy Markdown
Member

Summary:

react-native/react-private-interface still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of Libraries/Renderer (the Fabric bundles and the shims) shows that ExceptionsManager, Platform, RCTEventEmitter, TextInputState, deepDiffer, flattenStyle, legacySendAccessibilityEvent and CustomEvent have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the import typeof declarations that became unused (including the DangerouslyImpreciseStyleProp type that only flattenStyle needed) and the two TODO comments attached to deepDiffer and flattenStyle. The modules themselves are untouched and stay reachable through their normal entry points. react-private-interface.js.flow is updated to match.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D119500025

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

meta-codesync Bot commented Sep 10, 2026

Copy link
Copy Markdown

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

rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Differential Revision: D119500025
@meta-codesync meta-codesync Bot changed the title Remove unused bindings from the React private interface Remove unused bindings from the React private interface (#58455) Sep 10, 2026
@github-actions

Copy link
Copy Markdown

Warning

JavaScript API change detected

This PR commits an update to ReactNativeApi.d.ts, indicating a change to React Native's public JavaScript API.

  • Please include a clear changelog message.
  • This change will be subject to additional review.

This change was flagged as: POTENTIALLY_BREAKING

rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Differential Revision: D119500025
rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Differential Revision: D119500025
rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Differential Revision: D119500025
rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Differential Revision: D119500025
rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D119500025
rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D119500025
rubennorte and others added 6 commits September 10, 2026 08:38
Differential Revision: D119490598
Summary:
Remove the isOSS conditionals that were skipping Fantom renderer tests in OSS environments. Now that the React Native renderers have been upgraded and the code is compatible in OSS, these tests can run in both internal and OSS environments.

Changes:
- ResponderEventTarget-itest.js: Removed isOSS check that skipped the entire Responder System test suite
- EventTargetDispatching-itest.js: Removed isOSS check that skipped the entire EventTarget-based Event Dispatching test suite
- EventDispatching-benchmark-itest.js: Removed if (isOSS) block that provided a dummy test instead of the benchmark suite
- EventDispatching-itest.js: Removed if (!isOSS) condition guarding three tests for native event timeStamp and global event dispatching

Changelog: [Internal]

Differential Revision: D107675643
Summary:
The renderer can dispatch events either through the legacy plugin-based system or through the W3C EventTarget API (addEventListener/dispatchEvent), gated behind the enableNativeEventTargetEventDispatching feature flag. Enabling it by default was previously blocked on the renderer, which did not carry the necessary changes until React 19.3.0. That sync has now landed, so flip the flag's default value to true and drop the TODO that tracked the blocker.

Fully removing the flag and the legacy dispatch path is left for a follow-up.

Changelog:
[General][Changed] - Dispatch events through the EventTarget API by default

Differential Revision: D119495069
Summary:
The `react-private-interface` and `setup-env` entry points now provide the private contract between React and React Native that `Libraries/ReactPrivate/` forwarded to, so the deprecated forwarding modules can be removed.

**This diff**

- Delete `Libraries/ReactPrivate/` — `ReactNativePrivateInterface`, `ReactNativePrivateInitializeCore`, and their `.flow`/`README` files.
- Repoint internal `packages/react-native` imports directly at their source modules instead of the `react-private-interface` aggregator: `AnimatedProps` and two integration tests now import `getNodeFromPublicInstance` from `ReactFabricPublicInstance`, and `index.js.flow` re-exports `PublicRootInstance`/`PublicTextInstance` from there (adding a `PublicTextInstance` export to that module).
- Repoint the remaining consumers at the `react-native/react-private-interface` entry point.
- Drop the stale `Libraries/ReactPrivate/ReactNativePrivateInterface` entries from the eslint and Flow-codemod `publicAPIMapping`s and the `rn-arch` migration-list filters.

Changelog: [Internal]

Differential Revision: D114055938
rubennorte added a commit to rubennorte/react-native that referenced this pull request Sep 10, 2026
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D119500025
Summary:
Pull Request resolved: react#58455

`react-native/react-private-interface` still exposed a number of values that no version of the renderer reads anymore. Checking every binding against the whole of `Libraries/Renderer` (the Fabric bundles and the shims) shows that `ExceptionsManager`, `Platform`, `RCTEventEmitter`, `TextInputState`, `deepDiffer`, `flattenStyle`, `legacySendAccessibilityEvent` and `CustomEvent` have no reference left — most of them were only ever needed by the legacy renderer bundles, which no longer exist.

Remove those getters, along with the `import typeof` declarations that became unused (including the `DangerouslyImpreciseStyleProp` type that only `flattenStyle` needed) and the two `TODO` comments attached to `deepDiffer` and `flattenStyle`. The modules themselves are untouched and stay reachable through their normal entry points. `react-private-interface.js.flow` is updated to match.

Changelog: [Internal]

Reviewed By: christophpurrer

Differential Revision: D119500025
@meta-codesync meta-codesync Bot closed this in 7754512 Sep 11, 2026
@meta-codesync meta-codesync Bot added the Merged This PR has been merged. label Sep 11, 2026
@meta-codesync

meta-codesync Bot commented Sep 11, 2026

Copy link
Copy Markdown

This pull request has been merged in 7754512.

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. 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