Files
react-native/scripts
Christoph Purrer 46662327fb Delete legacy RCTNativeAnimatedModule from RN iOS (#57904)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57904

The Old Architecture has been deleted from React Native iOS, which makes the
legacy `RCTNativeAnimatedModule` unreachable:

- Its JS spec only requests `'NativeAnimatedModule'` when
  `shouldUseTurboAnimatedModule()` is false, but `ReactInstance.cpp` sets
  `RN$Bridgeless = true` unconditionally on iOS, so that branch never runs.
- Its only entry points were `-setBridge:` and `RCTUIManagerObserver`, and
  `RCTBridge` is now an all-nil stub with `RCTCxxBridge` deleted.
- Nothing referenced it by filename except a single `legacy = True` Buck
  plugin provider.

iOS Animated is served by `RCTNativeAnimatedTurboModule` (bridgeless ObjC) and
by the C++ `facebook::react::AnimatedModule` behind `cxxNativeAnimatedEnabled()`.

With the last bridge-dependent Animated consumer gone, also stripped the dead
bridge plumbing it was the only reason for:

- `RCTNativeAnimatedNodesManager -initWithBridge:surfacePresenter:` loses
  `bridge:`.
- `RCTPropsAnimatedNode -connectToView:viewName:bridge:surfacePresenter:` loses
  `bridge:` and the `RCTUIManager` fallback in `-updateView`, which collapses to
  the single `synchronouslyUpdateViewOnUIThread:props:` call.
- `viewName:` goes too, since it was only used to look up a legacy view
  manager. The C++ (`connectAnimatedNodeToView(Tag, Tag)`) and Kotlin
  (`connectAnimatedNodeToView(animatedNodeTag, viewTag)`) nodes managers already
  take two arguments, and the sole remaining ObjC caller passed `nil`.

`RCTNativeAnimatedTurboModule` is deliberately NOT renamed back to
`RCTNativeAnimatedModule` — that is a much wider rename, best done separately.

Changelog: [iOS][BREAKING] Delete legacy RCTNativeAnimatedModule from RN iOS

Reviewed By: zeyap

Differential Revision: D115663619

fbshipit-source-id: d9c703171c2121e8456d923e4db58e624c9040f5
2026-09-10 09:11:53 -07:00
..