mcpField
V
vercel-react-best-practices

vercel-react-best-practices

github.com/calesthio開発73.4k1.1k 回インストール2 日前に更新
リポジトリ

vercel-react-best-practices について

Vercel が保守する、React と Next.js 開発者向けのパフォーマンス指針スキルです。優先度付きのルールで、データ取得のウォーターフォール、バンドルサイズ、サーバー・クライアント性能、描画、JavaScript の最適化を扱います。

主な機能

  1. 018 カテゴリーの優先度付きルール
  2. 02非同期リクエストのウォーターフォール回避
  3. 03バンドルサイズと読み込みの最適化
  4. 04サーバーとクライアントのデータ取得改善
  5. 05再レンダーと描画負荷の削減
  6. 06JavaScript 処理の最適化

活用シーン

  1. 01React または Next.js の性能レビュー
  2. 02データ取得パターンのリファクタリング
  3. 03バンドルサイズと読み込み時間の削減
  4. 04コード生成や自動リファクタリングの指針

インストール

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

$npx skills add https://github.com/calesthio/openmontage --skill vercel-react-best-practices

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

同梱ファイル

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

AGENTS.md
README.md
rules/
_sections.md
_template.md
advanced-event-handler-refs.md
advanced-init-once.md
advanced-use-latest.md
async-api-routes.md
async-defer-await.md
async-dependencies.md
async-parallel.md
async-suspense-boundaries.md
bundle-barrel-imports.md
bundle-conditional.md
bundle-defer-third-party.md
bundle-dynamic-imports.md
bundle-preload.md
client-event-listeners.md
client-localstorage-schema.md
client-passive-event-listeners.md
client-swr-dedup.md
js-batch-dom-css.md
js-cache-function-results.md
js-cache-property-access.md
js-cache-storage.md
js-combine-iterations.md
js-early-exit.md
js-flatmap-filter.md
js-hoist-regexp.md
js-index-maps.md

詳細

Vercel React ベストプラクティス

Vercel がメンテナンスする、React および Next.js アプリケーション向けの包括的なパフォーマンス最適化ガイドです。影響度に基づいて優先順位付けされた 8 つのカテゴリ、65 のルールが含まれており、自動リファクタリングとコード生成を支援します。

拡張リファレンス: このディレクトリの AGENTS.md は、上流の詳細ガイド(Vercel からベンダー提供されたもの)です。このスキルにのみ適用される補足資料です。読み込み可能なエントリーポイントであり、正とする情報源は SKILL.md です。リポジトリルートの AGENTS.md / AGENT_GUIDE.md に優先したり、それらを拡張したりするものではありません。

適用する場面

次のような場合に、これらのガイドラインを参照してください。

  • 新しい React コンポーネントや Next.js ページを作成するとき
  • データ取得(クライアント側またはサーバー側)を実装するとき
  • パフォーマンス上の問題がないかコードをレビューするとき
  • 既存の React/Next.js コードをリファクタリングするとき
  • バンドルサイズや読み込み時間を最適化するとき

優先度別のルールカテゴリ

優先度カテゴリ影響度プレフィックス
1ウォーターフォールの排除CRITICALasync-
2バンドルサイズの最適化CRITICALbundle-
3サーバー側のパフォーマンスHIGHserver-
4クライアント側のデータ取得MEDIUM-HIGHclient-
5再レンダリングの最適化MEDIUMrerender-
6レンダリングのパフォーマンスMEDIUMrendering-
7JavaScript のパフォーマンスLOW-MEDIUMjs-
8高度なパターンLOWadvanced-

クイックリファレンス

1. ウォーターフォールの排除(CRITICAL)
  • async-defer-await - await を実際に使用する分岐に移動する
  • async-parallel - 独立した処理には Promise.all() を使用する
  • async-dependencies - 一部の依存関係がある場合は better-all を使用する
  • async-api-routes - API ルートではプロミスを早めに開始し、待機は遅らせる
  • 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-auth-actions - API ルートと同様に、サーバーアクションを認証する
  • server-cache-react - リクエストごとの重複排除に React.cache() を使用する
  • server-cache-lru - リクエストをまたぐキャッシュには LRU キャッシュを使用する
  • server-dedup-props - RSC の props で重複したシリアライズを避ける
  • server-hoist-static-io - 静的な I/O(フォント、ロゴ)をモジュールレベルに引き上げる
  • server-serialization - クライアントコンポーネントに渡すデータを最小限にする
  • server-parallel-fetching - 取得処理を並列化できるようコンポーネントを再構成する
  • server-parallel-nested-fetching - Promise.all 内で各項目のネストされた取得処理を連鎖させる
  • server-after-nonblocking - ブロッキングしない処理には after() を使用する
