react-native-dev
React NativeおよびExpoを用いたアプリ開発全般をカバーするガイドで、コンポーネント設計・スタイリング・アニメーション・ナビゲーション・状態管理・フォーム・ネットワーク通信・パフォーマンス最適化・テスト・ネイティブ機能・プロジェクト構成・デプロイ・CI/CDまで網羅しています。React NativeまたはExpoアプリの構築、アニメーションやネイティブUIの実装、データ取得、テスト作成、App Store/Play Storeへのリリース、Expo SDKのアップグレード、Tailwind/NativeWindの設定など、あらゆる場面で活用できます。
description の原文を見る
| React Native and Expo development guide covering components, styling, animations, navigation, state management, forms, networking, performance optimization, testing, native capabilities, and engineering (project structure, deployment, SDK upgrades, CI/CD). Use when: building React Native or Expo apps, implementing animations or native UI, managing state, fetching data, writing tests, optimizing performance, deploying to App Store/Play Store, setting up CI/CD, upgrading Expo SDK, or configuring Tailwind/NativeWind.
SKILL.md 本文
React Native & Expo 開発ガイド
本番環境対応の React Native および Expo アプリケーション構築のための実用的なガイド。UI、アニメーション、状態、テスト、パフォーマンス、デプロイをカバーしています。
リファレンス
必要に応じてこれらのリソースを参照してください:
references/navigation.md— Expo Router: Stack、Tabs、NativeTabs (headerLargeTitle、headerBackButtonDisplayMode)、リンク、モーダル、シート、コンテキストメニューreferences/components.md— FlashList パターン、expo-image、セーフエリア (contentInsetAdjustmentBehavior)、ネイティブコントロール、ブラー/グラスエフェクト、ストレージreferences/styling.md— StyleSheet、NativeWind/Tailwind、プラットフォームスタイル、テーミング、ダークモードreferences/animations.md— Reanimated 3: 入退出、共有値、ジェスチャー、スクロール駆動references/state-management.md— Zustand (セレクター、永続化)、Jotai (アトム、派生)、React Query、Contextreferences/forms.md— React Hook Form + Zod: バリデーション、マルチステップ、動的配列references/networking.md— fetch ラッパー、React Query (楽観的更新)、認証トークン、オフライン、API ルート、Webhookreferences/performance.md— プロファイリングワークフロー、FlashList +memo、バンドル分析、TTI、メモリリーク、アニメーションパフォーマンスreferences/testing.md— Jest、React Native Testing Library、Maestro による E2Ereferences/native-capabilities.md— カメラ、位置情報、パーミッション (use*Permissionsフック)、ハプティクス、通知、バイオメトリクスreferences/engineering.md— プロジェクトレイアウト (components/ui/、stores/、services/)、パスエイリアス、SDK アップグレード、EAS ビルド/送信、CI/CD、DOM コンポーネント
クイックリファレンス
コンポーネントの推奨事項
| 用途 | 使用 | 避けるべき |
|---|---|---|
| リスト | FlashList (@shopify/flash-list) + memo アイテム | FlatList (ビュー再利用なし) |
| 画像 | expo-image | RN <Image> (キャッシュなし、WebP 非対応) |
| プレス | Pressable | TouchableOpacity (レガシー) |
| オーディオ | expo-audio | expo-av (非推奨) |
| ビデオ | expo-video | expo-av (非推奨) |
| アニメーション | Reanimated 3 | RN Animated API (限定的) |
| ジェスチャー | Gesture Handler | PanResponder (レガシー) |
| プラットフォーム確認 | process.env.EXPO_OS | Platform.OS |
| Context | React.use() | React.useContext() (React 18) |
| セーフエリアスクロール | contentInsetAdjustmentBehavior="automatic" | <SafeAreaView> |
| SF Symbols | expo-image with source="sf:name" | expo-symbols |
スケーリング
| 状況 | 検討対象 |
|---|---|
| 長いリストでスクロール時のジャンク | 仮想化リストライブラリ (例: FlashList) |
| Tailwind スタイルのクラスが必要 | NativeWind v4 |
| ストレージの読み取り頻度が高い | 同期ベースのストレージ (例: MMKV) |
| Expo での新規プロジェクト | React Navigation ではなく Expo Router を使用 |
状態管理
| 状態タイプ | ソリューション |
|---|---|
| ローカル UI 状態 | useState / useReducer |
| 共有アプリ状態 | Zustand または Jotai |
| サーバー / 非同期データ | React Query |
| フォーム状態 | React Hook Form + Zod |
パフォーマンス優先度
| 優先度 | 問題 | 修正 |
|---|---|---|
| 重大 | 長いリストのジャンク | FlashList + メモ化されたアイテム |
| 重大 | 大きなバンドル | バレルインポートを回避、R8 を有効化 |
| 高 | 再レンダリングが多い | Zustand セレクター、React Compiler |
| 高 | 起動が遅い | バンドル圧縮を無効化、ネイティブナビゲーション |
| 中 | アニメーションがドロップ | transform/opacity のみをアニメート化 |
新規プロジェクト初期化
# 1. プロジェクトを作成
npx create-expo-app@latest my-app --template blank-typescript
cd my-app
# 2. Expo Router + コア依存関係をインストール
npx expo install expo-router react-native-safe-area-context react-native-screens
# 3. (オプション) よく使う追加パッケージ
npx expo install expo-image react-native-reanimated react-native-gesture-handler
その後、以下を設定します:
package.jsonのエントリーポイントを設定:"main": "expo-router/entry"app.jsonにスキームを追加:"scheme": "my-app"App.tsxとindex.tsを削除- ルート Stack レイアウトとして
app/_layout.tsxを作成 - タブナビゲーション用に
app/(tabs)/_layout.tsxを作成 app/(tabs)/内にルートファイルを作成 (navigation.mdを参照)
Web サポートの場合、さらに以下もインストール: npx expo install react-native-web react-dom @expo/metro-runtime
コアプリンシパル
参照資料を先に確認する: ナビゲーション、リスト、ネットワーキング、プロジェクトセットアップを実装するときは、上記の対応する参照ファイルを読んでパターンと落とし穴を確認してください。
最初に Expo Go で試す (npx expo start)。カスタムビルド (eas build) が必要なのは、ローカル Expo モジュール、Apple ターゲット、または Expo Go に含まれていない サードパーティネイティブモジュールを使用する場合のみです。
条件付きレンダリング: {count && <Text />} ではなく {count > 0 && <Text />} を使用 ("0" がレンダリングされます)。
アニメーションルール: transform と opacity のみをアニメート化 — GPU コンポジット済み、レイアウトスラッシュなし。
インポート: 常にソースから直接インポート。バレルファイルからのインポートは避ける — バンドルブロートを回避します。
リストと画像: FlatList または RN Image を使用する前に、上記のコンポーネント推奨表を確認してください — FlashList と expo-image がほぼ常に正しい選択肢です。
ルートファイル: 常に kebab-case を使用。app/ 内にコンポーネント/型/ユーティリティを共存させないでください。
チェックリスト
新規プロジェクトセットアップ
-
tsconfig.jsonパスエイリアスが設定されている -
EXPO_PUBLIC_API_URL環境変数が環境ごとに設定されている - ルートレイアウトに
GestureHandlerRootViewがある (ジェスチャーを使用する場合) - すべてのスクロールビューで
contentInsetAdjustmentBehavior="automatic"が設定されている - 20 項目以上のリストに
FlatListではなくFlashListを使用
配信前
-
--profileモードでプロファイリング、フレーム > 16ms を修正 - バンドルを分析 (
source-map-explorer)、バレルインポートなし - Android で R8 を有効化
- 重要なパスのユニット + コンポーネントテスト
- ログイン、コア機能、チェックアウトの E2E フロー
Flutter 開発 → flutter-dev スキルを参照してください。
iOS ネイティブ (UIKit/SwiftUI) → ios-application-dev スキルを参照してください。
Android ネイティブ (Kotlin/Compose) → android-native-dev スキルを参照してください。
React Native は Meta Platforms, Inc. の商標です。Expo は 650 Industries, Inc. の商標です。その他すべての製品名はそれぞれの所有者の商標です。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- minimax-ai
- リポジトリ
- minimax-ai/skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/minimax-ai/skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。