react-native-animations

pluginagentmarketplace/custom-plugin-react-native · updated Apr 8, 2026

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-react-native --skill react-native-animations
0 commentsdiscussion
summary

Build smooth 60fps animations combining Reanimated 3, Gesture Handler, and layout transitions.

  • Master Reanimated's shared values, animated styles, and timing functions (withSpring, withTiming, withDecay) for declarative animations
  • Handle complex gestures like pan, pinch, and rotation using Gesture Handler, then synchronize them with animations via shared values
  • Implement entering/exiting animations and layout transitions using FadeIn, FadeOut, and Layout.springify() for dynamic lists
skill.md

React Native Animations Skill

Learn high-performance animations using Reanimated 3, Gesture Handler, and layout animations.

Prerequisites

  • React Native basics
  • Understanding of JavaScript closures
  • Familiarity with transforms and styles

Learning Objectives

After completing this skill, you will be able to:

  • Create smooth 60fps animations with Reanimated
  • Handle complex gestures with Gesture Handler
  • Implement layout entering/exiting animations
  • Optimize animations for performance
  • Combine gestures with animations

Topics Covered

1. Installation

npm install react-native-reanimated react-native-gesture-handler

# babel.config.js
module.exports = {
  plugins: ['react-native-reanimated/plugin'],
};

2. Reanimated Basics

import Animated, {
  useSharedValue,
  useAnimatedStyle,
  withSpring,
} from 'react-native-reanimated';

function AnimatedBox() {
  const scale = useSharedValue(1);

  const animatedStyle = useAnimatedStyle(() => ({
    transform: [{ scale: scale.value }],
  }));

  const handlePress = () => {
    scale.value = withSpring(scale.value === 1 ? 1.5 : 1);
  };

  return (
    <Pressable onPress={handlePress}>
      <Animated.View style={[styles.box, animatedStyle]} />
    </Pressable>
  );
}

3. Gesture Handler

import { Gesture, GestureDetector } from 'react-native-gesture-handler';

function DraggableBox() {
  const translateX = useSharedValue(0);
  const translateY = useSharedValue(0);

  const pan = Gesture.Pan()
    .onUpdate((e) => {
      translateX.value = e.translationX;
      translateY.value = e.translationY;
    })
    .onEnd(() => {
      translateX.value = withSpring(0);
      translateY.value = withSpring(0);
    });

  const style = useAnimatedStyle(() => ({
    transform: [
      { translateX: translateX.value },
      { translateY: translateY.value },
    ],
  }));

  return (
    <GestureDetector gesture={pan}>
      <Animated.View style={[styles.box, style]} />
    </GestureDetector>
  );
}

4. Layout Animations

import Animated, { FadeIn, FadeOut, Layout } from 'react-native-reanimated';

function AnimatedList({ items }) {
  return (
    <Animated.View layout={Layout.springify()}>
      {items.map((item) => (
        <Animated.View
          key={item.id}
          entering={FadeIn}
          exiting={FadeOut}
          layout={Layout.springify()}
        >
          <Text>{item.title}</Text>
        </Animated.View>
      ))}
    </Animated.View>
  );
}

5. Animation Timing

Function Use Case
withTiming Linear, controlled duration
withSpring Natural, physics-based
withDecay Momentum-based (fling)
withSequence Multiple animations in order
withRepeat Looping animations

Quick Start Example

import Animated, {
  useSharedValue,
  useAnimatedStyle,
  withSpring,
  interpolate,
} from 'react-native-reanimated';
import { Gesture, GestureDetector } from 'react-native-gesture-handler';

function SwipeCard() {
  const translateX = useSharedValue(0);

  const gesture = Gesture.Pan()
    .onUpdate((e) => { translateX.value = e.translationX; })
    .onEnd(() => { translateX.value = withSpring(0); });

  const style = useAnimatedStyle(() => ({
    transform: [
      { translateX: translateX.value },
      { rotate: `${interpolate(translateX.value, [-200, 200], [-15, 15])}deg` },
    ],
  }));

  return (
    <GestureDetector gesture={gesture}>
      <Animated.View style={[styles.card, style]} />
    </GestureDetector>
  );
}

Common Errors & Solutions

Error Cause Solution
"Attempted to call from worklet" Missing runOnJS Wrap with runOnJS()
Animation not running Missing 'worklet' Add 'worklet' directive
Gesture not working Missing root view Add GestureHandlerRootView

Validation Checklist

  • Animations run at 60fps
  • Gestures respond smoothly
  • No frame drops on low-end devices
  • Layout animations don't cause jank

Usage

Skill("react-native-animations")

Bonded Agent: 05-react-native-animation

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.660 reviews
  • Fatima Kim· Dec 24, 2024

    I recommend react-native-animations for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Layla Kim· Dec 20, 2024

    react-native-animations is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Yuki Flores· Dec 16, 2024

    Solid pick for teams standardizing on skills: react-native-animations is focused, and the summary matches what you get after install.

  • Dhruvi Jain· Dec 12, 2024

    Solid pick for teams standardizing on skills: react-native-animations is focused, and the summary matches what you get after install.

  • Chinedu Martin· Dec 12, 2024

    react-native-animations has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Yuki Agarwal· Dec 4, 2024

    Keeps context tight: react-native-animations is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Layla Park· Nov 23, 2024

    Keeps context tight: react-native-animations is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Kiara Anderson· Nov 15, 2024

    react-native-animations reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Maya Gupta· Nov 7, 2024

    We added react-native-animations from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Oshnikdeep· Nov 3, 2024

    We added react-native-animations from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

showing 1-10 of 60

1 / 6