Change8

v0.85.0-rc.0

Breaking Changes
📦 react-nativeView on GitHub →
7 breaking25 features🐛 1 fixes1 deprecations🔧 18 symbols

Summary

This release removes several deprecated APIs and type aliases, moves the Jest preset to a new package, and introduces significant updates to the Animation Backend, including synchronization mechanisms and multi-CDP support. Android sees improvements in DevTools and font management.

⚠️ Breaking Changes

  • Deprecated type aliases have been removed. Users must now use the type directly instead of the alias.
  • The Jest preset has been moved to the new `react-native/jest-preset` package. Update Jest configurations to use the new path.
  • The deprecated `StyleSheet.absoluteFill` API has been removed.
  • Support for End-Of-Life (EOL) Node.js versions and old minor versions has been dropped.
  • Android: Deprecated `UIManagerHelper.getEventDispatcherForReactTag` and `UIManagerHelper.getEventDispatcher(ReactContext, UIManagerType Int)`. Use `getEventDispatcher` instead.
  • Android: The `UIImplementation` class has been stubbed as it is unused in the new architecture.
  • Android: `ReactTextUpdate` is now internal.

Migration Steps

  1. Update Jest configurations to use the new preset path: `react-native/jest-preset`.
  2. Replace usage of deprecated type aliases with the direct type.
  3. Replace usage of `StyleSheet.absoluteFill` with the appropriate direct style property.
  4. Ensure your Node.js version is not EOL or an old minor version.

✨ New Features

  • [TypeScript] Added missing `onPressMove` prop to `<Pressable />`.
  • AnimationBackend now cleans-up the `AnimatedPropsRegistry` after JS sync when `updateRuntimeShadowNodeReferencesOnCommitThread` is enabled.
  • Added Animation Backend examples in RNTester.
  • Added a synchronization mechanism for layout information between the React branch and the main branch of the ShadowTree.
  • Upstream useAnimatedColor and useAnimatedValueXY implemented.
  • Created feature flag `viewTransitionEnabled`.
  • Added documentation for AnimationBackend.
  • Added tests for `Pressability` `onHoverOut` property.
  • Added support for transform operations.
  • Support for multiple CDP connections to one React Native Host implemented.
  • TextInput `onChange` event types now include optional selection data.
  • Updated `AnimationBackend` usages to use `AnimationTimestamp`.
  • Added `std::mutex` to `AnimationBackend` to protect `start`, `stop` and `callbacks`.
  • Renamed `RCTAnimationChoreographer` to `RCTScheduler`.
  • Added `EventEmitter` to `react-native` exports.
  • Animated calls `AnimationBackend::trigger` to push updates from events to the mounting layer.
  • Animated can now prompt the backend to push changes to the shadowTree on the JS thread, making RSNRU update the ShadowNode references held by the react renderer.
  • Moved `shadowNodeFamily_` from a map in `NativeAnimatedNodesManager` to `PropsAnimatedNode`.
  • TextInput `onChange` event now includes selection data (cursor location) on iOS and Android.
  • Android: Added `ReactFontManager.customFontFamilies` property to query registered custom font family names.
  • Android: Restored request payload previews in React Native DevTools.
  • Android: Made `DevSupportHttpClient` public for custom dev-support HTTP header registration.
  • Android: Public `DevSupportRequestHeaders` API for registering custom dev-support HTTP headers.
  • Android: Allow specifying dev server IP via gradle property.
  • Android: Added Unstable DrawCommandSpan Usable with PreparedLayoutTextView.

🐛 Bug Fixes

  • Android: Re-added `receiveTouches` to `RCTEventEmitter` with a default no-op implementation to avoid breaking ecosystem libraries.

Affected Symbols

⚡ Deprecations

  • Android: `UIManagerHelper.getEventDispatcherForReactTag` and `UIManagerHelper.getEventDispatcher(ReactContext, UIManagerType Int)` are deprecated; use `getEventDispatcher`.