npm / react-native-reanimated
react-native-reanimated
What changed in react-native-reanimated 3 to 4, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
13 breaking1 security1 deprecations32 new APIs and options1 performance14 behavior and defaults2 tooling126 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initreact-native-reanimated 4169 changes
Breaking changes 11
AnimatedRefOnJS is now named AnimatedRefOnRN.
AnimatedRefOnUI is now a Shareable read with .value instead of a function to call.
Fixes cover transition cancellation and restoration, removed transition properties, slow-animation handling, and several CSS parsing and animation edge cases.
Reanimated 4.7 supports React Native 0.86–0.88, pairs with Worklets 0.13.x, and no longer supports React Native 0.83–0.85.
The feature flag is gone because mutables always use Synchronizable state.
JSC runtime support is removed.
React Native compatibility is bumped to 0.86.
The TypeScript type now prevents Animated Styles from being passed to non-animated components, replacing a runtime check that could produce false positives.
The minimum supported React Native version is now 0.81.
On web, entering animations are no longer triggered when a view is exiting.
Compatibility support is added for React Native 0.82, and compatibility for React Native 0.78 is dropped.
Security 1
Makes obtaining the logger configuration safer.
Deprecations 1
useAnimatedKeyboard is deprecated.
New APIs and options 31
useAnimatedStyle now supports linear and radial gradients provided as objects or CSS strings, processed on the UI thread.
Adds a custom callback to the logger.
Enables experimental Android platform-driven CSS opacity transitions using ObjectAnimator, off the animation loop; the feature is disabled by default.
Adds a worklet utility that returns white or black, whichever has the higher WCAG contrast ratio against a given color; it also works on the JS thread.
On Android, opacity CSS transitions can run on the platform with ObjectAnimator, off the animation loop, when the feature flag is enabled.
CSS animations now support pseudo-selectors such as :hover, :active, and :focus on native Apple, Android, and web backends.
Pseudo-selectors can now enable a default prop value.
Shadow, background, and border CSS transitions now run on iOS Core Animation when the IOS_CSS_CORE_ANIMATION feature flag is enabled.
Animating react-native-svg components with CSS animations is now available on web.
Scopes shared element transitions to a subtree so only matching elements within the boundary animate together.
A new Animation Backend is integrated behind a feature flag to improve the flow of updating the Shadow Tree in animations.
Synchronous props now support borderBlockColor.
Synchronous props now support borderBlockEndColor.
Synchronous props now support borderBlockStartColor.
A feature flag enables iOS CSS animations to run directly on Core Animation layers instead of through the JS-driven update loop.
NativeEventsManager is exported for use by developers.
Synchronous props now support outlineColor.
Synchronous props now support outlineOffset.
Synchronous props now support outlineWidth.
Synchronous props now support placeholderTextColor.
Synchronous props now support shadowColor.
Synchronous props now support shadowOffset.
A hook exposes the current frame timestamp as a Shared Value, updated each frame with elapsed time since the first frame, and provides an isActive flag to pause or resume updates.
CSS animations now support SVG components and properties, including Path, Image, LinearGradient, RadialGradient, Pattern, Text, Polyline and Polygon; Path d supports special handling for path morphing.
Web layout animations now support originX and originY.
CSS transforms gain 2D and 3D transform matrix integration.
DynamicColorIOS values are supported.
The filter property is supported for animations, including CSS.
A getDynamicFeatureFlag function is added.
Static PlatformColor values are supported.
Shared Element Transition is available on the New Architecture behind a feature flag.
Performance 1
On Android, scheduleOnUI now short-circuits when called from the UI thread.
Behavior and default changes 14
Layout animations now use the new light-tree-based engine by default; apps with regressions can opt back into the previous engine with a feature flag.
Mutables always use Synchronizable state.
Improves touch-device hover handling, including SVG elements, opacity-zero views, hit testing, scrolling, and clearing hover in Android Modals.
CSS animation lifecycle callbacks now fire on iOS and Android, including cancellation when a view unmounts.
CSS animation lifecycle callbacks now fire on iOS and Android.
Reanimated stops taking over UIManagerAnimationDelegate.
SVG animations use CSS on web in minified builds.
Shared Values can now be used from Worklet Runtimes other than the UI Runtime.
The Synchronizable in Mutable optimization feature flag is now enabled by default.
Callbacks from the Gesture Handler hooks API are automatically workletized.
Transform strings can now be animated.
Transform origin processing now uses the native processTransformOrigin instead of the web version.
Reanimated accepts Worklets 0.7.x as compatible, allowing developers to use that version with Reanimated.
Uses hermesvm instead of libhermes on React Native 0.82 and later.
Tooling 2
Adds support for SPM.
Types support react-native-strict-api with backwards compatibility.
Fixes and other changes 108
Fixes exiting view removals not being flushed and exiting Layout Animations leaking views on Android with the mounting coordinator pull model.
Fixes crashes and memory corruption when a view flattens in the same commit in which its parent unflattens.
Fixes an Android crash if the React host is torn down while a CSS or layout animation runs in the background.
Fixes an Android crash with react-native-screens before 4.27 when removing a native stack screen containing a nested stack with header buttons.
Fixes Android shared element transitions casting props of a nested Text with a sharedTransitionTag to view props.
Skips synchronous prop updates for unmounted views to avoid throwing and logging mounting-layer exceptions on the UI thread.
Synchronous prop updates no longer reset to old values when a commit moves a view within its parent, or show an older value for one frame over a newer synchronous write.
Fixes a native Android crash caused by reading opacity from a nested Text's props as if they were view props.
Fixes an iOS crash when the app delegate does not declare window, as in apps using the UIScene lifecycle.
Fixes an Android crash when sensor events are labeled with a sensor type other than the registered one.
Prevents easing extrapolation when the first frame timestamp predates the animation start time, which could send the animated value orders of magnitude out of range for one frame.
Enables the JavaScript fallback on Windows.
Restores Jest support in consumer projects.
Calling measure on an unmounted ref now returns null and shows a warning.
This release fixes shared element transition bugs, including Android gestures inside SharedTransitionBoundary, touch blocking, stale restored colors, and percent translation resolution.
Prevents sticky headers from freezing animated styles.
Touch
:activeis dismissed once a press moves past the tap slop; support is also added for SVG elements.Fixes transition timing, value persistence and routing, interpolation context, and Android text rendering during transitions.
Fixes Android entering-animation flashes, sticky headers during scroll, stale values after pauses, and other layout-animation update issues.
Stops throwing when LayoutAnimationConfig has non-element children.
CSS animation lifecycle callbacks now fire on iOS and Android.
CSS animation lifecycle callbacks now fire on iOS and Android.
CSS transition lifecycle callbacks now fire on iOS and Android.
CSS transition lifecycle callbacks now fire on iOS and Android.
CSS transition lifecycle callbacks now fire on iOS and Android.
CSS transition lifecycle callbacks now fire on iOS and Android.
Reanimated 4.6 supports React Native 0.83–0.87 and pairs with Worklets 0.12.x.
Fixes CSS animation of react-native-svg in minified web builds and adds pseudo-selector support and hit testing for SVG elements.
Allows narrow SharedValues in optional props.
Accepts the text prop in animated TextInput types.
Fixes an Android crash involving insets when an animation is cancelled.
Fixes a crash caused by withheld exiting layout animations in the experimental proxy.
Fixes a crash when handleRawEvent receives a stale EventTarget with a null InstanceHandle.
Guards against a nil _performOperations block in REANodesManager.
Fixes jumping sticky headers on Android during scrolling.
Prevents animated views from reverting to stale values after an app pause or re-animation.
Fixes a crash involving withheld exiting layout animations in the legacy proxy.
Reanimated 4.5.2 supports Worklets 0.11.
Setting values in callbacks no longer causes recursive loops.
Empty-object style values are rejected only for supported props.
Opacity is restored for flaky entering animations under Reduce Motion on iOS.
Pseudo selectors are re-registered after a component remount.
Prevents an Android crash on empty CSS
strokeDasharrayfrom the default keyframe endpoint.Fixes an Android ANR deadlock between the CSS updates-registry lock and Fabric commit.
Fixes animations freezing after upgrading to React Native 0.86.0-rc.3.
Prevents flashing to the default style when a CSS transition detaches on Android.
Prevents exiting views from getting stuck under heavy load on Android.
Android CSS :hover remains active while the pointer is over descendant views.
Fixes
jsPropsnot animating on native.Prevents layout animations cancelled before their start lambda ran from being resurrected.
Fixes layout animations running at 30fps in iOS release builds.
Re-runs mappers dirtied during a mapper run.
Fixes CSS
perspectiveinterpolation producing NaN from the infinity default.Prevents an Android crash when CSS
strokeDasharrayhas an odd length.Fixes a memory leak when unmounting views mid-animation.
Prefers the resolved component ref for host lookup.
Fixes animations freezing after upgrading to RN 0.86.
Fixes the Gradle build script not falling back to default ABIs.
Prevents a crash on iOS double reload when the surface presenter has no scheduler.
Fixes cleanup of layout animation configs.
Re-adds LightNode before starting an exiting animation.
Uses optional chaining on
Platform.OSto prevent a crash in Bundle Mode.Guards
preserveMountedTagsagainstresolveViewthrowing.Preserves the builder subclass type through static animation modifiers.
Fixes delay handling when cancelling an animation from a synchronous event.
Requires
onStartin animation detection.Supports legacy
_viewConfigin animated host lookup for React Native versions below 0.86.Fixed a mapperRun race condition.
Animated.FlatList now forwards refs correctly under React 19.
Fixes spring jitter.
Commits CSS backwards fill during a positive
animationDelay.Fixes Jest environment detection.
Guards StaticPropsRegistry against cross-thread access.
Fixes a race condition in animation cancellation.
Fixes CSS props reverting when a CSS transition detaches.
Fixes race conditions in registries.
Fixes a Unistyles flattening regression introduced in 4.3.0.
Fixes useScrollOffset with renderScrollComponent.
Nested animatedProps objects are now supported correctly and cleaned up correctly.
CSS transitions now work when a prop is added or removed, and no longer flicker when transitionProperty changes.
Passing negative values to filter no longer crashes on iOS.
A fix addresses errors thrown by Next.js during hydration.
The strict type definition for SharedValue.modify is fixed.
useHandler now works on web without the Babel plugin.
Web entering animations are no longer triggered when a view is exiting.
Fixes commits during the Android draw pass.
Fixed incorrect color alphas and crashes when this feature flag is enabled.
Added support for React Native 0.84.
The animation names array order now updates when the keyframes order changes.
Missing style props in the config no longer cause the TypeScript compatibility check to fail.
Settled animations force a render so animated styles synchronize back to React.
CSS animations no longer finish early when animationIterationCount is fractional.
CSS boxShadow interpolation is corrected, and Android supports animating only one boxShadow property.
Fixes invalid default transform values, perspective interpolation near zero, and crashes caused by incorrectly thrown errors.
Fixes web layout animation parsing and views disappearing with StrictMode, and ensures callbacks run when ReducedMotion is on.
Spring Animation user configuration is merged safely.
Passing the string none for the SVG fill property no longer crashes.
Transparent color interpolation and CSS transition behavior are corrected, including an Android crash fix.
Fixes useAnimatedRef breaking on SectionList.
Fixes web crashes when there is no DOM element, along with other issues.
Removes the warning about a missing animationName CSS prop.
Exports the correct createAnimatedComponent, so developers can import and use the intended API.
Fixes CSS animations restarting when navigating between screens on web.
Uses the correct color processor in CSS animations and transitions.
Fixed disappearing views when exiting layout animations are used on web with strict mode.
Fixes inline props processing.
Fixes parsing of layout animations on web.
Implements correct interpolation for transparent colors.
react-native-reanimated 321 changes
Breaking changes 2
The project now uses C++20.
Exiting animations no longer run when a modal is removed.
New APIs and options 1
Added CellRendererComponentStyle support to Animated.FlatList.
Fixes and other changes 18
Fixes an issue involving multiple surfaces.
Web layout animations now support originX.
Web layout animations now support originY.
Fixed entering layout animations not working on Android.
Fixed the Keyframe mock.
Fixed web crashes when there is no DOM element.
Fixed precision errors that could keep an animation running forever.
Fixed layout animations on Android.
Fixed dynamic updates of layout animations.
Added package support for React Native 0.81.
Fixed reparenting.
Fixed sticky headers.
The warning no longer appears on unmount.
Fixed updates on every render when dependencies have not changed.
Fixed crashes when animatedRef is uninitialized and failures after delayed ref initialization.
The hook now works after delayed ref initialization.
Fixed layout animations that depend on window size not working.
Fixed zombie views when a parent is moved.