Agent skill

React Native

by jezweb in jezweb/claude-skills

React Native and Expo patterns for building performant mobile apps.

MITAuto-check: notesMobile

Install React Native

skills CLI
$ npx skills add jezweb/claude-skills --skill react-native -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jezweb/claude-skills react-native --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jezweb/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/frontend/skills/react-native .claude/skills/react-native && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
react-native
GitHub stars
1.1k
Token cost
~2.4k tokens
SKILL.md length
843 words
Files
1
Skills in repo
52
Repo updated
First seen
Licence
MIT

At a glance

React Native and Expo patterns for building performant mobile apps.

  • Works in 8 steps: List Performance (CRITICAL) → Animations (HIGH) → Navigation (HIGH) → …
  • Reviewing React Native code
  • SKILL.md covers When to Apply, 1. List Performance (CRITICAL), 2. Animations (HIGH) and 3. Navigation (HIGH), plus 6 more sections
  • Calls npx and eas

What it does

React Native is an agent skill from jezweb/claude-skills. React Native and Expo patterns for building performant mobile apps. Covers list performance, animations with Reanimated, navigation, UI patterns, state management, platform-specific code, and Expo workflows. Use when building or reviewing React Native code. Triggers: 'react native', 'expo', 'mobile app', 'react native performance', 'flatlist', 'reanimated', 'expo router', 'mobile development', 'ios app', 'android app'.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: claude-code-only

It sits in Mobile, covering Cross-platform mobile apps. It works with React Native, Expo, Android and iOS. The repository describes itself as: Skills for Claude Code CLI such as full stack dev Cloudflare, React, Tailwind v4, and AI integrations. The licence is MIT.

When your agent uses it

  • Reviewing React Native code
  • Tasks that involve Cross-platform mobile apps

Example prompts

  • “react native”
  • “mobile app”
  • “react native performance”
  • “/react-native”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): claude-code-only
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Bash

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. List Performance (CRITICAL)
  2. Animations (HIGH)
  3. Navigation (HIGH)
  4. UI Patterns (HIGH)
  5. Images and Media (MEDIUM)
  6. State and Data (MEDIUM)
  7. Expo Workflow (MEDIUM)
  8. Testing (LOW-MEDIUM)

What it can do on your machine

Read from SKILL.md and the folder at commit 64965d9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • eas

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    claude-code-only

    From compatibility in the SKILL.md frontmatter.

Context cost

React Native loads about 2.4k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 843 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~109
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Glob, Grep, Bash

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jezweb/claude-skills at commit 64965d9, republished under its MIT licence (© jezweb). 843 words, ~2,360 tokens.

