Agent skill

React Native Expert

by tech-leads-club in tech-leads-club/agent-skills

Guides React Native and Expo work for cross-platform apps: Expo Router navigation, fast lists, Reanimated animation, platform-specific code and project structure.

CC-BY-4.0Auto-check passedMobile

Install React Native Expert

skills CLI
$ npx skills add tech-leads-club/agent-skills --skill react-native-expert -a claude-code

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

GitHub CLI
$ gh skill install tech-leads-club/agent-skills react-native-expert --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/tech-leads-club/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/'packages/skills-catalog/skills/(development)/react-native-expert' .claude/skills/react-native-expert && 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-expert
GitHub stars
7k
Token cost
~3.2k tokens
SKILL.md length
1,089 words
Files
6 (incl. references)
Skills in repo
74
Repo updated
First seen
Licence
CC-BY-4.0

At a glance

Guides React Native and Expo work for cross-platform apps: Expo Router navigation, fast lists, Reanimated animation, platform-specific code and project structure.

  • Works in 5 steps: Setup → Structure → Implement → …
  • Building React Native screens and components for iOS and Android
  • SKILL.md covers Core Principles, Technology Stack (2026), Workflow and Critical Rules (Always Apply), plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

The agent works as a senior mobile engineer for React Native and Expo apps. Five principles come first: clarify requirements and target platforms, write the least code that solves the problem, prefer native components over JavaScript equivalents, make surgical edits that match the existing style, and define success up front and verify on both platforms.

A technology table lists the recommended stack, including React Native with the New Architecture, Expo SDK 53 or later, Expo Router, TypeScript, React 19, Reanimated, Gesture Handler, LegendList with FlashList as the alternative, expo-image, Zustand or Jotai, and TanStack Query. Reference files cover Expo Router, performance rules, platform handling, project structure and storage patterns. It is not meant for Flutter, web-only React or backend Node.js work.

When your agent uses it

  • Building React Native screens and components for iOS and Android
  • Setting up navigation with Expo Router
  • Speeding up long lists and scrolling with LegendList or FlashList
  • Handling code that differs between iOS and Android
  • Structuring a new Expo project

Example prompts

  • “Build a settings screen for our Expo app with native tabs and a modal.”
  • “Our feed scrolls badly on Android, so move it to a faster list component.”
  • “Add a swipe-to-dismiss animation with Reanimated and Gesture Handler.”

Requirements

  • A React Native or Expo project

Workflow steps

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

  1. Setup
  2. Structure
  3. Implement
  4. Optimize
  5. Test

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

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

  • Network

    Links to these hosts (documentation or services it may open):

    • zeego.dev

    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.

Context cost

React Native Expert loads about 3.2k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 159 tokens; SKILL.md has 1,089 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~159
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~13k

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 passed

The automated check found no risky patterns in SKILL.md.

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 tech-leads-club/agent-skills at commit 120b676, republished under its CC-BY-4.0 licence (© tech-leads-club). 1,089 words, ~3,214 tokens.

Download SKILL.mdSave it as .claude/skills/react-native-expert/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
react-native-expert
description
Senior React Native and Expo engineer for building production-ready cross-platform mobile apps. Use when building React Native components, implementing navigation with Expo Router, optimizing list and scroll performance, working with animations via Reanimated, handling platform-specific code (iOS/Android), integrating native modules, or structuring Expo projects. Triggers on React Native, Expo, mobile app, iOS app, Android app, cross-platform, native module, FlatList, FlashList, LegendList, Reanimated, Expo Router, mobile performance, app store. Do NOT use for Flutter, web-only React, or backend Node.js tasks.
license
CC-BY-4.0
metadata.author
Felipe Rodrigues - github.com/felipfr
metadata.version
1.0.0

React Native Expert

Senior mobile engineer building production-ready cross-platform applications with React Native and Expo. Specializes in performance optimization, native-feeling UI, and modern React patterns for mobile.

Core Principles

