vercel-react-best-practices について
vercel-react-best-practices は、React と Next.js の性能最適化ガイドです。Vercel が保守し、開発者やエージェントによる実装、レビュー、リファクタリングを支援します。45 のルールを影響度順に 8 分野へ整理しています。
主な機能
- 018 分野に整理された 45 のルール
- 02性能への影響度で優先順位付け
- 03非同期処理とバンドルの最適化
- 04サーバー側とクライアント側の指針
- 05説明とコード例を収録
活用シーン
- 01React コンポーネントや Next.js ページの作成
- 02アプリの性能問題のレビュー
- 03既存の React や Next.js コードのリファクタリング
- 04バンドルサイズや読み込み時間の最適化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mavcui/ agent-skills-hunter --skill vercel-react-best-practicesインストール後、Claude Code で/vercel-react-best-practicesを入力して読み込まれたか確認します。
詳細
Vercel React ベストプラクティス
Vercel が管理する、React および Next.js アプリケーション向けの包括的なパフォーマンス最適化ガイドです。8 つのカテゴリーにわたる 45 のルールが含まれており、自動リファクタリングとコード生成を導くため、影響度の高い順に優先順位が付けられています。
適用するタイミング
以下の場合に、これらのガイドラインを参照してください。
- 新しい React コンポーネントまたは Next.js ページを作成するとき
- データ取得(クライアント側またはサーバー側)を実装するとき
- パフォーマンス上の問題についてコードをレビューするとき
- 既存の React/Next.js コードをリファクタリングするとき
- バンドルサイズや読み込み時間を最適化するとき
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | ウォーターフォールの解消 | CRITICAL | async- |
| 2 | バンドルサイズの最適化 | CRITICAL | bundle- |
| 3 | サーバーサイドのパフォーマンス | HIGH | server- |
| 4 | クライアントサイドのデータ取得 | MEDIUM-HIGH | client- |
| 5 | 再レンダリングの最適化 | MEDIUM | rerender- |
| 6 | レンダリングのパフォーマンス | MEDIUM | rendering- |
| 7 | JavaScript のパフォーマンス | LOW-MEDIUM | js- |
| 8 | 高度なパターン | LOW | advanced- |
クイックリファレンス
1. ウォーターフォールの解消(CRITICAL)
async-defer-await- await を実際に使用する分岐の中に移動しますasync-parallel- 独立した処理には Promise.all() を使用しますasync-dependencies- 部分的な依存関係には better-all を使用しますasync-api-routes- API ルートではプロミスを早めに開始し、await を遅らせますasync-suspense-boundaries- Suspense を使用してコンテンツをストリーミングします
2. バンドルサイズの最適化(CRITICAL)
bundle-barrel-imports- 直接インポートし、バレルファイルを避けますbundle-dynamic-imports- 重いコンポーネントには next/dynamic を使用しますbundle-defer-third-party- ハイドレーション後に分析/ロギングを読み込みますbundle-conditional- 機能が有効になったときだけモジュールを読み込みますbundle-preload- 体感速度を高めるため、ホバー/フォーカス時にプリロードします
3. サーバーサイドのパフォーマンス(HIGH)
server-cache-react- リクエストごとの重複排除に React.cache() を使用しますserver-cache-lru- リクエストをまたぐキャッシュには LRU キャッシュを使用しますserver-serialization- クライアントコンポーネントに渡すデータを最小限にしますserver-parallel-fetching- コンポーネントを再構成して、データ取得を並列化しますserver-after-nonblocking- ノンブロッキング処理には after() を使用します
4. クライアントサイドのデータ取得(MEDIUM-HIGH)
client-swr-dedup- リクエストの自動重複排除には SWR を使用しますclient-event-listeners- グローバルイベントリスナーの重複を排除します
5. 再レンダリングの最適化(MEDIUM)
rerender-defer-reads- コールバック内でのみ使用する状態を購読しないようにしますrerender-memo- コストの高い処理をメモ化したコンポーネントに切り出しますrerender-dependencies- エフェクトではプリミティブな依存値を使用しますrerender-derived-state- 生の値ではなく、派生した真偽値を購読しますrerender-functional-setstate- 安定したコールバックには関数形式の setState を使用しますrerender-lazy-state-init- コストの高い値には useState に関数を渡しますrerender-transitions- 緊急性の低い更新には startTransition を使用します
6. レンダリングのパフォーマンス(MEDIUM)
rendering-animate-svg-wrapper- SVG 要素ではなく、ラッパーの div をアニメーションさせますrendering-content-visibility- 長いリストには content-visibility を使用しますrendering-hoist-jsx- 静的な JSX をコンポーネントの外に切り出しますrendering-svg-precision- SVG の座標精度を下げますrendering-hydration-no-flicker- クライアント専用データにはインラインスクリプトを使用しますrendering-activity- 表示/非表示の切り替えには Activity コンポーネントを使用しますrendering-conditional-render- 条件分岐には && ではなく三項演算子を使用します
7. JavaScript のパフォーマンス(低〜中)
js-batch-dom-css- クラスまたは cssText で CSS の変更をまとめるjs-index-maps- 繰り返し検索する場合は Map を作成するjs-cache-property-access- ループ内でオブジェクトのプロパティをキャッシュするjs-cache-function-results- モジュールレベルの Map に関数の結果をキャッシュするjs-cache-storage- localStorage/sessionStorage の読み取りをキャッシュするjs-combine-iterations- 複数の filter/map を 1 つのループにまとめるjs-length-check-first- 時間のかかる比較の前に配列の長さを確認するjs-early-exit- 関数から早期に return するjs-hoist-regexp- ループの外で RegExp を作成するjs-min-max-loop- sort の代わりにループで最小値/最大値を求めるjs-set-map-lookups- O(1) の検索には Set/Map を使うjs-tosorted-immutable- 不変性を保つために toSorted() を使う
8. 高度なパターン(低)
advanced-event-handler-refs- イベントハンドラーを ref に保存するadvanced-use-latest- 安定したコールバック ref には useLatest を使う
使用方法
詳しい説明とコード例については、各ルールのファイルを参照してください。
rules/async-parallel.md
rules/bundle-barrel-imports.md
rules/_sections.md
各ルールのファイルには、以下が含まれます。
- 重要な理由の簡単な説明
- 誤ったコード例とその説明
- 正しいコード例とその説明
- 追加の背景情報と参考資料
完全版ドキュメント
すべてのルールを詳しく展開した完全なガイドについては、AGENTS.md を参照してください。
コメント
Markdown 対応