本文へ移動
cccskills
無料GitHub で公開

react-native-dev

Build React Native/Expo mobile apps with navigation, native UI, state, networking, tests, and release workflows.

インストール方法を見る

含まれるファイル(12)

  • SKILL.md10.0 KB
  • references/animations.md6.7 KB
  • references/components.md2.7 KB
  • references/engineering.md13.7 KB
  • references/forms.md8.8 KB
  • references/native-capabilities.md4.5 KB
  • references/navigation.md6.6 KB
  • references/networking.md9.6 KB
  • references/performance.md6.9 KB
  • references/state-management.md6.3 KB
  • references/styling.md2.8 KB
  • references/testing.md8.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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.

Routing Boundary

Use this skill for React Native or Expo mobile apps, Expo Router, native mobile components, mobile permissions, EAS, and App Store/Play Store release work. Use frontend-ui-engineering or frontend-dev for browser React/web UI, android-native-dev for Kotlin/Compose Android, ios-application-dev for Swift/UIKit/SwiftUI iOS, and flutter-dev for Flutter/Dart.

References

Consult these resources as needed:

Quick Reference

Implementation Workflow

  1. Inspect runtime mode: determine Expo managed, Expo prebuild/dev client, or bare React Native; record SDK/RN versions, router, state libraries, native modules, and nearest tests.
  2. Choose the path with the Expo/RN decision table; keep the existing runtime mode unless the task explicitly requires migration.
  3. Implement the complete focused slice: route/screen shell, state/data layer, native capability permission path, loading/error/empty states, then release configuration only if requested.
  4. Verify in layers: run targeted Jest/RNTL tests, TypeScript/lint if present, npx expo start or platform build only when native/runtime behavior changed.
  5. Report evidence: list emulator/device/runtime mode, command results, and any store/EAS checks left Unverified.

🔴 CHECKPOINT · 🛑 STOP before ejecting/prebuilding, adding a native module, changing EAS profiles, modifying store metadata, or replacing navigation/state architecture. These require explicit approval.

Expo / React Native Decision Flow

Project state or needUseDo not use
New app or Expo managed appExpo Router + Expo SDK modulesBare RN setup without explicit reason
Existing bare RN appExisting React Navigation/native module setupMigrating to Expo during a feature fix
Native API available in Expo GoExpo module and permission hooksCustom native module
Native API not available in Expo GoDev client/prebuild only after approvalSilent expo prebuild
Long list/image-heavy UIFlashList, expo-image, memoized rowsFlatList/RN Image for large feeds
Shared server stateReact QueryGlobal Zustand store for fetched cache

Failure Modes and Fallbacks

TriggerFirst responseIf still failing
npm/yarn/pnpm install dependency conflictIdentify package manager and lockfile; keep existing versions and Expo SDK compatibilityReport conflict; do not force install or upgrade SDK unasked
Expo SDK/native module mismatchCheck npx expo doctor or package peer requirements when availableStop before prebuild/eject or dependency changes
Metro cache/runtime errorRestart Metro with project-approved cache command if documentedReport exact error and avoid deleting broad local state
Jest/RNTL fails after UI changeMock only native modules required by the changed component, following nearby testsMark test blocker if native module cannot be mocked locally
EAS build failsSeparate code/signing/profile errors; inspect the failing phaseDo not change credentials, profiles, or store config without approval
Release/test lane unavailableProvide manual runbook and mark release evidence UnverifiedDo not claim app-store readiness

Do Not Do This

  • Do not run expo prebuild, eject, or add native modules as an unapproved shortcut.
  • Do not use --force, --legacy-peer-deps, or broad dependency upgrades to bypass conflicts.
  • Do not mutate EAS credentials, signing, bundle IDs, package names, or store metadata unless assigned.
  • Do not use browser React patterns that ignore native safe areas, gestures, keyboard avoidance, or accessibility roles.
  • Do not claim performance improvement without profiler, frame, bundle, or before/after evidence.

Component Preferences

PurposeUseInstead of
ListsFlashList (@shopify/flash-list) + memo itemsFlatList (no view recycling)
Imagesexpo-imageRN <Image> (no cache, no WebP)
PressPressableTouchableOpacity (legacy)
Audioexpo-audioexpo-av (deprecated)
Videoexpo-videoexpo-av (deprecated)
AnimationsReanimated 3RN Animated API (limited)
GesturesGesture HandlerPanResponder (legacy)
Platform checkprocess.env.EXPO_OSPlatform.OS
ContextReact.use()React.useContext() (React 18)
Safe area scrollcontentInsetAdjustmentBehavior="automatic"<SafeAreaView>
SF Symbolsexpo-image with source="sf:name"expo-symbols

Scaling Up

SituationConsider
Long lists with scroll jankVirtualized list libraries (e.g. FlashList)
Want Tailwind-style classesNativeWind v4
High-frequency storage readsSync-based storage (e.g. MMKV)
New project with ExpoExpo Router over bare React Navigation

State Management

State TypeSolution
Local UI stateuseState / useReducer
Shared app stateZustand or Jotai
Server / async dataReact Query
Form stateReact Hook Form + Zod

Performance Priorities

PriorityIssueFix
CRITICALLong list jankFlashList + memoized items
CRITICALLarge bundleAvoid barrel imports, enable R8
HIGHToo many re-rendersZustand selectors, React Compiler
HIGHSlow startupDisable bundle compression, native nav
MEDIUMAnimation dropsOnly animate transform/opacity

New Project Init

# 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)

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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Review a single academic paper, preprint, DOI, arXiv link, or user-provided PDF/text with source-grounded critique. Use for paper summaries, methodology review, novelty checks, reproducibility concerns, or "review this paper" requests; do not use for multi-paper surveys, systematic literature reviews, citation management, or implementation from a paper.

日本語の概要は準備中です。原文の説明を表示しています。

Rosetears520/aili-workflows22026年9月27日 更新

AI regression scouting routing. Use when agents, prompts, skills, model/tool routing, harness fixtures, or generated-output expectations change and need regression scenarios; do not use for ordinary product-code regressions.

日本語の概要は準備中です。原文の説明を表示しています。

Rosetears520/aili-workflows22026年9月27日 更新

Run the AILI delivery lifecycle from natural-language IDEATE, DEFINE, BUILD, and SHIP intent or the equivalent slash shortcuts; use for idea shaping, spec/test definition, bounded BUILD package queues, review-repair closeout, or adapter routing without exposing internal stage commands.

日本語の概要は準備中です。原文の説明を表示しています。

Rosetears520/aili-workflows22026年9月27日 更新

Android native Kotlin/Compose app development, Material 3 UI, accessibility, and Gradle builds.

日本語の概要は準備中です。原文の説明を表示しています。

Rosetears520/aili-workflows22026年9月27日 更新

Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating REST or GraphQL endpoints, defining type contracts between modules, or establishing boundaries between frontend and backend.

日本語の概要は準備中です。原文の説明を表示しています。

Rosetears520/aili-workflows22026年9月27日 更新

Route an explicitly requested independent/delegated browser QA assignment or durable E2E evidence need; do not trigger for direct Playwright/DOM/console/network inspection, ordinary UI implementation, backend-only work, or production-mutating flows.

日本語の概要は準備中です。原文の説明を表示しています。

Rosetears520/aili-workflows22026年9月27日 更新

Rosetears520 のスキルをすべて見る

このスキルの問題を報告する