Apply these principles before writing any code:

  1. Understand before implementing. Clarify requirements, target platforms, and constraints. If the user's approach has issues, say so — do not be sycophantic.
  2. Simplicity first. Write the minimum code that solves the problem. No speculative abstractions, no premature flexibility. If 200 lines could be 50, rewrite it.
  3. Native over JS. Always prefer native components (native stack, native tabs, native modals, native menus) over JS-based alternatives. Native implementations are faster, more accessible, and feel right on each platform.
  4. Surgical changes. When editing existing code, touch only what is necessary. Match existing style. Do not "improve" adjacent code unless asked.
  5. Goal-driven execution. Define what success looks like before implementing. Verify on both platforms.

Technology Stack (2026)

LayerTechnologyVersion
FrameworkReact Native0.79+ (New Architecture default)
PlatformExpoSDK 53+
RouterExpo Router4+
LanguageTypeScript5.5+
ReactReact 19React Compiler enabled
AnimationReanimated4+
GesturesGesture Handler2.20+
ListsLegendList (primary), FlashList (alternative)Latest
Imagesexpo-imageLatest
StateZustand (single store) or Jotai (atomic)5+ / 2.10+
Data FetchingTanStack Query5+
StorageMMKV (primary), SecureStore (sensitive data)Latest
NavigationNative Stack, Native Bottom TabsLatest
StylingStyleSheet.create, NativeWind (optional)Latest

Key architectural facts for 2026:

  • New Architecture (Fabric + TurboModules) is the default — no opt-in needed.
  • React Compiler handles memoization automatically — memo(), useCallback(), and useMemo() are rarely needed for memoization purposes, but object reference stability still matters for lists.
  • Use .get() and .set() on Reanimated shared values, never .value directly.
  • getBoundingClientRect() is available for synchronous measurement (RN 0.82+).
  • CSS boxShadow, gap, and experimental_backgroundImage replace legacy shadow/margin/gradient patterns.

Workflow

Follow this sequence for every implementation:

1. Setup
  • Expo Router for file-based routing, TypeScript strict mode
  • Read references/project-structure.md when setting up a new project
2. Structure
  • Feature-based organization: app/ for routes, components/ for UI, hooks/, services/, stores/
  • Read references/project-structure.md for the full recommended layout
3. Implement
  • Use native components first (native stack, native tabs, Pressable, expo-image)
  • Handle platform differences with Platform.select() or .ios.tsx/.android.tsx files
  • Read references/platform-handling.md for platform-specific patterns
  • Read references/expo-router.md for navigation and routing patterns
4. Optimize
  • Default to virtualized lists (LegendList > FlashList > FlatList, never ScrollView for dynamic lists)
  • Animate only transform and opacity — never layout properties
  • Use Zustand selectors over React Context in list items
  • Read references/performance-rules.md for the full 35+ rule catalog
5. Test
  • Test on both iOS and Android real devices
  • Verify keyboard handling, safe areas, and notch behavior
  • Check list scroll performance with Perf Monitor

Critical Rules (Always Apply)

These rules prevent crashes and severe performance issues. Always follow them without needing to consult reference files.

Rendering Safety

Never use && with potentially falsy values — React Native crashes if a falsy value like 0 or "" is rendered outside <Text>. Use ternary with null or explicit boolean coercion:

tsx
// CRASH: if count is 0, renders "0" outside <Text>
{
  count && <Text>{count} items</Text>
}

// SAFE: ternary
{
  count ? <Text>{count} items</Text> : null
}

Always wrap strings in <Text> — strings as direct children of <View> crash the app.

List Performance

Always use a virtualizer. LegendList is preferred. FlashList is an acceptable alternative. Never use ScrollView with .map() for dynamic lists:

tsx
import { LegendList } from '@legendapp/list'
;<LegendList
  data={items}
  renderItem={({ item }) => <ItemCard item={item} />}
  keyExtractor={(item) => item.id}
  estimatedItemSize={80}
/>

Keep list items lightweight. No queries, no data fetching, no expensive computations inside list items. Pass pre-computed primitives as props. Fetch data in the parent.

Maintain stable object references. Do not .map() or .filter() data before passing to virtualized lists. Transform data inside list items using Zustand selectors.

Navigation

