Skip to content

Sweep dead imports and stale bridge comments (#59442) - #59442

Open
christophpurrer wants to merge 14 commits into
react:mainfrom
christophpurrer:export-D127295291
Open

christophpurrer wants to merge 14 commits into
react:mainfrom
christophpurrer:export-D127295291

Conversation

@christophpurrer

@christophpurrer christophpurrer commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Summary:

Remove dead imports and forward declarations left behind by the bridge cleanup (RCTRootView.m, RCTCxxUtils, RCTRootViewFactory.h) and fix two comments that still describe the removed bridge behavior.

Changelog: [Internal]

Differential Revision: D127295291

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

meta-codesync Bot commented Oct 24, 2026

Copy link
Copy Markdown

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

Summary:
`RCTModuleData` is never instantiated and its implementation is a stub: initializers return `self`, and `gatherConstants`/`invalidate` are no-ops. Delete the header and implementation with the unused `RCTBridgeModuleProvider` typedef and `RCTModuleDataCallInvokerProvider` protocol, plus the buck header-map entry and all import sites.

Changelog:
[iOS][Removed] - Remove deprecated `RCTModuleData` class and its call-invoker provider protocol

Differential Revision: D127228438
)

Summary:
Pull Request resolved: react#59428

`+[RCTBridge currentBridge]` always returns nil and `+[RCTBridge setCurrentBridge:]` is a no-op: with the legacy bridge gone, nothing ever sets a current bridge, so the getter can only return nil. Remove the last two internal call sites in `RCTInstance` (iOS and macOS) along with their now-dead `RCTBridge+Private.h` imports. Keep both declarations, now marked deprecated, so existing external Swift callers (`RCTBridge.current()`) keep compiling and linking; they will only ever observe nil, the sole value this API can produce.

Changelog: [Internal]

Differential Revision: D127265579
Summary:
Remove `RCTBridge` declarations with zero callers: `enqueueJSCall`, module lookup, `delegate`, `moduleClasses`, reload, and batch APIs, plus their stub implementations. Keep `bundleURL`, still read by Expo Dev Menu, and the TurboModule-registry hooks the proxy forwards through, all marked deprecated. Delete skipped `RCTLoggingTests`, the only `enqueueJSCall` caller.

Changelog:
[iOS][Removed] - Remove unused `RCTBridge` reload, module-lookup, and JS-callback APIs
[iOS][Deprecated] - Deprecate `RCTBridge.bundleURL`, `setRCTTurboModuleRegistry:`, and `bridgeModuleDecorator`

Differential Revision: D127265582
…59433)

Summary:
Pull Request resolved: react#59433

The `RCTTest` runner, `IntegrationTests` bundle, and `RNTesterIntegrationTests` target are fully disabled: every test is commented out or skipped for depending on the removed bridge. Delete the harness, the skipped `RCTDevMenuTests`/`RCTComponentPropsTests`/`RCTImageLoaderTests` class, and all project references.

Changelog: [Internal]

Differential Revision: D127294772
Summary:
Both `RCTBridge` initializers return an inert stub and have no callers left now that the test harness is gone. Delete the declarations and stub implementations. `RCTBridgeModuleListProvider` stays until the proxy shim using it is removed.

Changelog:
[iOS][Removed] - Remove deprecated `RCTBridge` initializers

Differential Revision: D127294773
Summary:
Pull Request resolved: react#59435

The default JS executor factory unconditionally returns `nullptr` and has no callers. Delete it with its now-unused imports and forward declarations, narrowing the header to forward declarations.

Changelog: [Internal]

Differential Revision: D127294774
Summary:
The `RCTBridge (Inspector)` category exposes `inspectorTarget`/`inspectable` with zero callers; the modern inspector reaches `RCTHost` directly. Delete the header, its buck entry, the unused imports, and the proxy shim.

Changelog:
[iOS][Removed] - Remove unused `RCTBridge (Inspector)` category

