Kuttig says animations should improve the user experience, not just decorate an app. Examples include showing progress during a three-second press, indicating loading, transforming a scrolling header, and drawing attention to part of a screen.
Animate everything - How to use Animations with 60 fps
Speaker
Alexander Kuttig of Munich-based software company Horizon explains how to build smooth React Native animations at React Native EU 2021, presented by Callstack.
In the general React Native architecture, JavaScript and native rendering communicate through a bridge. For a scroll animation, values may travel across that bridge every 16 milliseconds; heavy JavaScript work can block interaction and cause dropped frames.
Kuttig recommends React Native's Animated API for straightforward effects such as fades and scroll-linked headers. Enabling the native driver sends animation rules to the native thread, avoiding per-frame trips through JavaScript. The driver supports properties such as opacity and transforms, but not layout changes like height.
Lottie plays animation data exported from After Effects with the Bodymovin plugin, and its React Native component can also be controlled by scroll progress. It suits detailed sequences such as avatar animations, especially when a designer can create the animation. Code can control playback, but changing the animation's visual details requires editing the source file.
Reanimated 2 uses worklets that run on the UI thread, along with shared values and hooks such as useAnimatedStyle. Kuttig shows scroll-linked effects that can change layout properties such as height, and recommends Reanimated for complex animations requiring developer control. He suggests choosing Lottie when creating the animation in After Effects is faster and full code control is unnecessary.
Takeaways
- Tie each animation to a user need, such as feedback, progress, or guiding attention.
- Use the Animated native driver for simpler effects to keep frame calculations off the JavaScript thread.
- Choose Lottie when a designer can supply a detailed animation and code-level visual control is not needed.
- Choose Reanimated for complex interactive animations that need UI-thread execution or layout changes.
- When a project adopts Reanimated for complex work, Kuttig prefers using it for all animations to avoid mixing APIs.
Mentioned in this talk
Search inside this talk
What was claimed 11
- foundedAlexander Kuttig founded Horizon
“I founded my own software company here in Munich in 2012”
YouTube Unverified1 source· Talk
- featureHorizon: React and React Native development
“we focus on React and React Native development”
YouTube Unverified1 source· Talk
- featureHorizon: 32 people
“We're 32 people at the moment”
YouTube Unverified1 source· Talk
- works atAlexander Kuttig works at Horizon
“I'm working at my own company. It's called Horizon”
YouTube Unverified1 source· Talk
- featureAnimated API: Native driver runs animation calculations on the native thread
“The native thread knows the rules, and all the calculations and rendering happen there”
YouTube Unverified1 source· Talk
- integrates withBodymovin integrates with After Effects
“export them to JSON with a plugin called Bodymovin”
19:04inAn Animation Showcase: RN App Can Ce BeautifulYouTube Verified2 sources· Talk
- featureAnimated API: Native driver is limited to non-layout properties such as transform and opacity
“Things like transform and opacity will work, but Flexbox and position properties will not”
YouTube Unverified1 source· Talk
- featureLottie: Uses JSON animation files and allows programmatic playback control
“you have a LottieView and a JSON file as the resource for your animation”
YouTube Unverified1 source· Talk