Download SKILL.mdSave it as .claude/skills/react-native/SKILL.md (or your agent's skills folder).
name
react-native
description
React Native and Expo patterns for building performant mobile apps. Covers list performance, animations with Reanimated, navigation, UI patterns, state management, platform-specific code, and Expo workflows. Use when building or reviewing React Native code. Triggers: 'react native', 'expo', 'mobile app', 'react native performance', 'flatlist', 'reanimated', 'expo router', 'mobile development', 'ios app', 'android app'.
allowed-tools
Read, Write, Edit, Glob, Grep, Bash
compatibility
claude-code-only

React Native Patterns

Performance and architecture patterns for React Native + Expo apps. Rules ranked by impact — fix CRITICAL before touching MEDIUM.

This is a starting point. The skill will grow as you build more mobile apps.

When to Apply

  • Building new React Native or Expo apps
  • Optimising list and scroll performance
  • Implementing animations
  • Reviewing mobile code for performance issues
  • Setting up a new Expo project

1. List Performance (CRITICAL)

Lists are the #1 performance issue in React Native. A janky scroll kills the entire app experience.

PatternProblemFix
ScrollView for data<ScrollView> renders all items at onceUse <FlatList> or <FlashList> — virtualised, only renders visible items
Missing keyExtractorFlatList without keyExtractor → unnecessary re-renderskeyExtractor={(item) => item.id} — stable unique key per item
Complex renderItemExpensive component in renderItem re-renders on every scrollWrap in React.memo, extract to separate component
Inline functions in renderItemrenderItem={({ item }) => <Row onPress={() => nav(item.id)} />}Extract handler: const handlePress = useCallback(...)
No getItemLayoutFlatList measures every item on scroll (expensive)Provide getItemLayout for fixed-height items: (data, index) => ({ length: 80, offset: 80 * index, index })
FlashListFlatList is good, FlashList is better for large lists@shopify/flash-list — drop-in replacement, recycling architecture
Large images in listsFull-res images decoded on main threadUse expo-image with placeholder + transition, specify dimensions
FlatList Checklist

Every FlatList should have:

tsx
<FlatList
  data={items}
  keyExtractor={(item) => item.id}
  renderItem={renderItem}           // Memoised component
  getItemLayout={getItemLayout}     // If items are fixed height
  initialNumToRender={10}           // Don't render 100 items on mount
  maxToRenderPerBatch={10}          // Batch size for off-screen rendering
  windowSize={5}                    // How many screens to keep in memory
  removeClippedSubviews={true}      // Unmount off-screen items (Android)
/>

2. Animations (HIGH)

Native animations run on the UI thread. JS animations block the JS thread and cause jank.

PatternProblemFix
Animated API for complex animationsAnimated runs on JS thread, blocks interactionsUse react-native-reanimated — runs on UI thread
Layout animationItem appears/disappears with no transitionLayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut)
Shared element transitionsNavigate between screens, element teleportsreact-native-reanimated shared transitions or expo-router shared elements
Gesture + animationDrag/swipe feels laggyreact-native-gesture-handler + reanimated worklets — all on UI thread
Measuring layoutonLayout fires too late, causes flashUse useAnimatedStyle with shared values for instant response
Reanimated Basics
tsx
import Animated, { useSharedValue, useAnimatedStyle, withSpring } from 'react-native-reanimated';

function AnimatedBox() {
  const offset = useSharedValue(0);
  const style = useAnimatedStyle(() => ({
    transform: [{ translateX: withSpring(offset.value) }],
  }));

  return (
    <GestureDetector gesture={panGesture}>
      <Animated.View style={[styles.box, style]} />
    </GestureDetector>
  );
}

3. Navigation (HIGH)

PatternProblemFix
Expo RouterFile-based routing (like Next.js) for React Nativeapp/ directory with _layout.tsx files. Preferred for new Expo projects.
Heavy screens on stackEvery screen stays mounted in the stackUse unmountOnBlur: true for screens that don't need to persist
Deep linkingApp doesn't respond to URLsExpo Router handles this automatically. For bare RN: Linking API config
Tab badge updatesBadge count doesn't update when tab is focusedUse useIsFocused() or refetch on focus: useFocusEffect(useCallback(...))
Navigation state persistenceApp loses position on background/killonStateChange + initialState with AsyncStorage
Expo Router Structure
app/
├── _layout.tsx          # Root layout (tab navigator)
├── index.tsx            # Home tab
├── (tabs)/
│   ├── _layout.tsx      # Tab bar config
│   ├── home.tsx
│   ├── search.tsx
│   └── profile.tsx
├── [id].tsx             # Dynamic route
└── modal.tsx            # Modal route

4. UI Patterns (HIGH)

PatternProblemFix
Safe areaContent under notch or home indicator<SafeAreaView> or useSafeAreaInsets() from react-native-safe-area-context
Keyboard avoidanceForm fields hidden behind keyboard<KeyboardAvoidingView behavior={Platform.OS === 'ios' ? 'padding' : 'height'}>
Platform-specific codeiOS and Android need different behaviourPlatform.select({ ios: ..., android: ... }) or .ios.tsx / .android.tsx files
Status barStatus bar overlaps content or wrong colour<StatusBar style="auto" /> from expo-status-bar in root layout
Touch targetsButtons too small to tapMinimum 44x44pt. Use hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}
Haptic feedbackTaps feel deadexpo-haptics — Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light) on important actions
Show full SKILL.md (349 more words)Show less

