v0.85.0-rc.0
Breaking Changes📦 react-nativeView on GitHub →
⚠ 7 breaking✨ 25 features🐛 1 fixes⚡ 1 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
- Update Jest configurations to use the new preset path: `react-native/jest-preset`.
- Replace usage of deprecated type aliases with the direct type.
- Replace usage of `StyleSheet.absoluteFill` with the appropriate direct style property.
- 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
StyleSheet.absoluteFillRCTEventEmitterUIManagerHelperUIImplementationReactTextUpdatePressableAnimationBackendAnimatedPropsRegistryAnimationTimestampRCTAnimationChoreographerRCTSchedulerEventEmitterNativeAnimatedNodesManagerPropsAnimatedNodeTextInputReactFontManagerDevSupportHttpClientDevSupportRequestHeaders
⚡ Deprecations
- Android: `UIManagerHelper.getEventDispatcherForReactTag` and `UIManagerHelper.getEventDispatcher(ReactContext, UIManagerType Int)` are deprecated; use `getEventDispatcher`.