Differential Revision: D127294775
Summary:
Five bridge notifications and three user-info keys have zero posters; only fast refresh is posted and observed. Delete them with the dead observers in `RCTDeviceInfo`, the avatar updates module, and both reload perf loggers. Keep `RCTBridgeWillReloadNotification`, still observed by Expo, and mark it deprecated.

Changelog:
[iOS][Removed] - Remove never-posted `RCTBridge` script-download and invalidation notifications

Differential Revision: D127294776
Summary:
`-[RCTFabricSurface initWithBridge:moduleName:initialProperties:]` has zero callers, and it was the only reader of `bridge.surfacePresenter`. Delete it with the `RCTBridge (RCTSurfacePresenterStub)` category. The proxy accessors stay so existing message sends keep resolving.

Changelog:
[iOS][Removed] - Remove deprecated `RCTFabricSurface` bridge initializer and `RCTBridge` surface-presenter category

Differential Revision: D127294777
Summary:
`sourceURLForBridge:` has no callers: the factory reads `bundleURL` directly, and the default delegate's implementations only threw or forwarded to each other. Delete the protocol method with those implementations and the factory's dead configuration assignment. The `RCTJavaScriptLoader.h` import stays: removing it breaks every `RCTBridge.h` importer that uses the loader types.

Changelog:
[iOS][Removed] - Remove deprecated `RCTBridgeDelegate` `sourceURLForBridge:`

Differential Revision: D127294778
Summary:
Seven bridge-related factory configuration blocks are written but never read. Mark them deprecated since external clients still set them, and delete the eighth (`loadSourceForBridge`), which has no writers at all. Also remove our own dead write and the only reader method.

Changelog: [Internal]

Differential Revision: D127294779
Summary:
Remove the always-on TurboModule flag functions, the unread accessibility-manager flag, the uncalled `batchDidComplete` hook, and the unused `RCTJavaScriptCallback` typedef. Deprecate the ignored `newArchEnabled:` configuration initializers, which external clients still call.

Changelog:
[iOS][Removed] - Remove dead `RCTBridge` flag functions, `batchDidComplete`, and unused callback typedef

Differential Revision: D127294780
Summary:
The C++ bridge delegate protocol has no implementers left: its only method served the removed `RCTCxxBridge`. Delete the header with its build entry, the stale forward declaration, and the unused imports.

Changelog:
[iOS][Removed] - Remove unused `RCTCxxBridgeDelegate` protocol

Differential Revision: D127294781
christophpurrer added a commit to christophpurrer/react-native-macos that referenced this pull request Oct 24, 2026
Summary:
Pull Request resolved: react#59442

Remove dead imports and forward declarations left behind by the bridge cleanup (`RCTRootView.m`, `RCTUIManager.h`, `RCTCxxUtils`, `RCTRootViewFactory.h`) and fix two comments that still describe the removed bridge behavior.

Changelog: [Internal]

Differential Revision: D127295291
@meta-codesync meta-codesync Bot changed the title Sweep dead imports and stale bridge comments Sweep dead imports and stale bridge comments (#59442) Oct 24, 2026
christophpurrer added a commit to christophpurrer/react-native-macos that referenced this pull request Oct 24, 2026
Summary:
Pull Request resolved: react#59442

Remove dead imports and forward declarations left behind by the bridge cleanup (`RCTRootView.m`, `RCTUIManager.h`, `RCTCxxUtils`, `RCTRootViewFactory.h`) and fix two comments that still describe the removed bridge behavior.

Changelog: [Internal]

Differential Revision: D127295291
Summary:
Pull Request resolved: react#59442

Remove dead imports and forward declarations left behind by the bridge cleanup (`RCTRootView.m`, `RCTCxxUtils`, `RCTRootViewFactory.h`) and fix two comments that still describe the removed bridge behavior.

Changelog: [Internal]

Differential Revision: D127295291
@github-actions

Copy link
Copy Markdown

Visual regression

1 visual difference(s) at cd0c5d37921a. Visual differences need maintainer approval. Review the report, then apply visual-change-approved.

ios scroll-view/sticky-header/end: Changed, 113294 px (15.657%)

diff

Expected and Captured
Expected Captured
expected captured

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 Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant