react-native-dev — Claude Code skill: what it does, how to install
A React Native and Expo reference set for your agent: routing, lists, animation, state, tests and shipping. Useful when you are building a mobile app and don't want to re-explain the basics.
npx skills add MiniMax-AI/skills --skill react-native-dev -a claude-codeWhat react-native-dev does
The skill is a folder of reference files: Expo Router navigation, components, styling, Reanimated 3 animations, state management, forms, networking, performance, testing, native capabilities, and project engineering. Each one covers patterns and pitfalls rather than theory. Short tables sit on top: which component to reach for, what to fix first when frames drop, how to scaffold a fresh app.
Because the agent reads the matching file before writing code, it stops guessing. The preference table says FlashList over FlatList, expo-image over <Image>, Reanimated over the Animated API. There are checklists for a new project and for release: path aliases in tsconfig.json, contentInsetAdjustmentBehavior="automatic" on scroll views, R8 on Android, tests on the paths that matter.
The skill suggests starting with npx expo start in Expo Go. A custom eas build is only needed once the project pulls in local Expo modules or third-party native modules that Expo Go doesn't ship. So early on you can skip it. It also points elsewhere for Flutter (flutter-dev) and native iOS (ios-application-dev).
What it helps with
- swap
FlatListforFlashListon a long scrolling feed - set up Expo Router tabs, sheets and modals
- build a validated multi-step form with React Hook Form and Zod
- track down dropped frames and memory leaks
- ship to the App Store and Play Store through EAS
Example prompts for the agent
- Use the react-native-dev skill to rebuild this product list on FlashList instead of FlatList
- Review my `app/_layout.tsx` against the navigation reference in react-native-dev
- Walk the pre-release checklist from react-native-dev and tell me what's still missing
How to install react-native-dev
1Skills CLI (Vercel)
npx skills add MiniMax-AI/skills --skill react-native-dev -a claude-code2Manually: put the files in place
~/.claude/skills/react-native-dev/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/react-native-dev/
1Skills CLI (Vercel)
npx skills add MiniMax-AI/skills --skill react-native-dev -a codex2Manually: put the files in place
.agents/skills/react-native-dev/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add MiniMax-AI/skills --skill react-native-dev -a cursor2Manually: put the files in place
.cursor/skills/react-native-dev/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install MiniMax-AI/skills react-native-dev2Manually: put the files in place
.github/skills/react-native-dev/SKILL.md1Skills CLI (Vercel)
npx skills add MiniMax-AI/skills --skill react-native-dev -a gemini-cli2Platform CLI
gemini skills install https://github.com/MiniMax-AI/skills --path skills/react-native-devManually: put the files in place
.devin/skills/react-native-dev/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add MiniMax-AI/skills --skill react-native-dev -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set17
The whole set →Similar
Questions about react-native-dev
How do I install react-native-dev in Claude Code?
Run npx skills add MiniMax-AI/skills --skill react-native-dev -a claude-code. The skill then lives at ~/.claude/skills/react-native-dev/SKILL.md.
What does react-native-dev do?
It hands the agent ready patterns for React Native and Expo work: routing, lists, data fetching, tests, builds. The agent consults them before writing code in those areas.
Does it cover Flutter or native iOS?
No, it targets React Native and Expo. Flutter is covered by flutter-dev and native iOS by ios-application-dev.
Source text
SKILL.md · MIT
---
name: react-native-dev
description: |
React Native and Expo development guide covering components, styling, animations, navigation,
state management, forms, networking, performance optimization, testing, native capabilities,
and engineering (project structure, deployment, SDK upgrades, CI/CD).
Use when: building React Native or Expo apps, implementing animations or native UI, managing
state, fetching data, writing tests, optimizing performance, deploying to App Store/Play Store,
setting up CI/CD, upgrading Expo SDK, or configuring Tailwind/NativeWind.
license: MIT
metadata:
version: "1.0.0"
category: mobile
sources:
- expo/skills by Expo (https://github.com/expo/skills) — Native UI, navigation, and animation patterns
- Expo documentation (docs.expo.dev)
- React Native documentation (reactnative.dev)
- EAS (Expo Application Services) documentation
---
# React Native & Expo Development Guide
A practical guide for building production-ready React Native and Expo applications. Covers UI, animations, state, testing, performance, and deployment.
## References
Consult these resources as needed:
- [references/navigation.md](references/navigation.md) — Expo Router: Stack, Tabs, NativeTabs (`headerLargeTitle`, `headerBackButtonDisplayMode`), links, modals, sheets, context menus
- [references/components.md](references/components.md) — FlashList patterns, `expo-image`, safe areas (`contentInsetAdjustmentBehavior`), native controls, blur/glass effects, storage
- [references/styling.md](references/styling.md) — StyleSheet, NativeWind/Tailwind, platform styles, theming, dark mode
- [references/animations.md](references/animations.md) — Reanimated 3: entering/exiting, shared values, gestures, scroll-driven
- [references/state-management.md](references/state-management.md) — Zustand (selectors, persist), Jotai (atoms, derived), React Query, Context
- [references/forms.md](references/forms.md) — React Hook Form + Zod: validation, multi-step, dynamic arrays
- [references/networking.md](references/networking.md) — fetch wrapper, React Query (optimistic updates), auth tokens, offline, API routes, webhooks
- [references/performance.md](references/performance.md) — Profiling workflow, FlashList + `memo`, bundle analysis, TTI, memory leaks, animation perf
- [references/testing.md](references/testing.md) — Jest, React Native Testing Library, E2E with Maestro
- [references/native-capabilities.md](references/native-capabilities.md) — Camera, location, permissions (`use*Permissions` hooks), haptics, notifications, biometrics
- [references/engineering.md](references/engineering.md) — Project layout (`components/ui/`, `stores/`, `services/`), path aliases, SDK upgrades, EAS build/submit, CI/CD, DOM components
## Quick Reference
### Component Preferences
| Purpose | Use | Instead of |
|---------|-----|------------|
| Lists | `FlashList` (`@shopify/flash-list`) + `memo` items | `FlatList` (no view recycling) |
| Images | `expo-image` | RN `<Image>` (no cache, no WebP) |
| Press | `Pressable` | `TouchableOpacity` (legacy) |
| Audio | `expo-audio` | `expo-av` (deprecated) |
| Video | `expo-video` | `expo-av` (deprecated) |
| Animations | Reanimated 3 | RN Animated API (limited) |
| Gestures | Gesture Handler | PanResponder (legacy) |
| Platform check | `process.env.EXPO_OS` | `Platform.OS` |
| Context | `React.use()` | `React.useContext()` (React 18) |
| Safe area scroll | `contentInsetAdjustmentBehavior="automatic"` | `<SafeAreaView>` |
| SF Symbols | `expo-image` with `source="sf:name"` | `expo-symbols` |
### Scaling Up
| Situation | Consider |
|-----------|----------|
| Long lists with scroll jank | Virtualized list libraries (e.g. FlashList) |
| Want Tailwind-style classes | NativeWind v4 |
| High-frequency storage reads | Sync-based storage (e.g. MMKV) |
| New project with Expo | Expo Router over bare React Navigation |
### State Management
| State Type | Solution |
|------------|----------|
| Local UI state | `useState` / `useReducer` |
| Shared app state | Zustand or Jotai |
| Server / async data | React Query |
| Form state | React Hook Form + Zod |
### Performance Priorities
| Priority | Issue | Fix |
|----------|-------|-----|
| CRITICAL | Long list jank | `FlashList` + memoized items |
| CRITICAL | Large bundle | Avoid barrel imports, enable R8 |
| HIGH | Too many re-renders | Zustand selectors, React Compiler |
| HIGH | Slow startup | Disable bundle compression, native nav |
| MEDIUM | Animation drops | Only animate `transform`/`opacity` |
## New Project Init
```bash
# 1. Create project
npx create-expo-app@latest my-app --template blank-typescript
cd my-app
# 2. Install Expo Router + core deps
npx expo install expo-router react-native-safe-area-context react-native-screens
# 3. (Optional) Common extras
npx expo install expo-image react-native-reanimated react-native-gesture-handler
```
Then configure:
1. Set entry point in `package.json`: `"main": "expo-router/entry"`
2. Add scheme in `app.json`: `"scheme": "my-app"`
3. Delete `App.tsx` and `index.ts`
4. Create `app/_layout.tsx` as root Stack layout
5. Create `app/(tabs)/_layout.tsx` for tab navigation
6. Create route files in `app/(tabs)/` (see [navigation.md](references/navigation.md))
For web support, also install: `npx expo install react-native-web react-dom @expo/metro-runtime`
## Core Principles
**Consult references before writing**: when implementing navigation, lists, networking, or project setup, read the matching reference file above for patterns and pitfalls.
**Try Expo Go first** (`npx expo start`). Custom builds (`eas build`) only needed when using local Expo modules, Apple targets, or third-party native modules not in Expo Go.
**Conditional rendering**: use `{count > 0 && <Text />}` not `{count && <Text />}` (renders "0").
**Animation rule**: only animate `transform` and `opacity` — GPU-composited, no layout thrash.
**Imports**: always import directly from source, not barrel files — avoids bundle bloat.
**Lists and images**: before using `FlatList` or RN `Image`, check the Component Preferences table above — `FlashList` and `expo-image` are almost always the right choice.
**Route files**: always use kebab-case, never co-locate components/types/utils in `app/`.
## Checklist
### New Project Setup
- [ ] `tsconfig.json` path aliases configured
- [ ] `EXPO_PUBLIC_API_URL` env var set per environment
- [ ] Root layout has `GestureHandlerRootView` (if using gestures)
- [ ] `contentInsetAdjustmentBehavior="automatic"` on all scroll views
- [ ] `FlashList` instead of `FlatList` for lists > 20 items
### Before Shipping
- [ ] Profile in `--profile` mode, fix frames > 16ms
- [ ] Bundle analyzed (`source-map-explorer`), no barrel imports
- [ ] R8 enabled for Android
- [ ] Unit + component tests for critical paths
- [ ] E2E flows for login, core feature, checkout
---
Flutter development → see `flutter-dev` skill.
iOS native (UIKit/SwiftUI) → see `ios-application-dev` skill.
Android native (Kotlin/Compose) → see `android-native-dev` skill.
*React Native is a trademark of Meta Platforms, Inc. Expo is a trademark of 650 Industries, Inc. All other product names are trademarks of their respective owners.*
© MiniMax-AI · MIT · MiniMax-AI/skills