5. Images and Media (MEDIUM)

PatternProblemFix
Image component<Image> from react-native is basicUse expo-image — caching, placeholder, transition, blurhash
Remote images without dimensionsLayout shift when image loadsAlways specify width and height, or use aspectRatio
Large imagesOOM crashes on AndroidResize server-side or use expo-image which handles memory
SVGSVG support isn't nativereact-native-svg + react-native-svg-transformer for SVG imports
VideoVideo playbackexpo-av or expo-video (newer API)

6. State and Data (MEDIUM)

PatternProblemFix
AsyncStorage for complex dataJSON parse/stringify on every readUse MMKV (react-native-mmkv) — 30x faster than AsyncStorage
Global stateRedux/MobX boilerplate for simple stateZustand — minimal, works great with React Native
Server stateManual fetch + loading + error + cacheTanStack Query — same as web, works in React Native
Offline firstApp unusable without networkTanStack Query persistQueryClient + MMKV, or WatermelonDB for complex offline
Deep state updatesSpread operator hell for nested objectsImmer via Zustand: set(produce(state => { state.user.name = 'new' }))

7. Expo Workflow (MEDIUM)

PatternWhenHow
Development buildNeed native modulesnpx expo run:ios or eas build --profile development
Expo GoQuick prototyping, no native modulesnpx expo start — scan QR code
EAS BuildCI/CD, app store buildseas build --platform ios --profile production
EAS UpdateHot fix without app store revieweas update --branch production --message "Fix bug"
Config pluginsModify native config without ejectingapp.config.ts with expo-build-properties or custom config plugin
Environment variablesDifferent configs per buildeas.json build profiles + expo-constants
New Project Setup
bash
npx create-expo-app my-app --template tabs
cd my-app
npx expo install expo-image react-native-reanimated react-native-gesture-handler react-native-safe-area-context

8. Testing (LOW-MEDIUM)

ToolForSetup
JestUnit tests, hook testsIncluded with Expo by default
React Native Testing LibraryComponent tests@testing-library/react-native
DetoxE2E tests on real devices/simulatorsdetox — Wix's testing framework
MaestroE2E with YAML flowsmaestro test flow.yaml — simpler than Detox

Common Gotchas

GotchaFix
Metro bundler cachenpx expo start --clear
Pod install issues (iOS)cd ios && pod install --repo-update
Reanimated not workingMust be first import: import 'react-native-reanimated' in root
Expo SDK upgradenpx expo install --fix after updating SDK version
Android build failsCheck gradle.properties for memory: org.gradle.jvmargs=-Xmx4g
iOS simulator slowUse physical device for performance testing — simulator doesn't reflect real perf

© jezweb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/frontend/skills/react-native of jezweb/claude-skills.

Open the folder on GitHubat commit 64965d9

Compare with similar skills

React Native next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

React Native compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
React Native this skilljezweb/claude-skills1.1k—~2.4kAutomated safety check: NotesMIT
Expo Tailwind SetupCherryHQ/cherry-studio-app4k8 repos~3kAutomated safety check: PassMIT
Screenmapaleqsio/screenmap242—~7.2kAutomated safety check: PassMIT
Expo Brownfield Integrationmweinbach/agent-coworker1562 repos~900Automated safety check: NotesCustom licence
Expo UIarcboxlabs/linkcode156—~1.2kAutomated safety check: PassMIT
Simfleetentropyconquers/simfleet117—~1.5kAutomated safety check: PassMIT

