mcpField
N
nextjs-best-practices

nextjs-best-practices

github.com/sickn33開発48.7k7.4k 回インストール今日更新
リポジトリ

nextjs-best-practices について

Next.js App Router 開発の実践ガイドで、コンポーネント、データ取得、ルーティング、キャッシュ、パフォーマンスを扱います。Next.js アプリの実装やレビューに役立ちます。

主な機能

  1. 01Server/Client Component の選択
  2. 02データ取得とキャッシュ戦略
  3. 03App Router のルート構成
  4. 04API Route Handler の実践
  5. 05画像とバンドルの最適化
  6. 06Server Action の安全性確認

活用シーン

  1. 01ページコンポーネントのデータ取得設計
  2. 02キャッシュと再検証の設定
  3. 03並列ルートとエラーページの構成
  4. 04Server Action の入力検証確認

インストール

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

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill nextjs-best-practices

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

詳細

Next.js のベストプラクティス

Next.js App Router 開発の原則です。


1. サーバーコンポーネントとクライアントコンポーネント

判断フローチャート
Does it need...?
│
├── useState, useEffect, event handlers
│   └── Client Component ('use client')
│
├── Direct data fetching, no interactivity
│   └── Server Component (default)
│
└── Both? 
    └── Split: Server parent + Client child
デフォルトの設定
種類用途
サーバーデータ取得、レイアウト、静的コンテンツ
クライアントフォーム、ボタン、インタラクティブな UI

2. データ取得のパターン

フェッチ戦略
パターン用途
デフォルトバージョン/設定に依存します。現在のフェッチのデフォルトはキャッシュされません
明示的なキャッシュデータを共有できる場合は fetch(url, { cache: "force-cache" })
再検証ISR(時間ベースの更新)
キャッシュなし動的(リクエストごと)
データフロー
ソースパターン
データベースサーバーコンポーネントでフェッチ
APIキャッシュを使用してフェッチ
ユーザー入力クライアントの状態+サーバーアクション

3. ルーティングの原則

ファイル規約
ファイル目的
page.tsxルート UI
layout.tsx共通レイアウト
loading.tsx読み込み状態
error.tsxエラーバウンダリ
not-found.tsx404 ページ
ルートの構成
パターン用途
ルートグループ (name)URL に影響させずに整理
パラレルルート @slot同じ階層に複数のページを配置
インターセプティングルート (.)モーダルオーバーレイ

4. API ルート

ルートハンドラー
メソッド用途
GETデータの読み取り
POSTデータの作成
PUT/PATCHデータの更新
DELETEデータの削除
ベストプラクティス
  • Zod で入力を検証する
  • 適切なステータスコードを返す
  • エラーを適切に処理する
  • 依存関係とデプロイ環境でのサポートに応じて Node.js または Edge ランタイムを選択する。Edge で Node API が利用できると想定しない

5. パフォーマンスの原則

画像の最適化
  • next/image コンポーネントを使用する
  • ファーストビューに表示される画像には priority を設定する
  • ぼかしプレースホルダーを指定する
  • レスポンシブサイズを使用する
バンドルの最適化
  • 重いコンポーネントには動的インポートを使用する
  • ルートベースのコード分割(自動)
  • バンドルアナライザーで分析する

6. メタデータ

静的と動的
種類用途
静的エクスポート固定メタデータ
generateMetadataルートごとの動的メタデータ
必須タグ
  • title(50~60 文字)
  • description(150~160 文字)
  • Open Graph 画像
  • canonical URL

7. キャッシュ戦略

キャッシュレイヤー
レイヤー制御方法
リクエストfetch オプション
データrevalidate/タグ
ルート全体ルート設定
再検証
方法用途
時間ベースrevalidate: 60
オンデマンドrevalidatePath/Tag
キャッシュなしno-store

8. サーバーアクション

ユースケース
  • フォーム送信
  • データの変更
  • 再検証のトリガー
ベストプラクティス
  • 'use server' を指定する
  • 各アクション/ハンドラーでサーバー側の認証と認可を行う。エクスポートされたアクションは呼び出し可能なエンドポイントです
  • すべての入力を検証する
  • 型付きのレスポンスを返す
  • エラーを処理する

9. アンチパターン

❌ しないこと✅ すること
あらゆる場所で 'use client' を使うデフォルトでサーバーを使用する
クライアントコンポーネントでフェッチするサーバーでフェッチする
読み込み状態を省略するloading.tsx を使用する
エラーバウンダリを無視するerror.tsx を使用する
クライアントバンドルを大きくする動的インポートを使用する

10. プロジェクト構成

app/
├── (marketing)/     # Route group
│   └── page.tsx
├── (dashboard)/
│   ├── layout.tsx   # Dashboard layout
│   └── page.tsx
├── api/
│   └── [resource]/
│       └── route.ts
└── components/
    └── ui/

覚えておきましょう: サーバーコンポーネントがデフォルトなのには理由があります。まずサーバーコンポーネントから始め、必要な場合にのみクライアントコンポーネントを追加してください。

使用する場面

このスキルは、概要に記載されたワークフローまたはアクションを実行する場合に適用できます。

バージョンの範囲

キャッシュに関するアドバイスを適用する前に、インストールされている Next.js のバージョンと Cache Components が有効かどうかを確認してください。公式のキャッシュガイドでは、これらのモデルが区別されています。データの鮮度と無効化を明示的にテストしてください。ユーザー固有の秘密情報や、認可に依存するレスポンスを共有キャッシュに入れないでください。

制限事項

  • このスキルは、タスクが上記のスコープに明確に一致する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代替として扱わないでください。
  • 必要な入力、権限、安全境界、成功基準が欠けている場合は、作業を中断して確認を求めてください。

コメント