mcpField
R
react-performance

react-performance

github.com/oakoss開発20154 回インストール10 週間前に更新
リポジトリ

react-performance について

React アプリの性能を診断・最適化する、React 開発者向けのスキルです。ビルド時と実行時の手法に加え、プロファイリングとバンドル分析も扱います。

主な機能

  1. 01React Compiler と手動メモ化の方針
  2. 02React.lazy によるコード分割
  3. 03バンドル縮小と依存関係の遅延読み込み
  4. 04不要な再レンダリングの削減
  5. 05長いリストのレンダリング最適化
  6. 06Profiler とバンドル分析による診断

活用シーン

  1. 01コンポーネントの再レンダリング問題の調査
  2. 02アプリの初期バンドルサイズ削減
  3. 03長いリストの描画性能改善
  4. 04低速なコンポーネントや大きな依存関係の分析

インストール

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

$npx skills add https://github.com/oakoss/agent-skills --skill react-performance

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
code-splitting.md
profiling-and-debugging.md
rendering-optimization.md

詳細

React のパフォーマンス

概要

React アプリケーション向けの、パフォーマンス最適化に特化したスキルです。ビルド時の最適化(コード分割、バレルファイルの回避)から、実行時の手法(メモ化、トランジション、content-visibility)、診断ツール(React DevTools Profiler、バンドルアナライザー)まで、幅広く扱います。

使用する場面: Time to Interactive の短縮、バンドルサイズの縮小、再レンダリングの解消、遅いコンポーネントのプロファイリング、大規模なリストの最適化、重い依存関係の遅延読み込み、React アプリのパフォーマンス監査。

使用しない場面: 一般的な React コンポーネントのパターン(react-patterns スキルを使用)、Next.js のキャッシュなどフレームワーク固有の最適化(フレームワークスキルを使用)、React 以外のパフォーマンス(ネットワーク、データベース、CDN)。

クイックリファレンス

カテゴリ手法要点
コンパイラーReact Compilerビルド時に自動でメモ化し、手動の memo/useMemo/useCallback を不要にします
メモ化React.memo(Component)頻繁に再レンダリングされる親から、安定したプリミティブな props を受け取るコンポーネントをラップします
メモ化useMemo(fn, deps)ソート、フィルタリング、Set/Map の構築など、コストの高い計算にのみ使用します
メモ化useCallback(fn, deps)メモ化された子に渡す場合にのみ使用します。安定した参照には関数型 setState を使用します
分割React.lazy(() => import())<Suspense> フォールバックを使って、重いコンポーネントを遅延読み込みします
分割意図に応じたプリロードホバー/フォーカス時に import() を実行し、体感速度を高めます
バンドル直接インポートバレルファイルを避け、特定のパスからインポートしてモジュール数を減らします
バンドルサードパーティの読み込みを遅らせるハイドレーション後に分析ツールやロギングを読み込みます
再レンダリングstartTransition緊急性の低い更新(検索、スクロール追跡)を中断可能として扱います
再レンダリング関数型 setStatesetState(prev => ...) により、コールバックの state 依存をなくせます
再レンダリング派生状態継続的に変化する値ではなく真偽値を購読し、レンダー中に計算します
再レンダリング状態の読み取りを遅らせる動的な状態(searchParams)はレンダー時ではなく、コールバック内で読み取ります
レンダリングcontent-visibility: auto長いリストの画面外にある項目について、レイアウトと描画をスキップします
レンダリング静的 JSX を外部に移動定数の要素をコンポーネント関数の外に取り出します
プロファイリングReact DevTools Profilerレンダリングを記録し、遅いコンポーネントを特定して、フレームグラフを分析します
プロファイリングバンドルアナライザーチャンクサイズを可視化し、サイズの大きい依存関係を見つけます

よくある間違い

間違い正しいパターン
すべてを useMemo/useCallback でラップするまず React Compiler を信頼します。コストの高い計算や、メモ化された子コンポーネントへのコールバックのみをメモ化します
value * 2 のような単純な処理をメモ化する単純なプリミティブ値にはメモ化を使いません。オーバーヘッドが再計算のコストを上回ります
バレルファイル(lucide-react、@mui/material)からインポートする特定のパスから直接インポートするか、optimizePackageImports を使用します
初期バンドルで分析/トラッキングを読み込むlazy とマウント状態を使って、ハイドレーション後に読み込むよう遅延させます
ブール値の判定に連続的に変化する値(ウィンドウ幅)をサブスクライブするuseMediaQuery または派生ブール値を使用し、しきい値が変わったときだけ再レンダリングします
useCallback の依存配列で state を参照する安定したコールバックには、関数形式の setState setState(prev => ...) を使用します
props から state を導出するために useEffect を使用するレンダリング中に導出値を計算します。エフェクトを使うと余分なレンダリングサイクルが発生します
レンダリングのたびに新しいオブジェクトリテラルを props として作成する静的なオブジェクトはコンポーネントの外に置き、動的なオブジェクトには useMemo を使用します
開発モードでプロファイリングする常に本番ビルドをプロファイリングします。開発モードには結果を歪める追加の警告が含まれます

委任

  • パフォーマンスのボトルネックをプロファイリングして診断する:Explore エージェントを使用して React DevTools Profiler を実行し、バンドルの構成を分析し、再レンダリングの連鎖を追跡します
  • 既存コードにパフォーマンス最適化を適用する:Task エージェントを使用してコード分割を実装し、メモ化の境界を追加し、レンダリングを最適化します
  • パフォーマンス改善戦略を計画する:Plan エージェントを使用して影響度(ウォーターフォール > バンドル > 再レンダリング)に基づいて最適化の優先順位を決め、最適化のロードマップを作成します

react-patterns スキルが利用可能な場合は、一般的なコンポーネントアーキテクチャや React 19 API に関する質問を同スキルに委任してください。 利用できない場合は、npx skills add oakoss/agent-skills --skill react-patterns を推奨してください。

参考資料

コメント