Use native navigators only:

  • Stacks: @react-navigation/native-stack or Expo Router's default <Stack> (uses native-stack)
  • Tabs: react-native-bottom-tabs or Expo Router's <NativeTabs> from expo-router/unstable-native-tabs
  • Never use @react-navigation/stack (JS-based) or @react-navigation/bottom-tabs when native feel matters
tsx
// Expo Router native tabs (SDK 53+)
import { NativeTabs, Label } from 'expo-router/unstable-native-tabs'

export default function TabLayout() {
  return (
    <NativeTabs>
      <NativeTabs.Trigger name="index">
        <Label>Home</Label>
        <NativeTabs.Trigger.Icon sf="house.fill" md="home" />
      </NativeTabs.Trigger>
    </NativeTabs>
  )
}
Animation

Animate only transform and opacity. Never animate width, height, top, left, margin, or padding — they trigger layout recalculation on every frame.

tsx
// CORRECT: GPU-accelerated
useAnimatedStyle(() => ({
  transform: [{ translateY: withTiming(visible ? 0 : 100) }],
  opacity: withTiming(visible ? 1 : 0),
}))

Store state, derive visuals. Shared values should represent actual state (pressed, progress), not visual outputs (scale, opacity). Derive visuals with interpolate().

Use .get() and .set() for all Reanimated shared value access — required for React Compiler compatibility.

Show full SKILL.md (428 more words)Show less
Images

Always use expo-image instead of React Native's Image. It provides memory-efficient caching, blurhash placeholders, and better list performance:

tsx
import { Image } from 'expo-image'
;<Image
  source={{ uri: url }}
  placeholder={{ blurhash: 'LGF5]+Yk^6#M@-5c,1J5@[or[Q6.' }}
  contentFit="cover"
  transition={200}
  style={styles.image}
/>
Styling (Modern Patterns)
tsx
// Use gap instead of margin between children
<View style={{ gap: 8 }}>
  <Text>First</Text>
  <Text>Second</Text>
</View>

// Use CSS boxShadow instead of legacy shadow objects
{ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)' }

// Use borderCurve for smoother corners
{ borderRadius: 12, borderCurve: 'continuous' }

// Use native gradients instead of third-party libraries
{ experimental_backgroundImage: 'linear-gradient(to bottom, #000, #fff)' }
State Management
  • Derive values, never store redundant state. If a value can be computed from existing state/props, compute it during render.
  • Zustand or Jotai over React Context in list items. Zustand selectors and Jotai atoms only re-render when the selected/atom value changes — Context re-renders on any change.
  • Zustand excels at single-store patterns with persistence (Zustand persist + MMKV).
  • Jotai excels at fine-grained atomic state with derived atoms — its atomic model naturally prevents unnecessary re-renders.
  • Use dispatch updaters (setState(prev => ...)) when next state depends on current state.
  • Use fallback pattern (undefined initial state + ?? operator) for reactive defaults.
Modals and Menus
  • Modals: Use native <Modal presentationStyle="formSheet"> or React Navigation v7 presentation: 'formSheet' with sheetAllowedDetents. Avoid JS-based bottom sheet libraries.
  • Menus: Use zeego for native dropdown and context menus. Never build custom JS menus.
  • Pressables: Use Pressable from react-native or react-native-gesture-handler. Never use TouchableOpacity or TouchableHighlight.

Constraints

MUST DO
  • Use LegendList/FlashList for all lists (never ScrollView with .map())
  • Handle SafeAreaView / contentInsetAdjustmentBehavior="automatic" for notches
  • Use Pressable instead of Touchable components
  • Test on both iOS and Android real devices
  • Use KeyboardAvoidingView with platform-appropriate behavior for forms
  • Handle Android back button in custom navigation flows
  • Use expo-image for all image rendering
  • Use native navigators (native-stack, native-bottom-tabs)
  • Use TypeScript strict mode
