Catalin describes animation as a detail that can make an app feel familiar and help users complete actions smoothly. Micro-interactions give immediate feedback, while larger UI animations can coordinate movement, such as staggering list items as they appear or animating them out when removed.
Creating Performant React Native Animations
Speakers
Callstack host Łukasz talks with mobile engineer Catalin Miron of Elevate Labs and Callstack’s Łukasz Wąsik about designing React Native animations that support users while maintaining performance.
The guests warn that excessive motion distracts users, and long, uninterruptible animations make them wait. Catalin advises against spring animations for opacity because they can overshoot its zero-to-one range; timing curves such as ease-in or ease-out are a better fit. For spring motion, he suggests adjusting mass to match the feel of the element.
Animations can keep users informed while work such as network requests or filtering happens in the background, but heavy work and complex motion can make animations stutter, especially on lower-end devices. The guests suggest simplifying motion when needed, including a fade or short slide, and supporting Reduce Motion. Łukasz Wąsik describes adding a Reduce Motion setting to React Native Paper's theme and scaling animation duration to zero when it is enabled.
For complex, detailed motion, Catalin suggests playing back a Lottie or Rive animation rather than recreating every moving piece in React Native. For animated text values, Łukasz Wąsik describes using an animated text library or a TextInput workaround with Reanimated animated props. He also mentions setNativeProps as a way to send props directly to native components.
Catalin recommends learning interpolation and deriving multiple animated styles from one value. For example, a value that runs from zero to one can drive scale and map to a translation range such as 100 to 200. This can make animation code easier to maintain; Catalin's Animate React Native site offers reusable examples and source code for learning techniques such as carousel motion.
Takeaways
- Use micro-interactions to show that an action registered or work is underway.
- Keep animations short, interruptible, and appropriate to the task.
- Offer simpler motion for Reduce Motion settings and devices that struggle with complex effects.
- Use Lottie or Rive playback for complex artwork when recreating it in React Native would be costly.
- Derive related styles from a shared animated value with interpolation to keep code manageable.
Mentioned in this talk
Search inside this talk
What was claimed 11
- feature
Callstack: Produces the React Native Show podcast“the React Native Show podcast, brought to you by Callstack”
YouTube Unverified1 source· Talk
- built
“I'm the creator of Animate React Native”
0:40inCoffee-fuelled animations at 60FPSYouTube Verified3 sources· Talk
- metricAnimate React Native: More than 120 animations
“a collection of more than 120 different animations”
YouTube Unverified1 source· Talk
- role atCatalin Miron is mobile engineer at Elevate Labs
“I'm currently a mobile engineer working at Elevate Labs”
YouTube Unverified1 source· Talk
- featurePaper: UI library for React Native
“React Native Paper, a UI library for React Native”
YouTube Unverified1 source· Talk
- role atŁukasz Wąsik is maintainer at Paper
“you're a maintainer of React Native Paper”
YouTube Unverified1 source· Talk
- usesPaper uses Reduce MotionScales animation duration to zero when Reduce Motion is enabled
“We multiply the duration by that value, which disables the animation when Reduce Motion is turned on.”
YouTube Unverified1 source· Talk
- feature
Rive: Supports interaction with animations
“You can also interact with things, especially on the Rive side.”
YouTube Unverified1 source· Talk





