Install
$ agentstack add skill-lukedj78-dev-flow-rn-animations-gestures ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
rn-animations-gestures — guardrail for animations + gestures in RN/Expo
> For the current Expo API and per-version details, verify against the Expo docs / MCP mcp.expo.dev / expo/skills (see rn-fundamentals → Source of truth).
The 5 rules (non-negotiable)
- Reanimated 4 is the default. Never the legacy
AnimatedAPI fromreact-nativefor new code. Reanimated 4 also ships a web-style CSS Animations/Transitions API (transition: {...},animationNamekeyframes) as a backward-compatible ADDITION to worklets — good for state-driven style changes, not a replacement foruseSharedValue/useAnimatedStyleon gesture-driven motion (seereferences/patterns.md). - Gestures via Gesture Handler 2. Never
PanResponder. UseGesture.Pan(),Gesture.Pinch(),Gesture.Tap(),Gesture.LongPress()with ``. - Worklets run on the UI thread — they CANNOT access React state directly. To call back to JS use
runOnJS(fn)(args). Inside worklets, only shared values, locals, andrunOnUI/runOnJSare safe. - Layout animations for enter/exit/move. Use
entering={FadeIn},exiting={FadeOut},layout={Layout.springify()}fromreact-native-reanimated— they handle their own worklets correctly. useDerivedValuefor computed shared values. NeveruseMemoon a shared value —useMemoruns on JS thread.
Quick decision tree
- "What's the right tool — worklets or the CSS Animations/Transitions API?" →
references/decision-tree.md - "How do I structure a worklet-driven animation?" →
references/patterns.md - "What native module setup do I need?" → both Reanimated 4 + RNGH 2 are already in
rn-bootstrap'sinstall-stack.sh. No extra setup needed.
Common anti-patterns (NEVER do)
- ❌
import { Animated } from "react-native"— usereact-native-reanimated'sAnimatedinstead. - ❌
setMyState(newValue)from inside a worklet — wrap inrunOnJS(setMyState)(newValue). - ❌ Reading
props.foodirectly insideuseAnimatedStyle— capture into a shared value first. - ❌
PanResponder— deprecated for new code. Gesture Handler 2. - ❌ Animating
height: 'auto'— impossible on the UI thread (no measure). Either measure withonLayoutor useLayoutAnimationfrom Reanimated. - ❌ Chaining
withTiming(...)insideuseEffectwithoutcancelAnimation— leaks on unmount.
Sources
- Course: codewithbeto.dev/rnCourse — "Animations & Gestures" module (paid, distilled).
- Official: https://docs.swmansion.com/react-native-reanimated/docs/
- Official: https://docs.swmansion.com/react-native-gesture-handler/docs/
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: lukedj78
- Source: lukedj78/dev-flow
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.