mcpField
R
react-native-architecture

react-native-architecture

github.com/wshobson開発41.9k15.3k 回インストール2 週間前に更新
リポジトリ

react-native-architecture について

モバイルアプリ開発者向けのReact NativeとExpoのアーキテクチャガイドです。プロジェクト構成、ナビゲーション、状態管理、ネイティブモジュール、オフライン優先設計、パフォーマンス、リリース準備を扱います。

主な機能

  1. 01React NativeとExpoのプロジェクト構成
  2. 02ナビゲーションパターン
  3. 03状態管理ガイド
  4. 04ネイティブモジュールの統合
  5. 05オフライン優先アーキテクチャ
  6. 06パフォーマンスとCI/CDのガイド

活用シーン

  1. 01React NativeまたはExpoプロジェクトの開始
  2. 02複雑なナビゲーションの構築
  3. 03ネイティブAPIの統合
  4. 04オフライン優先モバイルアプリの開発

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wshobson/agents --skill react-native-architecture

インストール後、Claude Code で/react-native-architectureを入力して読み込まれたか確認します。

同梱ファイルreferences/details.md

詳細

React Native アーキテクチャ

Expo を使用した React Native 開発のための本番環境対応パターン。ナビゲーション、状態管理、ネイティブモジュール、オフラインファーストアーキテクチャを含みます。

このスキルを使用するタイミング

  • 新しい React Native または Expo プロジェクトを開始するとき
  • 複雑なナビゲーションパターンを実装するとき
  • ネイティブモジュールやプラットフォーム API を統合するとき
  • オフラインファーストのモバイルアプリケーションを構築するとき
  • React Native のパフォーマンスを最適化するとき
  • モバイルリリース用の CI/CD をセットアップするとき

中核となる概念

1. プロジェクト構造
src/
├── app/                    # Expo Router screens
│   ├── (auth)/            # Auth group
│   ├── (tabs)/            # Tab navigation
│   └── _layout.tsx        # Root layout
├── components/
│   ├── ui/                # Reusable UI components
│   └── features/          # Feature-specific components
├── hooks/                 # Custom hooks
├── services/              # API and native services
├── stores/                # State management
├── utils/                 # Utilities
└── types/                 # TypeScript types
2. Expo と Bare React Native の比較
機能ExpoBare RN
セットアップの複雑さ低い高い
ネイティブモジュールEAS Build手動リンク
OTA アップデート組み込み手動セットアップ
ビルドサービスEASカスタム CI
カスタムネイティブコードConfig プラグイン直接アクセス

クイックスタート

# Create new Expo project
npx create-expo-app@latest my-app -t expo-template-blank-typescript

# Install essential dependencies
npx expo install expo-router expo-status-bar react-native-safe-area-context
npx expo install @react-native-async-storage/async-storage
npx expo install expo-secure-store expo-haptics
// app/_layout.tsx
import { Stack } from 'expo-router'
import { ThemeProvider } from '@/providers/ThemeProvider'
import { QueryProvider } from '@/providers/QueryProvider'

export default function RootLayout() {
  return (
    <QueryProvider>
      <ThemeProvider>
        <Stack screenOptions={{ headerShown: false }}>
          <Stack.Screen name="(tabs)" />
          <Stack.Screen name="(auth)" />
          <Stack.Screen name="modal" options={{ presentation: 'modal' }} />
        </Stack>
      </ThemeProvider>
    </QueryProvider>
  )
}

詳細なパターンと実例

詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーションの階層では不十分な場合に、そのファイルを参照してください。

ベストプラクティス

すべきこと
  • Expo を使用する - より迅速な開発、OTA アップデート、管理されたネイティブコード
  • FlatList より FlashList - 長いリストでのパフォーマンス向上
  • コンポーネントをメモ化する - 不要な再レンダリングを防ぐ
  • Reanimated を使用する - ネイティブスレッドでの 60fps アニメーション
  • 実機でテストする - シミュレーターでは実際の環境の問題を見逃す
すべきでないこと
  • スタイルをインライン化しない - パフォーマンスのために StyleSheet.create を使用する
  • レンダー内でフェッチしない - useEffect または React Query を使用する
  • プラットフォームの違いを無視しない - iOS と Android の両方でテストする
  • コードにシークレットを保存しない - 環境変数を使用する
  • エラーバウンダリを省略しない - モバイルのクラッシュは容赦ない

コメント