🛠️ React Native Best Practices
React Nativeアプリのパフォーマンスを最適化し、FPSや起動時間、バンドルサイズ、メモリリーク、再レンダリング、アニメーションなどの問題を改善するためのガイドラインを提供するSkill。
📜 元の英語説明(参考)
Provides React Native performance optimization guidelines for FPS, TTI, bundle size, memory leaks, re-renders, and animations. Applies to tasks involving Hermes optimization, JS thread blocking, bridge overhead, FlashList, native modules, or debugging jank and frame drops.
🇯🇵 日本人クリエイター向け解説
React Nativeアプリのパフォーマンスを最適化し、FPSや起動時間、バンドルサイズ、メモリリーク、再レンダリング、アニメーションなどの問題を改善するためのガイドラインを提供するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o react-native-best-practices.zip https://jpskill.com/download/5291.zip && unzip -o react-native-best-practices.zip && rm react-native-best-practices.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/5291.zip -OutFile "$d\react-native-best-practices.zip"; Expand-Archive "$d\react-native-best-practices.zip" -DestinationPath $d -Force; ri "$d\react-native-best-practices.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
react-native-best-practices.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
react-native-best-practicesフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-18
- 同梱ファイル
- 29
💬 こう話しかけるだけ — サンプルプロンプト
- › React Native Best Practices を使って、最小構成のサンプルコードを示して
- › React Native Best Practices の主な使い方と注意点を教えて
- › React Native Best Practices を既存プロジェクトに組み込む方法を教えて
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
React Nativeのベストプラクティス
概要
React Nativeアプリケーションのパフォーマンス最適化ガイドです。JavaScript/React、ネイティブ(iOS/Android)、およびバンドル最適化について解説しています。Callstackの「Ultimate Guide to React Native Optimization」に基づいています。
スキル形式
各リファレンスファイルは、素早い検索と深い理解のためにハイブリッド形式を採用しています。
- クイックパターン: 即座にパターンマッチングできる、誤ったコードスニペットと正しいコードスニペット
- クイックコマンド: プロセス/測定スキル用のシェルコマンド
- クイック設定: セットアップに焦点を当てたスキル用の設定スニペット
- クイックリファレンス: 概念的なスキル用の要約表
- ディープダイブ: 使用するタイミング、前提条件、ステップバイステップ、一般的な落とし穴を含む完全なコンテキスト
影響度評価: CRITICAL(直ちに修正)、HIGH(大幅な改善)、MEDIUM(最適化する価値あり)
適用するタイミング
以下の状況でこれらのガイドラインを参照してください。
- 遅い/カクカクしたUIやアニメーションのデバッグ
- メモリリーク(JSまたはネイティブ)の調査
- アプリの起動時間(TTI)の最適化
- バンドルサイズまたはアプリサイズの削減
- ネイティブモジュール(Turbo Modules)の作成
- React Nativeのパフォーマンスプロファイリング
- パフォーマンスに関するReact Nativeコードのレビュー
優先順位付けされたガイドライン
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | FPSと再レンダリング | CRITICAL | js-* |
| 2 | バンドルサイズ | CRITICAL | bundle-* |
| 3 | TTI最適化 | HIGH | native-*, bundle-* |
| 4 | ネイティブパフォーマンス | HIGH | native-* |
| 5 | メモリ管理 | MEDIUM-HIGH | js-*, native-* |
| 6 | アニメーション | MEDIUM | js-* |
クイックリファレンス
最適化ワークフロー
パフォーマンスの問題については、このサイクルに従ってください。測定 → 最適化 → 再測定 → 検証
- 測定: 変更前にベースラインメトリクス(FPS、TTI、バンドルサイズ)をキャプチャします。
- 最適化: 関連するリファレンスからターゲットとなる修正を適用します。
- 再測定: 同じ測定を実行して、更新されたメトリクスを取得します。
- 検証: 改善を確認します(例: FPS 45→60、TTI 3.2秒→1.8秒、バンドル 2.1MB→1.6MB)。
メトリクスが改善しなかった場合は、元に戻して次の推奨される修正を試してください。
重要: FPSと再レンダリング
最初にプロファイル:
# React Native DevToolsを開く
# Metroで「j」を押すか、デバイスを振って「Open DevTools」を選択します。
一般的な修正:
- リストにはScrollViewをFlatList/FlashListに置き換える
- 自動メモ化のためにReact Compilerを使用する
- 再レンダリングを減らすためにアトミックステート(Jotai/Zustand)を使用する
- 高価な計算には
useDeferredValueを使用する
重要: バンドルサイズ
バンドルを分析:
npx react-native bundle \
--entry-file index.js \
--bundle-output output.js \
--platform ios \
--sourcemap-output output.js.map \
--dev false --minify true
npx source-map-explorer output.js --no-border-checks
最適化後の改善を検証:
# 変更前のベースラインサイズを記録
ls -lh output.js # 例: 変更前: 2.1 MB
# 修正を適用後、再バンドルして比較
npx react-native bundle --entry-file index.js --bundle-output output.js \
--platform ios --dev false --minify true
ls -lh output.js # 例: 変更後: 1.6 MB (24%削減)
一般的な修正:
- バレルインポートを避ける(ソースから直接インポートする)
- 不要なIntlポリフィルを削除する(Hermesはネイティブサポートしている)
- ツリーシェイキングを有効にする(Expo SDK 52+またはRe.Pack)
- Androidネイティブコードの縮小のためにR8を有効にする
高: TTI最適化
TTIを測定:
- マーカーには
react-native-performanceを使用する - コールドスタートのみを測定する(ウォーム/ホット/プレウォームは除く)
一般的な修正:
- AndroidでJSバンドル圧縮を無効にする(Hermes mmapを有効にする)
- ネイティブナビゲーションを使用する(react-native-screens)
- 一般的に使用される高価な画面にナビゲートする前にプリロードする
高: ネイティブパフォーマンス
ネイティブをプロファイル:
- iOS: Xcode Instruments → Time Profiler
- Android: Android Studio → CPU Profiler
一般的な修正:
- 重いネイティブ作業にはバックグラウンドスレッドを使用する
- Turbo Moduleメソッドは同期よりも非同期を優先する
- クロスプラットフォームのパフォーマンスが重要なコードにはC++を使用する
リファレンス
コード例を含む完全なドキュメントは[references/][references]にあります。
JavaScript/React (js-*)
| ファイル | 影響度 | 説明 |
|---|---|---|
| [js-lists-flatlist-flashlist.md][js-lists-flatlist-flashlist] | CRITICAL | ScrollViewを仮想化リストに置き換える |
| [js-profile-react.md][js-profile-react] | MEDIUM | React DevToolsプロファイリング |
| [js-measure-fps.md][js-measure-fps] | HIGH | FPS監視と測定 |
| [js-memory-leaks.md][js-memory-leaks] | MEDIUM | JSメモリリークの調査 |
| [js-atomic-state.md][js-atomic-state] | HIGH | Jotai/Zustandパターン |
| [js-concurrent-react.md][js-concurrent-react] | HIGH | useDeferredValue、useTransition |
| [js-react-compiler.md][js-react-compiler] | HIGH | 自動メモ化 |
| [js-animations-reanimated.md][js-animations-reanimated] | MEDIUM | Reanimatedワークレット |
| [js-uncontrolled-components.md][js-uncontrolled-components] | HIGH | TextInput最適化 |
ネイティブ (native-*)
| ファイル | 影響度 | 説明 |
|---|---|---|
| [native-turbo-modules.md][native-turbo-modules] | HIGH | 高速なネイティブモジュールの構築 |
| [native-sdks-over-polyfills.md][native-sdks-over-polyfills] | HIGH | ネイティブ vs JSライブラリ |
| [native-measure-tti.md][native-measure-tti] | HIGH | TTI測定のセットアップ |
| [native-threading-model.md][native-threading-model] | HIGH | Turbo Moduleスレッド |
| [native-profiling.md][native-profiling] | MEDIUM | Xcode/Android Studioプロファイリング |
| [native-platform-setup.md][native-platform-setup] | MEDIUM | iOS/Androidツールガイド |
| [native-view-flattening.md][native-view-flattening] | MEDIUM | ビュー階層のデバッグ |
| [native-memory-patterns.md][native-memory-patterns] | MEDIUM | C++/Swift/Kotlinメモリ |
| [native-memory-leaks.md][native-memory-leaks] | MEDIUM | ネイティブメモリリークの調査 |
| [native-android-16kb-alignment.md][native-android-16kb-alignment] | CRITICAL | Google Play向けサードパーティライブラリのアライメント |
バンドル (bundle-*)
| ファイル | 影響度 |
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
React Native Best Practices
Overview
Performance optimization guide for React Native applications, covering JavaScript/React, Native (iOS/Android), and bundling optimizations. Based on Callstack's "Ultimate Guide to React Native Optimization".
Skill Format
Each reference file follows a hybrid format for fast lookup and deep understanding:
- Quick Pattern: Incorrect/Correct code snippets for immediate pattern matching
- Quick Command: Shell commands for process/measurement skills
- Quick Config: Configuration snippets for setup-focused skills
- Quick Reference: Summary tables for conceptual skills
- Deep Dive: Full context with When to Use, Prerequisites, Step-by-Step, Common Pitfalls
Impact ratings: CRITICAL (fix immediately), HIGH (significant improvement), MEDIUM (worthwhile optimization)
When to Apply
Reference these guidelines when:
- Debugging slow/janky UI or animations
- Investigating memory leaks (JS or native)
- Optimizing app startup time (TTI)
- Reducing bundle or app size
- Writing native modules (Turbo Modules)
- Profiling React Native performance
- Reviewing React Native code for performance
Priority-Ordered Guidelines
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | FPS & Re-renders | CRITICAL | js-* |
| 2 | Bundle Size | CRITICAL | bundle-* |
| 3 | TTI Optimization | HIGH | native-*, bundle-* |
| 4 | Native Performance | HIGH | native-* |
| 5 | Memory Management | MEDIUM-HIGH | js-*, native-* |
| 6 | Animations | MEDIUM | js-* |
Quick Reference
Optimization Workflow
Follow this cycle for any performance issue: Measure → Optimize → Re-measure → Validate
- Measure: Capture baseline metrics (FPS, TTI, bundle size) before changes
- Optimize: Apply the targeted fix from the relevant reference
- Re-measure: Run the same measurement to get updated metrics
- Validate: Confirm improvement (e.g., FPS 45→60, TTI 3.2s→1.8s, bundle 2.1MB→1.6MB)
If metrics did not improve, revert and try the next suggested fix.
Critical: FPS & Re-renders
Profile first:
# Open React Native DevTools
# Press 'j' in Metro, or shake device → "Open DevTools"
Common fixes:
- Replace ScrollView with FlatList/FlashList for lists
- Use React Compiler for automatic memoization
- Use atomic state (Jotai/Zustand) to reduce re-renders
- Use
useDeferredValuefor expensive computations
Critical: Bundle Size
Analyze bundle:
npx react-native bundle \
--entry-file index.js \
--bundle-output output.js \
--platform ios \
--sourcemap-output output.js.map \
--dev false --minify true
npx source-map-explorer output.js --no-border-checks
Verify improvement after optimization:
# Record baseline size before changes
ls -lh output.js # e.g., Before: 2.1 MB
# After applying fixes, re-bundle and compare
npx react-native bundle --entry-file index.js --bundle-output output.js \
--platform ios --dev false --minify true
ls -lh output.js # e.g., After: 1.6 MB (24% reduction)
Common fixes:
- Avoid barrel imports (import directly from source)
- Remove unnecessary Intl polyfills (Hermes has native support)
- Enable tree shaking (Expo SDK 52+ or Re.Pack)
- Enable R8 for Android native code shrinking
High: TTI Optimization
Measure TTI:
- Use
react-native-performancefor markers - Only measure cold starts (exclude warm/hot/prewarm)
Common fixes:
- Disable JS bundle compression on Android (enables Hermes mmap)
- Use native navigation (react-native-screens)
- Preload commonly-used expensive screens before navigating to them
High: Native Performance
Profile native:
- iOS: Xcode Instruments → Time Profiler
- Android: Android Studio → CPU Profiler
Common fixes:
- Use background threads for heavy native work
- Prefer async over sync Turbo Module methods
- Use C++ for cross-platform performance-critical code
References
Full documentation with code examples in references/:
JavaScript/React (js-*)
| File | Impact | Description |
|---|---|---|
| js-lists-flatlist-flashlist.md | CRITICAL | Replace ScrollView with virtualized lists |
| js-profile-react.md | MEDIUM | React DevTools profiling |
| js-measure-fps.md | HIGH | FPS monitoring and measurement |
| js-memory-leaks.md | MEDIUM | JS memory leak hunting |
| js-atomic-state.md | HIGH | Jotai/Zustand patterns |
| js-concurrent-react.md | HIGH | useDeferredValue, useTransition |
| js-react-compiler.md | HIGH | Automatic memoization |
| js-animations-reanimated.md | MEDIUM | Reanimated worklets |
| js-uncontrolled-components.md | HIGH | TextInput optimization |
Native (native-*)
| File | Impact | Description |
|---|---|---|
| native-turbo-modules.md | HIGH | Building fast native modules |
| native-sdks-over-polyfills.md | HIGH | Native vs JS libraries |
| native-measure-tti.md | HIGH | TTI measurement setup |
| native-threading-model.md | HIGH | Turbo Module threads |
| native-profiling.md | MEDIUM | Xcode/Android Studio profiling |
| native-platform-setup.md | MEDIUM | iOS/Android tooling guide |
| native-view-flattening.md | MEDIUM | View hierarchy debugging |
| native-memory-patterns.md | MEDIUM | C++/Swift/Kotlin memory |
| native-memory-leaks.md | MEDIUM | Native memory leak hunting |
| native-android-16kb-alignment.md | CRITICAL | Third-party library alignment for Google Play |
Bundling (bundle-*)
| File | Impact | Description |
|---|---|---|
| bundle-barrel-exports.md | CRITICAL | Avoid barrel imports |
| bundle-analyze-js.md | CRITICAL | JS bundle visualization |
| bundle-tree-shaking.md | HIGH | Dead code elimination |
| bundle-analyze-app.md | HIGH | App size analysis |
| bundle-r8-android.md | HIGH | Android code shrinking |
| bundle-hermes-mmap.md | HIGH | Disable bundle compression |
| bundle-native-assets.md | HIGH | Asset catalog setup |
| bundle-library-size.md | MEDIUM | Evaluate dependencies |
| bundle-code-splitting.md | MEDIUM | Re.Pack code splitting |
Searching References
# Find patterns by keyword
grep -l "reanimated" references/
grep -l "flatlist" references/
grep -l "memory" references/
grep -l "profil" references/
grep -l "tti" references/
grep -l "bundle" references/
Problem → Skill Mapping
| Problem | Start With |
|---|---|
| App feels slow/janky | js-measure-fps.md → js-profile-react.md |
| Too many re-renders | js-profile-react.md → js-react-compiler.md |
| Slow startup (TTI) | native-measure-tti.md → bundle-analyze-js.md |
| Large app size | bundle-analyze-app.md → bundle-r8-android.md |
| Memory growing | js-memory-leaks.md or native-memory-leaks.md |
| Animation drops frames | js-animations-reanimated.md |
| List scroll jank | js-lists-flatlist-flashlist.md |
| TextInput lag | js-uncontrolled-components.md |
| Native module slow | native-turbo-modules.md → native-threading-model.md |
| Native library alignment issue | native-android-16kb-alignment.md |
Attribution
Based on "The Ultimate Guide to React Native Optimization" by Callstack.
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (10,373 bytes)
- 📎 references/bundle-analyze-app.md (5,311 bytes)
- 📎 references/bundle-analyze-js.md (6,412 bytes)
- 📎 references/bundle-barrel-exports.md (5,033 bytes)
- 📎 references/bundle-code-splitting.md (4,982 bytes)
- 📎 references/bundle-hermes-mmap.md (3,865 bytes)
- 📎 references/bundle-library-size.md (4,303 bytes)
- 📎 references/bundle-native-assets.md (4,399 bytes)
- 📎 references/bundle-r8-android.md (4,627 bytes)
- 📎 references/bundle-tree-shaking.md (5,522 bytes)
- 📎 references/js-animations-reanimated.md (7,227 bytes)
- 📎 references/js-atomic-state.md (6,040 bytes)
- 📎 references/js-concurrent-react.md (6,340 bytes)
- 📎 references/js-lists-flatlist-flashlist.md (5,153 bytes)
- 📎 references/js-measure-fps.md (4,768 bytes)
- 📎 references/js-memory-leaks.md (5,177 bytes)
- 📎 references/js-profile-react.md (4,793 bytes)
- 📎 references/js-react-compiler.md (8,990 bytes)
- 📎 references/js-uncontrolled-components.md (5,153 bytes)
- 📎 references/native-android-16kb-alignment.md (3,527 bytes)
- 📎 references/native-measure-tti.md (6,850 bytes)
- 📎 references/native-memory-leaks.md (5,608 bytes)
- 📎 references/native-memory-patterns.md (6,301 bytes)
- 📎 references/native-platform-setup.md (3,393 bytes)
- 📎 references/native-profiling.md (4,843 bytes)
- 📎 references/native-sdks-over-polyfills.md (5,489 bytes)
- 📎 references/native-threading-model.md (5,691 bytes)
- 📎 references/native-turbo-modules.md (6,593 bytes)
- 📎 references/native-view-flattening.md (5,154 bytes)