Similar skills

  • Expo Tailwind Setup

    CherryHQ/cherry-studio-app

    Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling

    4k GitHub starsUsed in 8 repos~3k tokens
    MobileAuto-check passed
  • Screenmap

    aleqsio/screenmap

    Generate a visual navigation map of an Expo / React Native or NativeScript app.

    242 GitHub stars~7.2k tokensUpdated 3 days ago
    MobileAuto-check passed
  • Expo Brownfield Integration

    mweinbach/agent-coworker

    Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.

    156 GitHub starsUsed in 2 repos~900 tokens
    MobileAuto-check: notes
  • Expo UI

    arcboxlabs/linkcode

    Framework (OSS). An agent skill from arcboxlabs/linkcode.

    156 GitHub stars~1.2k tokensUpdated 10 days ago
    MobileAuto-check passed
  • Simfleet

    entropyconquers/simfleet

    Operate a simfleet device fleet: slimmed iOS simulators and Android emulators, parallel React Native worktree lanes with leased Metro ports, the native build cache, and per-agent device claims.

    117 GitHub stars~1.5k tokensUpdated 9 days ago
    MobileAuto-check passed
  • Code Review React Native

    talsec/Free-RASP-ReactNative

    Performs strict code reviews on React Native plugin projects covering TypeScript, the Kotlin (Android) and Swift (iOS) native bridges, and the Expo config plugin.

    175 GitHub stars~3.7k tokensUpdated 2 days ago
    MobileAuto-check passed

More from jezweb/claude-skills

All 52 skills in this repo
  • Elevenlabs Agents

    jezweb/claude-skills

    Build conversational AI voice agents on the ElevenLabs platform.

    1.1k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • Favicon Gen

    jezweb/claude-skills

    Generate custom favicons from logos, text, or brand colours.

    1.1k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Tailwind Theme Builder

    jezweb/claude-skills

    Set up Tailwind v4 + shadcn/ui themed UI with dark mode. An agent skill from jezweb/claude-skills.

    1.1k GitHub starsUsed in 1 repo~3.2k tokens
    Auto-check passed
  • Project Health

    jezweb/claude-skills

    All-in-one project configuration and health management. An agent skill from jezweb/claude-skills.

    1.1k GitHub starsUsed in 1 repo~3k tokens
    Auto-check passed
  • Responsiveness Check

    jezweb/claude-skills

    Test website responsiveness across viewport widths using browser automation.

    1.1k GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • MCP Builder

    jezweb/claude-skills

    Build MCP servers in Python with FastMCP. An agent skill from jezweb/claude-skills.

    1.1k GitHub stars~3.1k tokensUpdated 2 days ago
    Auto-check: notes

Categories

Questions about React Native

What does React Native do?

React Native and Expo patterns for building performant mobile apps. React Native is an agent skill from jezweb/claude-skills. React Native and Expo patterns for building performant mobile apps.

When should I use React Native?

React Native fits situations like: reviewing React Native code; tasks that involve Cross-platform mobile apps.

How do I install React Native in Claude Code?

Run `npx skills add jezweb/claude-skills --skill react-native -a claude-code`. Or copy the skill folder (plugins/frontend/skills/react-native in jezweb/claude-skills) into .claude/skills/react-native in your project. Claude Code loads it when a task matches its description.

How do I install React Native in Codex?

Run `npx skills add jezweb/claude-skills --skill react-native -a codex`. Or copy the skill folder (plugins/frontend/skills/react-native in jezweb/claude-skills) into .agents/skills/react-native in your project. Codex loads it when a task matches its description.

Can I use React Native in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jezweb/claude-skills --skill react-native -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/react-native, .gemini/skills/react-native, .github/skills/react-native and .opencode/skills/react-native in your project.

What does React Native need to run?

Going by SKILL.md and its folder, React Native needs the command-line tools its instructions call (npx and eas). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash. Compatibility (from SKILL.md): claude-code-only.

Does React Native access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is React Native safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does React Native use?

React Native is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does React Native use?

About 2.4k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to React Native?

Skills that share tags, products or a category with React Native: Expo Tailwind Setup (CherryHQ/cherry-studio-app, 4k stars), Screenmap (aleqsio/screenmap, 242 stars), Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars) and Expo UI (arcboxlabs/linkcode, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains React Native?

jezweb (a GitHub user) maintains it in jezweb/claude-skills, which has 1,051 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 5, 2026.

Source: jezweb/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.