Skip to content
Skillpedia
Misc48k · #2954

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/expo-animation/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/expo-animation/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
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-animation

Or 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.md
Technical 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:

  1. There is no hover. Every affordance the web puts in hover has to live in press, position, or nothing.
  2. 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.
  3. 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:

  1. Animating something that shouldn't animate. The gate below exists to produce zero lines of code sometimes.
  2. Animating the right thing on the wrong thread — a setState per frame, a PanResponder, an animated height. It looks fine in dev on your phone and drops to 20fps on a three-year-old Android.

Hard Rules

  1. Run the sequence in order. Steps 1 and 2 gate everything.
  2. Reanimated, not core Animated. Core Animated can't be driven by a gesture without crossing the bridge, and useNativeDriver refuses anything but transform and opacity anyway. Reanimated worklets run on the UI thread and keep running while JS is busy.
  3. No approximated values. Curves and spring configs come from the tables below.
  4. Reduced motion ships with the animation, not as a follow-up.
  5. 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.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#2954
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills