Next.js の App Router を使用したサイトを開いた際に、汎用的なブラウザタブアイコンが表示された場合、favicon が欠如しているのはメタデータ設定が不完全なためである可能性が高いです。

Prerequisites

Step‑by‑step implementation

  1. アイコンファイルを生成します。 Mzu favicondl を使用して、少なくとも次の 3 つのファイルを作成してください。
    • favicon.svg – 推奨されるスケーラブル形式。
    • favicon.ico – /favicon.ico を要求するブラウザ向けのレガシーフォールバック。
    • apple-touch-icon.png – 任意の Apple Touch アイコン。
    これらのファイルをプロジェクトの public フォルダに保存します。
  2. app/layout.tsx でメタデータをエクスポートします。 App Router はレイアウトファイルから metadata エクスポートを読み取ります。先ほど配置したファイルを参照する icons オブジェクトを追加してください。
    <pre><code>export const metadata = {
      title: 'My Next.js Site',
      icons: {
        icon: '/favicon.ico', // legacy fallback
        shortcut: '/favicon.ico', // shortcut icon for older browsers
        apple: '/apple-touch-icon.png', // Apple Touch icon (optional)
        other: [
          { rel: 'icon', url: '/favicon.svg', type: 'image/svg+xml', sizes: 'any' }
        ]
      }
    };
    </code></pre>
    これは Next.js が公式にドキュメントしているファイルベースのメタデータアプローチに一致します。
  3. 生成された <head> の出力を確認します。 npm run dev を実行し、ページのソースを開いてください。次のような link タグが出力されているはずです。
    &lt;link rel='icon' href='/favicon.ico'&gt;
    &lt;link rel='shortcut icon' href='/favicon.ico'&gt;
    &lt;link rel='apple-touch-icon' href='/apple-touch-icon.png'&gt;
    &lt;link rel='icon' href='/favicon.svg' type='image/svg+xml' sizes='any'&gt;
    これらのタグは自動的に生成されるため、手動で記述する必要はありません。
  4. 複数のブラウザでテストします。 Chrome、Safari、Firefox でサイトを開いてください。各ブラウザは高 DPI 画面では SVG アイコンを表示し、古いバージョンでは ICO ファイルにフォールバックします。
    • Chrome は type='image/svg+xml' が存在する場合、SVG を優先します。
    • Safari はホーム画面用ショートカットとして Apple Touch アイコンを使用します。
    • Firefox は rel='icon' エントリを尊重し、SVG が欠如している場合は ICO ファイルをキャッシュします。
  5. デプロイします。 変更をホスティングプロバイダー(Vercel、Netlify など)にプッシュしてください。public フォルダは静的に配信されるため、ビルドが完了した直後からアイコンが利用可能になります。

Common pitfalls

Conclusion

App Router が単一の metadata エクスポートから <link> タグを自動生成するようにすれば、favicon 設定を宣言的かつ将来にわたって保守しやすくなります。上記の手順は生成、配置、メタデータエクスポート、検証、デプロイを網羅しており、空白のタブアイコンから洗練されたブランド表現へ数分で移行できます。

SVG と ICO ファイルを手早く作成したい場合は、Mzu favicondl を試してください。App Router のアプローチに必要なファイル一式を生成してくれます。

Check the documented requirements

Next.js は metadata file conventions において favicon とアプリアイコンの取り扱いを文書化しています。