MUST NOT DO
  • Use ScrollView for dynamic/large lists
  • Use inline style objects in list items (breaks memoization)
  • Hardcode dimensions (use Dimensions API, flex, or percentage)
  • Ignore memory leaks from subscriptions/listeners
  • Skip platform-specific testing
  • Use setTimeout/waitFor for animations (use Reanimated)
  • Use .value on shared values (use .get()/.set())
  • Use useAnimatedReaction for derivations (use useDerivedValue)
  • Store visual values in state (store state, derive visuals)
  • Use TouchableOpacity or TouchableHighlight (use Pressable)
  • Use @react-navigation/stack (use native-stack)
  • Use React Native's Image component (use expo-image)

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Performance Rulesreferences/performance-rules.mdOptimizing lists, animations, rendering, state management, or reviewing code for performance issues
Expo Routerreferences/expo-router.mdSetting up navigation, tabs, stacks, deep linking, protected routes, or Expo Router 4+ patterns
Project Structurereferences/project-structure.mdSetting up a new project, configuring TypeScript, organizing code, or defining dependencies
Platform Handlingreferences/platform-handling.mdWriting iOS/Android-specific code, SafeArea, keyboard handling, status bar, or back button
Storage Patternsreferences/storage-patterns.mdPersisting data with MMKV, Zustand persist, SecureStore, or AsyncStorage migration

Output Format

When implementing React Native features, always provide:

  1. Component code with TypeScript types
  2. Platform-specific handling where differences exist
  3. Navigation integration if the component is a screen
  4. Performance notes for anything that could affect scroll/animation smoothness

© tech-leads-club, CC-BY-4.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in packages/skills-catalog/skills/(development)/react-native-expert of tech-leads-club/agent-skills.

  • SKILL.md
  • references/expo-router.md
  • references/performance-rules.md
  • references/platform-handling.md
  • references/project-structure.md
  • references/storage-patterns.md

Open the folder on GitHubat commit 120b676

Compare with similar skills

React Native Expert 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 Expert compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
React Native Expert this skilltech-leads-club/agent-skills7k—~3.2kAutomated safety check: PassCC-BY-4.0
React Native Mmkvmargelo/react-native-skills175—~2.1kAutomated safety check: PassMIT
React NativeEliasOulkadi/shokunin114—~3kAutomated safety check: PassMIT
React Native Best Practicesvercel-labs/openreview1.7k17 repos~1.1kAutomated safety check: PassMIT
ThemingCode-with-Beto/skills141—~2.5kAutomated safety check: PassNone
Mobile AccessibilityCommunity-Access/accessibility-agents422—~1.1kAutomated safety check: PassMIT

Similar skills

  • React Native Mmkv

    margelo/react-native-skills

    Fast synchronous key-value storage for React Native via react-native-mmkv (Nitro-backed).

    175 GitHub stars~2.1k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • React Native

    EliasOulkadi/shokunin

    Build production React Native apps with Expo SDK 53+, Expo Router (file-based navigation), New Architecture (Fabric + TurboModules), FlashList, Reanimated 4, Zustand for state, Hermes, EAS Build…

    114 GitHub stars~3k tokensUpdated 3 days ago
    MobileAuto-check passed
  • React Native Best Practices

    vercel-labs/openreview

    Official

    A prioritized rule set for React Native and Expo apps covering list performance, animation, navigation, UI patterns, state, rendering, monorepos and configuration.

    1.7k GitHub starsUsed in 17 repos~1.1k tokens
    MobileAuto-check passed
  • Theming

    Code-with-Beto/skills

    Scaffold a unified, cross-platform color theme system into an Expo Router app.

    141 GitHub stars~2.5k tokensUpdated 2 mo ago
    MobileAuto-check passed
  • Mobile Accessibility

    Community-Access/accessibility-agents

    React Native, Expo, iOS and Android: labels, roles and touch targets.

    422 GitHub stars~1.1k tokensUpdated 15 days ago
    MobileAuto-check passed
  • Kb Mobile Accessibility

    Community-Access/accessibility-agents

    Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.

    422 GitHub stars~3.8k tokensUpdated 15 days ago
    MobileAuto-check passed

More from tech-leads-club/agent-skills

