ホーム/移动开发/react-native-animations
R

react-native-animations

by @pluginagentmarketplacev
4.9(26)

React Nativeアニメーション開発、特にReanimated 3とジェスチャー処理を習得し、スムーズで高性能なモバイルアプリケーションのインタラクション体験を創造します。

React NativeAnimated APIReanimatedLottieUI AnimationsGitHub
インストール方法
npx skills add pluginagentmarketplace/custom-plugin-react-native --skill react-native-animations
compare_arrows

Before / After 効果比較

1
使用前

従来のReact Nativeアニメーション開発では、パフォーマンスのボトルネックに頻繁に遭遇し、アニメーションがカクカクしたり、スムーズでなかったりします。特に複雑なインタラクションやジェスチャー処理では、ユーザーエクスペリエンスが大幅に低下します。開発プロセスも比較的煩雑で、高性能な視覚効果を実現するのは困難です。

使用後

Reanimated 3と高度なジェスチャー処理を習得することで、非常にスムーズで高性能なモバイルアプリのアニメーションを開発できます。アニメーションはネイティブスレッドで実行されるため、JSスレッドのブロックを回避し、ユーザーインタラクション体験を大幅に向上させ、アプリのインターフェースをより鮮やかで応答性の高いものにします。

description SKILL.md


name: react-native-animations description: Master animations - Reanimated 3, Gesture Handler, layout animations, and performance optimization sasmp_version: "1.3.0" bonded_agent: 05-react-native-animation bond_type: PRIMARY_BOND version: "2.0.0" updated: "2025-01"

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

FunctionUse Case
withTimingLinear, controlled duration
withSpringNatural, physics-based
withDecayMomentum-based (fling)
withSequenceMultiple animations in order
withRepeatLooping 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

ErrorCauseSolution
"Attempted to call from worklet"Missing runOnJSWrap with runOnJS()
Animation not runningMissing 'worklet'Add 'worklet' directive
Gesture not workingMissing root viewAdd 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

forumユーザーレビュー (0)

レビューを書く

効果
使いやすさ
ドキュメント
互換性

レビューなし

統計データ

インストール数564
評価4.9 / 5.0
バージョン
更新日2026年3月16日
比較事例1 件

ユーザー評価

4.9(26)
5
0%
4
0%
3
0%
2
0%
1
0%

この Skill を評価

0.0

対応プラットフォーム

🔧Claude Code
🔧OpenClaw
🔧OpenCode
🔧Codex
🔧Gemini CLI
🔧GitHub Copilot
🔧Amp
🔧Kimi CLI

タイムライン

作成2026年3月16日
最終更新2026年3月16日