animate-expo

Implements React Native and Expo animations using Reanimated, Gesture Handler, and Expo Router.

1|Updated Aug 28, 2026
One-click install
npx skills add https://github.com/mooch10/mochiptos --skill animate-expo-mooch10
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: animate-expo
Source: https://github.com/mooch10/mochiptos/tree/main/frontend/.agents/animate-expo
Command: npx skills add https://github.com/mooch10/mochiptos --skill animate-expo-mooch10

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires react-native-reanimated, react-native-worklets, react-native-gesture-handler, expo-haptics, expo-router, react-native-keyboard-controller.

What problem does it solve? Building animations in React Native often results in janky motion that stutters on real devices, because developers animate on the wrong thread, pick wrong properties, or mishandle gesture velocity handoff. This Skill provides a decision sequence and ready-to-build recipes so animations feel right on a release build, not just in the simulator. ## Core Features & Use Cases - Decision framework for motion: Gates whether something should animate at all based on frequency, then selects the cheapest tool (CSS transitions, layout animations, shared values, native stack options) and the right spring or easing curve. - UI-thread animation patterns: Enforces Reanimated worklets, shared values with .get()/.set(), and scheduleOnRN usage so gestures and scroll-driven motion never block the JS thread. - Ready-to-build recipes: Includes implementations for 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: When asked to add a draggable bottom sheet to an Expo app, the Skill produces a gesture-driven implementation with momentum projection, rubber-banding, velocity-aware springs, and a haptic on snap — plus guidance on what to feel-check on a physical device. ## Quick Start Ask the assistant to build a drag-to-dismiss bottom sheet animation for your Expo screen using Reanimated and Gesture Handler.

Frequently Asked Questions about animate-expo

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a drag-to-dismiss bottom sheet in React Native?▼

Use a Gesture.Pan handler with a shared value for translateY, capturing the current position in onStart and projecting velocity in onEnd to decide dismissal. Hand the gesture velocity to a spring so the animation continues seamlessly after the finger releases.

How to animate on the UI thread with Reanimated in Expo?▼

Use shared values with useAnimatedStyle so updates run as worklets on the UI thread without React re-renders. Never call setState from gesture or scroll handlers, and use scheduleOnRN from react-native-worklets only in onEnd or threshold reactions.

Should I use Reanimated or the core Animated API for gestures?▼

Use Reanimated for anything a finger touches. Core Animated cannot be driven by a gesture without crossing the bridge, and useNativeDriver only supports transform and opacity, while Reanimated worklets keep running even when the JS thread is busy.

Why does my React Native animation stutter on Android devices?▼

Stutter usually comes from animating layout properties like height or width, calling setState per frame, or running motion on the JS thread. Animate transform and opacity with UI-thread worklets, and verify on a release build since dev builds hide these problems.

Does Expo Router support native sheet presentations?▼

Yes, setting presentation: 'formSheet' on a Stack.Screen gives a real native sheet with detents and grabber options. Android caps detents at three and shows no grabber, so design within those platform limits.

When should I not add an animation to a mobile UI?▼

Skip animation for actions happening over 100 times a day like tab switches, keyboard changes, and scrolling, where platform defaults are correct. Tab switches should never slide since tabs are peers, not a hierarchy.