# React UI animations

Techniques for animating user-interface elements in React applications, commonly using state-driven rendering with CSS or browser animation APIs.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## React 19.3

DevFeed: [React 19.3](<https://devfeed.tech/articles/react-19-3-2998.md>)

Original publisher: [Read original article](<https://react.dev/blog/2026/09/09/react-19-3>)

Author: The React Team

Published: 2026-09-09T00:00:00Z

Content type: release

Language: en

Sources: [React Blog](<https://devfeed.tech/sources/react-blog.md>)

Topics: [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [web animation](<https://devfeed.tech/topics/web-animation.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [api](<https://devfeed.tech/tags/api.md>), [browser](<https://devfeed.tech/tags/browser.md>), [css](<https://devfeed.tech/tags/css.md>), [react](<https://devfeed.tech/tags/react.md>), [release](<https://devfeed.tech/tags/release.md>), [view-transitions](<https://devfeed.tech/tags/view-transitions.md>)

### AI overview

React 19.3 stabilizes View Transitions and Fragment Refs. The article focuses on using View Transitions to animate UI updates, with CSS and Web Animations API customization options.

### Source excerpt

React 19.3 adds new features like View Transitions, Fragment Refs, browser(), Trusted Types, and more.

## Headless UI v2.1: Simplified transition API and improved multi-dialog support

DevFeed: [Headless UI v2.1: Simplified transition API and improved multi-dialog support](<https://devfeed.tech/articles/headless-ui-v2-1-simplified-transition-api-and-improved-multi-dialog-support-3457.md>)

Original publisher: [Read original article](<https://tailwindcss.com/blog/2024-06-21-headless-ui-v2-1>)

Published: 2024-06-21T15:00:00Z

Content type: release

Language: en

Sources: [Tailwind CSS Blog](<https://devfeed.tech/sources/tailwind-css-blog.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [dialog](<https://devfeed.tech/topics/dialog.md>), [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>)

Tags: [compatibility](<https://devfeed.tech/tags/compatibility.md>), [components](<https://devfeed.tech/tags/components.md>), [dialog](<https://devfeed.tech/tags/dialog.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [install](<https://devfeed.tech/tags/install.md>), [react](<https://devfeed.tech/tags/react.md>)

### AI overview

Headless UI v2.1 for React simplifies transition APIs with a new prop and data attributes for transition stages. It also supports rendering multiple sibling dialogs, with the most recently opened dialog closing on Escape or outside clicks.

### Source excerpt

We just released Headless UI v2.1 for React, which dramatically simplifies our transition APIs and adds support for rendering multiple dialogs as siblings. We've made transitions way easier in v2.1 by adding a new prop to all of the built-in components you might want to transition, and adding data attributes for each transition stage so you can add transition styles by just throwing some classes on the target element: There are four data attributes you can use to target the different stages of...

## Making Your React Native Gestures Feel Natural

DevFeed: [Making Your React Native Gestures Feel Natural](<https://devfeed.tech/articles/making-your-react-native-gestures-feel-natural-1479.md>)

Original publisher: [Read original article](<https://shopify.engineering/making-react-native-gestures-feel-natural>)

Author: Andrew Lo

Published: 2023-01-20T18:37:05Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [draggable](<https://devfeed.tech/topics/draggable.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [app](<https://devfeed.tech/tags/app.md>), [draggable](<https://devfeed.tech/tags/draggable.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [react-native](<https://devfeed.tech/tags/react-native.md>)

### AI overview

This article explains how to make draggable React Native interfaces feel more natural. Using a Shop app Sheet component, it shows how incorporating drag velocity, position, spring animations, elasticity, and resistance can improve gesture feedback and transitions.

### Source excerpt

When working with draggable elements in React Native mobile apps, there are some simple ways to help gestures and animations feel better and more natural.

## Utility-Friendly Transitions with @tailwindui/react

DevFeed: [Utility-Friendly Transitions with @tailwindui/react](<https://devfeed.tech/articles/utility-friendly-transitions-with-tailwindui-react-3504.md>)

Original publisher: [Read original article](<https://tailwindcss.com/blog/utility-friendly-transitions-with-tailwindui-react>)

Published: 2020-08-27T18:30:00Z

Content type: release

Language: en

Sources: [Tailwind CSS Blog](<https://devfeed.tech/sources/tailwind-css-blog.md>)

Topics: [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [react](<https://devfeed.tech/tags/react.md>), [release](<https://devfeed.tech/tags/release.md>), [tailwind](<https://devfeed.tech/tags/tailwind.md>), [ui](<https://devfeed.tech/tags/ui.md>), [vue](<https://devfeed.tech/tags/vue.md>)

### AI overview

Announces the first release of @tailwindui/react, providing utility-first enter/leave transition primitives for interactive React UIs.

### Source excerpt

Announcing the first release of @tailwindui/react, which introduces a component for utility-first enter/leave transitions.

## A First Look at Reanimated 2

DevFeed: [A First Look at Reanimated 2](<https://devfeed.tech/articles/a-first-look-at-reanimated-2-1391.md>)

Original publisher: [Read original article](<https://shopify.engineering/first-look-reanimated-2>)

Author: William Candillon

Published: 2020-07-02T18:46:00Z

Content type: article

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Shopify](<https://devfeed.tech/topics/shopify.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [shopify](<https://devfeed.tech/tags/shopify.md>)

### AI overview

The article introduces Reanimated 2, an alpha release that changes how gestures and animations are built in React Native. Its animation worklets run JavaScript functions in an isolated context and keep interaction processing on the UI thread, avoiding reliance on the JavaScript thread for every animation frame. The article contrasts this approach with Reanimated 1's declarative domain-specific language, which had a steep learning curve, instruction limitations, initialization-time performance costs, bridge crossings, and memoization-related bugs.

### Source excerpt

With Reanimated 2, the team at Software Mansion asked: "How would it look if there were no constraints when writing gestures and animations in React Native?" and started from there.

## Building Arrive's Confetti in React Native with Reanimated

DevFeed: [Building Arrive's Confetti in React Native with Reanimated](<https://devfeed.tech/articles/building-arrive-s-confetti-in-react-native-with-reanimated-1322.md>)

Original publisher: [Read original article](<https://shopify.engineering/building-arrives-confetti-in-react-native-with-reanimated>)

Author: Joel Besada

Published: 2020-04-07T15:30:00Z

Content type: tutorial

Language: en

Sources: [Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering.md>), [Shopify Engineering - Shopify Engineering](<https://devfeed.tech/sources/shopify-engineering-shopify-engineering.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [animation](<https://devfeed.tech/tags/animation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [react-native](<https://devfeed.tech/tags/react-native.md>)

### AI overview

Shopify describes how the Arrive package tracking app was rewritten in React Native and launched on Android alongside its existing iOS version. The article explains implementing the app's confetti effect purely in JavaScript with declarative animations using the Reanimated library, including layout and visual improvements.

### Source excerpt

Shopify is investing in React Native as our primary choice of mobile technology moving forward. As a part of this we've rewritten our package tracking app Arrive with React Native and launched it on Android--an app that previously only had an iOS version. One of the most cherished features by the users of the Arrive iOS app is the confetti that rains down on the screen when an order is delivered.

## Animate between two react components

DevFeed: [Animate between two react components](<https://devfeed.tech/articles/animate-between-two-react-components-37236.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/animate-between-two-react-components/>)

Author: Stanko

Published: 2017-10-24T00:00:00Z

Content type: article

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [React](<https://devfeed.tech/topics/react.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [children](<https://devfeed.tech/tags/children.md>), [components](<https://devfeed.tech/tags/components.md>), [react](<https://devfeed.tech/tags/react.md>)

### AI overview

A proof of concept for transitioning between two React components. It animates the parent wrapper's height while fading the previous component out and the new component in when the children prop changes.

### Source excerpt

Just a quick proof of concept I made for transitioning between two react components. It animates height (of the parent) and fades components into each other. In componentWillReceiveProps it checks if children prop has changed. When that happens, it will save currently rendered children and the height of the wrapper. Then it will animate wrapper's height to a new component's height, fade out previous component and fade in the new one. Finally when animation is finished it will reset wrapper's height to auto. I might release it as a standalone npm component, but it needs some polishing before I do so. If you make use out of it, please share in the comments.

## Animate React component by calling 'setState' in 'componentDidMount'

DevFeed: [Animate React component by calling 'setState' in 'componentDidMount'](<https://devfeed.tech/articles/animate-react-component-by-calling-setstate-in-componentdidmount-37337.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/react-rerender-in-component-did-mount/>)

Author: Stanko

Published: 2017-06-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [React UI animations](<https://devfeed.tech/topics/react-ui-animations.md>), [how to create smooth CSS transitions](<https://devfeed.tech/topics/how-to-create-smooth-css-transitions.md>), [CSS](<https://devfeed.tech/topics/css.md>), [browser](<https://devfeed.tech/topics/browser.md>)

Tags: [animation](<https://devfeed.tech/tags/animation.md>), [browser](<https://devfeed.tech/tags/browser.md>), [code](<https://devfeed.tech/tags/code.md>), [css](<https://devfeed.tech/tags/css.md>), [react](<https://devfeed.tech/tags/react.md>), [react-component](<https://devfeed.tech/tags/react-component.md>)

### AI overview

A tutorial explains why changing a React component's state in componentDidMount may fail to produce a CSS transition. It attributes the behavior to browsers merging changes made within the same animation frame, and discusses using a timeout or animation-frame approach to separate the rendered states, including inconsistent Firefox behavior.

### Source excerpt

On the frontend, we do a lot of animations. Most of the simple animations I create by using CSS transitions. Either I will change class or inline style of the element, and define transitions in CSS file. Easiest way to do this in React is to render initial state, and then when it renders, change the state to apply class or style to animate. The easiest way to do it in React is to change state in componentDidMount. Setting state in componentDidMount is considered to be anti-pattern, as it forces rerender and can lead to property/layout thrashing. But in our case, that is exactly what we want to do. When we do that, we hit the wall - only second state is rendered and there is no transition between two states. It happens because of browsers optimization - browsers are not rerendering stuff that changed in the same animation frame. But they merge changes and render the end result. The problem I just described is not React exclusive, but browser related. Same will happen if we try something like this: const element = document.querySelector('.AnimateMe'); element.style.height = '50px'; element.style.height = '250px'; So let's start with example of the problem. Animate component by changing state in componentDidMount doesn't work # The scenario I described above. Element height depends on this.state.animation property. It is initially set to false and element height should be 50px. In componentDidMount we'll change the value of this.props.animation to true and element height should be 250px. As we added transition, it should animate. But it doesn't as all of this happens really fast, and browser decides to merge changes and render only the end result. This way our element immediately gets height of 250px. import React, { Component } from 'react'; export default class AnimateMe extends Component { constructor(props) { super(props); this.state = { animate: false, }; } componentDidMount() { this.setState({ animate: true }); } render() { return ( <div style={ { background: '#e