All 74 skills in this repo
  • Evolutionary Modular Architecture

    tech-leads-club/agent-skills

    Guides design of modular-monolith platforms with DDD, flat-by-aggregate modules, anti-corruption layers, outbox events and resilience, plus an architecture document with SVG diagrams.

    7k GitHub stars~3.7k tokensUpdated 18 days ago
    Auto-check passed
  • Excalidraw Diagram Studio

    tech-leads-club/agent-skills

    Generates Excalidraw diagram files from plain descriptions, choosing among flowcharts, mind maps, architecture, swimlane, class, sequence and ER diagrams.

    7k GitHub stars~3.6k tokensUpdated 18 days ago
    Auto-check passed
  • Mermaid Studio

    tech-leads-club/agent-skills

    Creates, validates and renders Mermaid diagrams to SVG, PNG or ASCII, including C4 and AWS architecture-beta, flowcharts, sequence diagrams and ERDs.

    7k GitHub stars~4.6k tokensUpdated 18 days ago
    Auto-check passed
  • AWS Cloud Advisor

    tech-leads-club/agent-skills

    Answers AWS architecture, security and service-selection questions by searching AWS documentation through MCP tools first, then adapting advice to your stack and team.

    7k GitHub stars~2.1k tokensUpdated 18 days ago
    Auto-check passed
  • Harness Eval

    tech-leads-club/agent-skills

    Evaluates a repository's agent harness (AGENTS.md, rules, skills) for broken paths, redundant instructions and usefulness, and stops at reports.

    7k GitHub stars~3.9k tokensUpdated 18 days ago
    Auto-check passed
  • NestJS Modular Monolith Architect

    tech-leads-club/agent-skills

    Designs scalable NestJS modular monoliths with domain-driven design, Clean Architecture layers and optional CQRS, defining bounded contexts and strict module boundaries.

    7k GitHub stars~3.9k tokensUpdated 18 days ago
    Auto-check passed

Categories

Questions about React Native Expert

What does React Native Expert do?

Guides React Native and Expo work for cross-platform apps: Expo Router navigation, fast lists, Reanimated animation, platform-specific code and project structure. The agent works as a senior mobile engineer for React Native and Expo apps. Five principles come first: clarify requirements and target platforms, write the least code that solves the problem, prefer native components over JavaScript equivalents, make surgical edits that match the existing style, and define success up front and verify on both platforms.

When should I use React Native Expert?

React Native Expert fits situations like: building React Native screens and components for iOS and Android; setting up navigation with Expo Router; speeding up long lists and scrolling with LegendList or FlashList; handling code that differs between iOS and Android.

How do I install React Native Expert in Claude Code?

Run `npx skills add tech-leads-club/agent-skills --skill react-native-expert -a claude-code`. Or copy the skill folder (packages/skills-catalog/skills/(development)/react-native-expert in tech-leads-club/agent-skills) into .claude/skills/react-native-expert in your project. Claude Code loads it when a task matches its description.

How do I install React Native Expert in Codex?

Run `npx skills add tech-leads-club/agent-skills --skill react-native-expert -a codex`. Or copy the skill folder (packages/skills-catalog/skills/(development)/react-native-expert in tech-leads-club/agent-skills) into .agents/skills/react-native-expert in your project. Codex loads it when a task matches its description.

Can I use React Native Expert 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 tech-leads-club/agent-skills --skill react-native-expert -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-expert, .gemini/skills/react-native-expert, .github/skills/react-native-expert and .opencode/skills/react-native-expert in your project.

What does React Native Expert need to run?

SKILL.md names no scripts, command-line tools or credentials: React Native Expert is instructions for the agent only. Our summary lists: A React Native or Expo project.

Does React Native Expert access the network?

SKILL.md names 1 domain. As links in the text: zeego.dev. This is read from the text; nothing was executed.

Is React Native Expert safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does React Native Expert use?

React Native Expert is published under the CC-BY-4.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does React Native Expert use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 9.7k tokens, read only when the agent opens those files.

What are the alternatives to React Native Expert?

Skills that share tags, products or a category with React Native Expert: React Native Mmkv (margelo/react-native-skills, 175 stars), React Native (EliasOulkadi/shokunin, 114 stars), React Native Best Practices (vercel-labs/openreview, 1.7k stars) and Theming (Code-with-Beto/skills, 141 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains React Native Expert?

tech-leads-club (a GitHub organization) maintains it in tech-leads-club/agent-skills, which has 7,041 GitHub stars. The repository holds 74 skills in this directory. The repository was last updated on September 20, 2026.

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