4. クライアント側のデータ取得(MEDIUM-HIGH)
  • client-swr-dedup - リクエストの自動重複排除には SWR を使用する
  • client-event-listeners - グローバルイベントリスナーの重複を排除する
  • client-passive-event-listeners - スクロールにはパッシブリスナーを使用する
  • client-localstorage-schema - localStorage のデータにバージョンを付け、最小限にする
5. 再レンダリングの最適化(中)
  • rerender-defer-reads - コールバック内でのみ使用する状態を購読しない
  • rerender-memo - コストのかかる処理をメモ化されたコンポーネントに切り出す
  • rerender-memo-with-default-value - プリミティブでないデフォルトの props をコンポーネントの外に移動する
  • rerender-dependencies - エフェクトではプリミティブな依存関係を使用する
  • rerender-derived-state - 生の値ではなく、派生したブール値を購読する
  • rerender-derived-state-no-effect - エフェクトではなく、レンダリング中に状態を導出する
  • rerender-functional-setstate - 安定したコールバックには関数形式の setState を使用する
  • rerender-lazy-state-init - コストのかかる値には関数を useState に渡す
  • rerender-simple-expression-in-memo - 単純なプリミティブ値にはメモ化を使用しない
  • rerender-split-combined-hooks - 依存関係が独立したフックを分割する
  • rerender-move-effect-to-event - インタラクションのロジックをイベントハンドラーに記述する
  • rerender-transitions - 緊急性の低い更新には startTransition を使用する
  • rerender-use-deferred-value - 入力の応答性を保つため、コストのかかるレンダリングを遅延させる
  • rerender-use-ref-transient-values - 頻繁に変化する一時的な値には ref を使用する
  • rerender-no-inline-components - コンポーネント内でコンポーネントを定義しない
6. レンダリングパフォーマンス(中)
  • rendering-animate-svg-wrapper - SVG 要素ではなく、ラッパーの div をアニメーションさせる
  • rendering-content-visibility - 長いリストには content-visibility を使用する
  • rendering-hoist-jsx - 静的な JSX をコンポーネントの外に切り出す
  • rendering-svg-precision - SVG 座標の精度を下げる
  • rendering-hydration-no-flicker - クライアント専用のデータにはインラインスクリプトを使用する
  • rendering-hydration-suppress-warning - 想定される不一致の警告を抑制する
  • rendering-activity - 表示・非表示の切り替えには Activity コンポーネントを使用する
  • rendering-conditional-render - 条件分岐には && ではなく三項演算子を使用する
  • rendering-usetransition-loading - ローディング状態には useTransition を優先して使用する
  • rendering-resource-hints - プリロードには React DOM のリソースヒントを使用する
  • rendering-script-defer-async - script タグで defer または async を使用する
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 - min/max の取得には sort ではなくループを使用する
  • js-set-map-lookups - O(1) の検索には Set/Map を使用する
  • js-tosorted-immutable - イミュータブルにするには toSorted() を使用する
  • js-flatmap-filter - 1 回の処理でマッピングとフィルタリングを行うには flatMap を使用する
  • js-request-idle-callback - 重要度の低い処理をブラウザーのアイドル時間まで遅らせる
8. 高度なパターン(低)
  • advanced-event-handler-refs - イベントハンドラーを ref に保存する
  • advanced-init-once - アプリの読み込みごとにアプリを 1 回だけ初期化する
  • advanced-use-latest - コールバックの ref を安定させるために useLatest を使用する

使用方法

詳細な説明とコード例については、各ルールのファイルを参照してください。

rules/async-parallel.md
rules/bundle-barrel-imports.md

各ルールのファイルには、次の内容が含まれています。

  • 重要である理由の簡単な説明
  • 説明付きの誤ったコード例
  • 説明付きの正しいコード例
  • 追加の背景情報と参考資料

コンパイル済みドキュメント全文

すべてのルールを詳しく説明した完全なガイドについては、AGENTS.md を参照してください。

コメント