Loading...
Loading...
React Native Reanimated 4.x animation patterns. Use when adding animations, transitions, entering/exiting effects, or gesture-driven animations to React Native screens. Replaces Framer Motion for mobile.
npx skill4agent add dralgorhythm/claude-agentic-framework react-native-reanimatedpnpm add react-native-reanimatedreact-native-reanimatedAnimateduseSharedValueuseAnimatedStylewithTiminguseAnimatedStyleAnimated.ViewAnimated.TextuseReducedMotion()FadeInDownFadeOutUpSlideInRightenteringexitingAnimated.View.duration(300).easing(...).delay(100)useSharedValue(initialValue)useAnimatedStyle(() => ({...}))withTiming(toValue, config)withSpring(toValue, config)withDelay(ms, animation)withSequence(...animations)withRepeat(animation, count, reverse)| Type | Duration | Use |
|---|---|---|
| Fast | 150ms | Micro-interactions, haptic responses |
| Normal | 300ms | Default transitions, entering |
| Slow | 500ms | Emphasis, screen transitions |
| Stagger offset | 50ms per item | List item reveals |
Easing.out(Easing.cubic)Easing.inOut(Easing.cubic)Easing.in(Easing.cubic)Animated.ViewFadeInFadeInDownFadeInUpSlideInRightZoomInFadeOutFadeOutUpFadeOutDownSlideOutLeftZoomOut.duration(300).delay(100).easing(Easing.out(Easing.cubic)).springify().damping(15).stiffness(150)withDelayentering={FadeInDown.delay(index * 50).duration(300)}offset.value = withDelay(index * 50, withTiming(1, { duration: 300 }))const reducedMotion = useReducedMotion();reducedMotionduration(0)Animated.ViewAnimated.TextAnimated.ScrollViewconst AnimatedPressable = Animated.createAnimatedComponent(Pressable);transformopacitywidthheightmarginpaddinguseAnimatedStyleenteringexitingenteringexitingwithSpringwithTiminguseReducedMotion()withDelay(index * 50, ...)react-native-gesture-handlerEasing.out(Easing.cubic)AnimatedwidthheightmargintransformopacityuseReducedMotion()useAnimatedStylesetTimeoutwithDelay