
React Native Ease Refactor
Systematically discover Reanimated and Animated API usage in a React Native repo and migrate those call sites to react-native-ease EaseView components.
Overview
react-native-ease-refactor is an agent skill for the Build phase that scans a React Native codebase and migrates Reanimated and Animated usage to EaseView in six mandatory phases.
Install
npx skills add https://github.com/appandflow/react-native-ease --skill react-native-ease-refactorWhat is this skill?
- Six ordered phases—do not skip or reorder—starting with Discovery via structured Grep scans
- Detects NativeWind usage and Reanimated major version for correct default value mapping
- Finds imports from react-native-reanimated and React Native Animated API patterns project-wide
- Migration assistant converts animation code to react-native-ease EaseView components
- User-invocable skill meant to run as an explicit refactor command in the agent
- 6 migration phases that must not be skipped or reordered
Adoption & trust: 609 installs on skills.sh; 888 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your React Native app still depends on Reanimated or the old Animated API and you need a complete, ordered migration to EaseView without missing files or wrong default props across v3 and v4.
Who is it for?
RN maintainers doing a deliberate animation-stack migration with an agent that can search the repo and edit many screens consistently.
Skip if: New greenfield apps with no legacy animation code, or web-only React projects without react-native-ease.
When should I use this skill?
User-invocable when scanning the project for Animated/Reanimated code and migrating to EaseView; follow all six phases in order.
What do I get? / Deliverables
You get a grep-driven inventory and phased code rewrites toward EaseView, with NativeWind and Reanimated version flags applied before prop mapping.
- Discovery report of animation files and Reanimated/NativeWind flags
- Migrated EaseView component code across identified screens
- Version-aware default mappings applied for Reanimated v3 vs v4
Recommended Skills
Journey fit
Migration is hands-on frontend implementation work during Build, before you ship a performance-validated mobile release. Frontend subphase covers UI animation components, imports, and prop mapping across TS/JS screens.
How it compares
Opinionated multi-phase migration workflow—not a one-shot codemod CLI or a design-system Figma plugin.
Common Questions / FAQ
Who is react-native-ease-refactor for?
Solo and small-team React Native developers on appandflow/react-native-ease who need agent-guided conversion from Reanimated or Animated to EaseView.
When should I use react-native-ease-refactor?
During Build frontend work when you are mid-migration to react-native-ease, after upgrading Reanimated major versions, or before Ship perf testing on animation-heavy screens.
Is react-native-ease-refactor safe to install?
It instructs broad filesystem grep and edits; review the Security Audits panel on this page, work on a git branch, and run your RN test build after each phase.
SKILL.md
READMESKILL.md - React Native Ease Refactor
# react-native-ease refactor You are a migration assistant that converts `react-native-reanimated` and React Native's built-in `Animated` API code to `react-native-ease` `EaseView` components. Follow these 6 phases exactly. Do not skip phases or reorder them. --- ## Phase 1: Discovery Scan the user's project for animation code: 1. Use Grep to detect if the project uses NativeWind: - Pattern: `from ['"]nativewind['"]` in `**/*.{ts,tsx,js,jsx}` - Also check `package.json` for `"nativewind"` in dependencies - If NativeWind is detected, set a flag `usesNativeWind = true` for use in Phase 5 2. Detect the Reanimated version (needed for default value mapping in Phase 2): - Read `package.json` and check the `react-native-reanimated` version in `dependencies` or `devDependencies` - If the version is `^4` or `>=4.0.0`, set `reanimatedVersion = 4` - Otherwise set `reanimatedVersion = 3` (covers v2/v3 which share the same defaults) 3. Use Grep to find all files importing from `react-native-reanimated`: - Pattern: `from ['"]react-native-reanimated['"]` - Search in `**/*.{ts,tsx,js,jsx}` 4. Use Grep to find all files using React Native's built-in `Animated` API: - Pattern: `from ['"]react-native['"]` that also use `Animated` - Pattern: `Animated\.View|Animated\.Text|Animated\.Image|Animated\.Value|Animated\.timing|Animated\.spring` 3. Use Grep to find files already using `react-native-ease` (to avoid re-migrating): - Pattern: `from ['"]react-native-ease['"]` 4. Read each file that contains animation code. Build a list of components with their animation patterns. **Exclude** from scanning: - `node_modules/` - `*.test.*` and `*.spec.*` files - Build output directories (`lib/`, `build/`, `dist/`) --- ## Phase 2: Classification For each component found, classify as **migratable** or **not migratable**. ### Decision Tree Apply these checks in order. The first match determines the result: 1. **Uses gesture APIs?** (`Gesture.Pan`, `Gesture.Pinch`, `Gesture.Rotation`, `useAnimatedGestureHandler`) → NOT migratable — "Gesture-driven animation" 2. **Uses scroll handler?** (`useAnimatedScrollHandler`, `onScroll` with `Animated.event`) → NOT migratable — "Scroll-driven animation" 3. **Uses shared element transitions?** (`sharedTransitionTag`) → NOT migratable — "Shared element transition" 4. **Uses `runOnUI` or worklet directives?** → NOT migratable — "Requires worklet runtime" 5. **Uses `withSequence`?** → NOT migratable — "Animation sequencing not supported" 5b. **Uses `withDelay` wrapping a single animation (`withTiming`/`withSpring`)?** → MIGRATABLE — map to `delay` on the transition 5c. **Uses `withDelay` wrapping `withSequence` or nested `withDelay`?** → NOT migratable — "Complex delay/sequencing not supported" 6. **Uses complex `interpolate()`?** (more than 2 input/output values) → NOT migratable — "Complex interpolation" 7. **Uses `layout={...}` prop?** → NOT migratable — "Layout animation" 8. **Animates unsupported properties?** (anything besides: opacity, translateX, translateY, scale, scaleX, scaleY, rotate, rotateX, rotateY, borderRadius, backgroundColor, borderWidth, borderColor, shadowOpacity, shadowRadius, shadowColor, shadowOffset, elevation) → NOT migratable — "Animates unsupported property: `<prop>`" 9. **Uses different transition configs per property?** (e.g., opacity uses 200ms timing, scale uses spring) → MIGRATABLE — map to `TransitionMap` with category keys (`transform`, `opacity`, `borderRadius`, `backgroundColor`, `border`, `shadow`, `default`) 10. **Not driven by state?** (animation triggered by gesture/scroll value, not React state) → NOT migratable — "Not state-driven" 11. **Otherwise** → MIGRATABLE ### Migratable Pattern Mapping Use this table to convert Reanimated/Animated patterns to EaseView: | Reanimated / Animated Pattern