What problem does it solve? Animations in React Native apps often stutter, feel wrong, or break on real devices because they run on the wrong thread, use approximated curves, or ignore gesture velocity handoff. This Skill turns a motion request into an implementation that survives review on a real device, deciding first whether something should animate at all. ## Core Features & Use Cases - Decision-first build sequence: Gates every animation by frequency and purpose, then picks the cheapest tool — CSS transitions, layout animations, shared values, native stack transitions, or formSheet. - UI-thread correctness: Enforces Reanimated worklets, shared values with .get()/.set(), scheduleOnRN instead of deprecated runOnJS, and bans setState in gesture or scroll handlers. - Ready-to-build recipes: Press feedback, drag-to-dismiss bottom sheets, swipe-to-delete rows, collapsing headers, list entrances, keyboard-synced UI, tab indicators, screen transitions, and toasts. - Use Case: You need a bottom sheet the user can drag to dismiss. The Skill provides the full gesture implementation with momentum projection, rubber-banding, velocity-aware springs, and a haptic on snap-back. ## Quick Start Use the animate-expo skill to build a draggable bottom sheet with spring dismissal and haptic feedback in my Expo app.