Next.js App RouterにおけるServer Components/Client Componentsの設計術を解説する記事です。App RouterのコンポーネントはデフォルトではServer Componentとして扱われる仕組みを踏まえ、'use client'は必要最小限、つまりインタラクティブ性が必要な「葉(リーフ)」の部分だけに留めるべきだと主張しています。

最上位のコンポーネントで'use client'を記述すると、配下のすべてのコンポーネントがクライアントバンドルに含まれてしまい、バンドルサイズが膨らむ問題が指摘されています。対策として、可能な限りServer Components側でデータフェッチを行うこと、フォーム処理にはServer Actionsを活用してAPI Routesの作成を減らすことが推奨されています。

出典が伝えている要点

  • Next.js App Routerのコンポーネントはデフォルトでは Server Component として扱われる
  • 'use client' は必要最小限にとどめ、インタラクティブ性が必要な「葉(リーフ)」の部分だけを Client Component 化すべきとされている
  • 最上位のコンポーネントで 'use client' を記述すると、配下のすべてのコンポーネントがクライアントバンドルに含まれる
  • 上記の結果としてバンドルサイズが膨らむと述べられている
  • 可能な限り Server Components 側でデータフェッチを行うことが推奨されている
  • フォーム処理に Server Actions を活用することで API Routes の作成を減らせるとされている

原文より

デフォルトはServer Component、インタラクティブ性が必要な部分だけをClient Componentにする

出典: zenn.dev

← 2026.09.18 の号を通しで読む