expo-react-native-performance について
Expo React Native アプリの最適化を支援するリファレンススキルです。開発者やコーディングエージェント向けに、起動からプラットフォーム最適化まで8分野、影響度順の42ルールをまとめています。
主な機能
- 018分野にわたる42のパフォーマンスルール
- 02影響度順に整理された指針
- 03起動とバンドルサイズの最適化
- 04リスト、再レンダー、アニメーションの指針
- 05画像、メモリ、データ取得の実践項目
活用シーン
- 01React Nativeの画面やコンポーネントの作成
- 02FlatListやFlashListの性能改善
- 03アニメーションや画像読み込みコードのレビュー
- 04起動やメモリ効率を改善するリファクタリング
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill expo-react-native-performanceインストール後、Claude Code で/expo-react-native-performanceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdanim-interaction-manager.mdanim-layout-animation.mdanim-transform-not-dimensions.mdanim-use-native-driver.mdanim-use-reanimated.mdasset-optimize-image-size.mdasset-prefetch-images.mdasset-recycling-key.mdasset-use-expo-image.mdasset-use-webp-format.mdasync-batch-api-calls.mdasync-cache-responses.mdasync-defer-await.mdasync-parallel-fetching.mdasync-refetch-on-focus.mdlist-estimated-item-size.mdlist-get-item-layout.mdlist-get-item-type.mdlist-memoize-items.mdlist-stable-render-item.mdlist-use-flashlist.mdmem-abort-fetch.mdmem-avoid-inline-objects.mdmem-cleanup-subscriptions.mdmem-clear-timers.md詳細
Expo React Native のパフォーマンスに関するベストプラクティス
Expo React Native アプリケーション向けの包括的なパフォーマンス最適化ガイドです。8 つのカテゴリにわたる 42 個のルールを収録し、自動リファクタリングとコード生成を支援するため、影響度の高い順に優先順位を付けています。
適用する場面
次の場面で、これらのガイドラインを参照してください。
- 新しい React Native コンポーネントや画面を作成するとき
- FlatList または FlashList を使ったリストを実装するとき
- アニメーションやトランジションを追加するとき
- 画像やアセットの読み込みを最適化するとき
- パフォーマンス上の問題がないかコードをレビューするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | アプリの起動とバンドルサイズ | CRITICAL | startup- |
| 2 | リストの仮想化 | CRITICAL | list- |
| 3 | 再レンダリングの最適化 | HIGH | rerender- |
| 4 | アニメーションのパフォーマンス | HIGH | anim- |
| 5 | 画像とアセットの読み込み | MEDIUM-HIGH | asset- |
| 6 | メモリ管理 | MEDIUM | mem- |
| 7 | 非同期処理とデータ取得 | MEDIUM | async- |
| 8 | プラットフォームの最適化 | LOW-MEDIUM | platform- |
クイックリファレンス
1. アプリの起動とバンドルサイズ(CRITICAL)
startup-enable-hermes- Hermes JavaScript エンジンを有効にするstartup-remove-console-logs- 本番環境でコンソールログを削除するstartup-splash-screen-control- スプラッシュ画面の表示を制御するstartup-preload-assets- スプラッシュ画面の表示中に重要なアセットを事前読み込みするstartup-async-routes- コード分割に非同期ルートを使用するstartup-cherry-pick-imports- バレルファイルではなく直接インポートを使用する
2. リストの仮想化(CRITICAL)
list-use-flashlist- FlatList の代わりに FlashList を使用するlist-estimated-item-size- 正確な estimatedItemSize を指定するlist-get-item-type- 複数の種類が混在するリストでは getItemType を使用するlist-stable-render-item- useCallback で renderItem を安定させるlist-get-item-layout- 高さが固定されている場合は getItemLayout を指定するlist-memoize-items- リスト項目のコンポーネントをメモ化する
3. 再レンダリングの最適化(HIGH)
rerender-use-memo-expensive- コストの高い計算をメモ化するrerender-use-callback-handlers- useCallback でコールバックを安定させるrerender-functional-setstate- 関数形式の setState 更新を使用するrerender-lazy-state-init- 遅延状態初期化を使用するrerender-split-context- 更新頻度に応じてコンテキストを分割するrerender-derive-state- 状態を同期するのではなく導出する
4. アニメーションのパフォーマンス(HIGH)
anim-use-native-driver- アニメーションでネイティブドライバーを有効にするanim-use-reanimated- 複雑なアニメーションには Reanimated を使用するanim-layout-animation- シンプルなトランジションには LayoutAnimation を使用するanim-transform-not-dimensions- 寸法ではなく transform をアニメーションさせるanim-interaction-manager- アニメーション中は負荷の高い処理を後回しにする
5. 画像とアセットの読み込み(中〜高)
asset-use-expo-image- 画像の読み込みに expo-image を使用するasset-prefetch-images- 表示前に画像をプリフェッチするasset-optimize-image-size- 適切なサイズの画像をリクエストするasset-use-webp-format- 画像に WebP 形式を使用するasset-recycling-key- FlashList の画像で recyclingKey を使用する
6. メモリ管理(中)
mem-cleanup-subscriptions- useEffect 内のサブスクリプションをクリーンアップするmem-clear-timers- アンマウント時にタイマーをクリアするmem-abort-fetch- アンマウント時に fetch リクエストを中断するmem-avoid-inline-objects- props 内でインラインオブジェクトを避けるmem-limit-list-data- メモリ内のリストデータを制限する
7. 非同期処理とデータ取得(中)
async-parallel-fetching- 独立したデータを並列で取得するasync-defer-await- 値が必要になるまで await を遅らせるasync-batch-api-calls- 関連する API 呼び出しをまとめるasync-cache-responses- API のレスポンスをローカルにキャッシュするasync-refetch-on-focus- 画面にフォーカスしたときにデータを再取得する
8. プラットフォームの最適化(低〜中)
platform-android-overdraw- Android のオーバードローを減らすplatform-ios-text-rendering- iOS のテキスト描画を最適化するplatform-android-proguard- Android リリースで ProGuard を有効にするplatform-conditional-render- プラットフォーム固有の最適化
使用方法
詳しい説明とコード例については、個々のリファレンスファイルをお読みください。
- セクションの定義 - カテゴリーの構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
コンパイル済みドキュメント全文
すべてのルールを展開した完全なガイドについては、AGENTS.md をご覧ください。
リファレンスファイル
| ファイル | 説明 |
|---|---|
| AGENTS.md | すべてのルールを含むコンパイル済みガイド |
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応