nextjs-performance について
Next.js プロジェクトのパフォーマンス開発スキルで、データ取得、バンドルサイズ、Server Actions、本番ビルドの実践方法をまとめています。フロントエンドを最適化し、変更前に重要な実装パターンを確認する開発者向けです。
主な機能
- 01Promise.all による独立したデータ取得の並列化
- 02Suspense と await の遅延による低速リクエストの処理
- 03barrel import の回避と重いコンポーネントの動的読み込み
- 04Server Actions 内での認証と所有権確認
- 05本番ビルドと PR 前チェックリスト
活用シーン
- 01独立したページデータ取得の逐次待ちを削減
- 02Next.js フロントエンドのバンドルサイズ管理
- 03Server Actions の認証・所有権チェックの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ srbhr/ resume-matcher --skill nextjs-performanceインストール後、Claude Code で/nextjs-performanceを入力して読み込まれたか確認します。
詳細
Next.js のパフォーマンス
コードを書く前に
- 完全なパターンを確認するには、
docs/agent/architecture/nextjs-critical-fixes.mdを読みます apps/frontend/components/にある既存のコンポーネントを確認します
重要なルール
ウォーターフォール
- 独立したフェッチには
Promise.all()を使用します - 遅いデータは
<Suspense>境界でラップします - 必要に応じて、分岐の中に
awaitを遅らせます
// WRONG
const resumes = await fetchResumes();
const jobs = await fetchJobs();
// RIGHT
const [resumes, jobs] = await Promise.all([fetchResumes(), fetchJobs()]);
バンドルサイズ
- バレルインポートは禁止:
import X from 'lucide-react'は誤りです - 直接インポートを使用:
import X from 'lucide-react/dist/esm/icons/x' - 重いコンポーネント(エディター、グラフ、PDF)には
next/dynamicを使用します ssr: falseで分析機能の読み込みを遅らせます
import dynamic from 'next/dynamic';
const HeavyEditor = dynamic(() => import('./HeavyEditor'), { ssr: false });
Server Actions
- 認証はミドルウェアだけでなく、アクションの内部で必ず確認します
- ミューテーションの前に、リソースの所有権を確認します
本番ビルド
npm run devではなく、npm run build && npm run startを実行します- Docker では standalone 出力を使用する必要があります
PR 前のチェックリスト
[ ] No sequential awaits for independent data
[ ] Icons imported directly (not barrel)
[ ] Heavy components use next/dynamic
[ ] Server Actions have auth inside
[ ] Suspense around slow fetches
コメント
Markdown 対応