Skip to content
Back to skills

Add Reanimated

ASecurity

Add Reanimated 4 for spring animations, gestures, shared element transitions. Use when the user says 'animations', 'Reanimated', 'spring animation', 'gesture handler', 'shared element'.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
developmentbashreactspringapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add khadinakbarlabs/expo-mobile-app-builder --skill add-reanimated --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Add Reanimated?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Add Reanimated
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khadinakbarlabs-add-reanimated/badge)](https://www.skillsdirectory.com/skills/khadinakbarlabs-add-reanimated)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "add-reanimated"
description: "Add Reanimated 4 for spring animations, gestures, shared element transitions. Use when the user says 'animations', 'Reanimated', 'spring animation', 'gesture handler', 'shared element'."
---

# Add Reanimated

React Native Reanimated 4 (stable July 2025, New Architecture only). CSS-style declarative animations + worklets.

## Install
```bash
npm exec --no -- expo install react-native-reanimated react-native-gesture-handler react-native-worklets
```

Add to `babel.config.js`:
```js
module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: ['react-native-worklets/plugin'],  // MUST be last
  };
};
```

## Spring animation
```tsx
import Animated, { useSharedValue, useAnimatedStyle, withSpring } from 'react-native-reanimated';

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

  const handlePress = () => {
    scale.value = withSpring(1.4, { damping: 8 }, () => {
      scale.value = withSpring(1);
    });
  };

  return (
    <Pressable onPress={handlePress}>
      <Animated.View style={animatedStyle}>
        <Image source={require('./heart.png')} />
      </Animated.View>
    </Pressable>
  );
}
```

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

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

<GestureDetector gesture={drag}>
  <Animated.View style={[styles.card, animatedStyle]} />
</GestureDetector>
```

## Reduce Motion respect
```tsx
import { AccessibilityInfo } from 'react-native';
const reduceMotion = await AccessibilityInfo.isReduceMotionEnabled();
scale.value = reduceMotion ? withTiming(1.4, { duration: 0 }) : withSpring(1.4);
```

## Reference
`references/01-expo-sdk-54.md`

Files in this skill

  • SKILL.md1.9 KB
  • agents/openai.yaml173 B
  • references/01-expo-sdk-54.md1.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…