expo-animation
Provides guidance on animations in Expo. Helps create interesting visual effects in your app. Useful for making the app more beautiful and interactive.
What it does
This tool helps create smooth and responsive animations for mobile apps, ensuring they perform well on various devices.
When to use it
- ✓When you want an element to move smoothly when touched.
- ✓When creating transitions between screens or elements.
- ✓To add visual effects that enhance the user experience.
Example of what to ask your AI
“Create a fade-in animation for a button when it appears on the screen.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
It uses specific tools (like Reanimated) that run on the correct 'thread' of the phone so animations don't lag. The focus is on making the animation happen without interfering with the rest of the app.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill expo-animationOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/expo-animation/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
When to Use
- Use when this upstream workflow matches the user's stated goal.
- Use when the task requires the procedures documented in this skill.
Building Animations in Expo
This skill was created in collaboration with Emil Kowalski and can also be found in the emilkowalski/skills repository, along with other useful animation skills.
A construction skill for React Native. It turns a request for motion into an implementation that survives a strict review on a real device — not in the simulator, not on a flagship phone in dev mode.
Mobile changes three things about animation, and everything in this skill follows from them:
- There is no hover. Every affordance the web puts in hover has to live in press, position, or nothing.
- There are two runtimes. Worklets (Reanimated 4) makes this explicit: the React Native runtime, where React renders and your app logic runs, and the UI runtime, where worklets run every frame (plus optional worker runtimes for background work). An animation that touches the RN runtime stutters the moment the app does anything else. The whole craft is keeping motion on the UI runtime.
- The user's finger is on the element. Gestures are the primary input, so interruptibility and velocity handoff aren't polish — they're the baseline.
Operating Posture
You are a senior mobile engineer building the animation yourself. Make the call, state the reasoning in one line, write the code. Never present motion options as a menu.
Two failure modes, and the first is worse:
- Animating something that shouldn't animate. The gate below exists to produce zero lines of code sometimes.
- Animating the right thing on the wrong thread — a
setStateper frame, aPanResponder, an animatedheight. It looks fine in dev on your phone and drops to 20fps on a three-year-old Android.
Hard Rules
- Run the sequence in order. Steps 1 and 2 gate everything.
- Reanimated, not core
Animated. CoreAnimatedcan't be driven by a gesture without crossing the bridge, anduseNativeDriverrefuses anything but transform and opacity anyway. Reanimated worklets run on the UI thread and keep running while JS is busy. - No approximated values. Curves and spring configs come from the tables below.
- Reduced motion ships with the animation, not as a follow-up.
- Feel is judged on a release build on the slowest device you support. Nothing else counts as verified.
The Build Sequence
1. Should this animate at all?
| Frequency | Decision |
|---|---|
| 100+ times/day — tab switches, keyboard open/close, scrolling, toggles in settings | No animation. Platform default or nothing. Stop here. |
| Tens of times/day — press feedback, list navigation, row selection | Near-imperceptible only: under 150ms, or nothing |
| Occasional — sheets, modals, toasts, onboarding steps | Standard animation |
| Rare / first-time — success states, empty-state illustrations, celebration | The delight budget lives here |
Tab switches never slide. Tabs are peers, not a hierarchy — sliding implies depth that isn't there, and the user pays for it dozens of times a session. animation: 'none'.
If the request fails this gate, say so and don't write it.
2. What is the purpose?
Name it in one word before continuing: feedback, spatial consistency, state indication, preventing a jarring change, explanation, or delight (rare tier only).
Can't name it? Don't build it.
3. Pick the tool — cheapest that works
Walk down; stop at the first that fits.
| Need | Tool |
|---|---|
| A state-driven change with no gesture — press, toggle, color, a value flipping | Reanimated CSS transition (transitionProperty in the style) |
| Loop, multi-stage, or plays on mount with no state change | Reanimated CSS animation (animationName keyframes) |
| An element mounting or unmounting, or a list reflowing | Layout animations (entering / exiting / itemLayoutAnimation) |
| Anything a finger touches, or anything derived from scroll | useSharedValue + Gesture + useAnimatedStyle |
| Screen to screen | Native stack options in Expo Router. Never hand-roll this |
| A bottom sheet that is its own screen | presentation: 'formSheet' — it's a real UISheetPresentationController, free and correct |
…
FAQ
Why not use animations for everything?
Unnecessary animations can slow down the app. This tool helps decide if an animation is truly useful or if it's better to have none.
What are 'worklets'?
They are small pieces of code that run directly on the 'UI thread' (the thread handling the interface), allowing for very fast and smooth animations.
Why focus on slower devices?
To ensure the animation works well for all users, even those with older or less powerful phones.
Details
Original description by the author
Curated upstream guidance for Expo Animation; use when the workflow matches the user goal.
Popularity
- GitHub stars
- 48k
- Ranking position
- #2954
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
dashboard-builder
Helps your agent create useful monitoring dashboards. It turns data into charts that answer important system questions.
affaan-m/ECC
dev-team
Simulates a collaborative development team where different roles respond to a problem together. It's useful for getting multiple perspectives without manually switching agents.
affaan-m/ECC
ecc-council
Has your agent convene a four-voice council for difficult decisions. It's useful when there are multiple good options and debate is needed before choosing.
affaan-m/ECC