본문으로 건너뛰기
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.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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의 스킬 모두 보기

이 스킬의 문제 신고