[Next.js AppRouter]Google Analyticsを設定する

広告Next.js
2023年10月25日2024年1月11日

Next.js(App Router)で Google Analytics を利用する手順についてまとめていきます。

1. env.production に環境変数を設定する

NEXT_PUBLIC_GA_ID = "G-<測定ID>";

2. GoogleAnalytics.tsx を作成する

import Script from "next/script";
export const GA_MEASUREMENT_ID = process.env.NEXT_PUBLIC_GA_ID || "";
 
export function GoogleAnalytics() {
  if (!GA_MEASUREMENT_ID) {
    return <></>;
  }
  return (
    <>
      <Script
        strategy="afterInteractive"
        src={`https://www.googletagmanager.com/gtag/js?id=${GA_MEASUREMENT_ID}`}
      ></Script>
      <Script id="google-analytics" strategy="afterInteractive">
        {`      
          window.dataLayer = window.dataLayer || [];
          function gtag(){dataLayer.push(arguments);}
          gtag('js', new Date());
 
          gtag('config', '${GA_MEASUREMENT_ID}');
        `}
      </Script>
    </>
  );
}
export default GoogleAnalytics;

strategy="afterInteractive" は、next/script の機能で、afterInteractive は、ページの読み込みが完了した後に実行されるようになります。

Optimizing: Scripts | Next.js

Optimize 3rd party scripts with the built-in Script component.nextjs.orgnextjs.org
Optimizing: Scripts | Next.js

3. layout.tsx に GoogleAnalytics コンポーネントを追加する

import GoogleAnalytics from "@/components/GoogleAnalytics";
export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <head>
        <GoogleAnalytics />
      </head>
      <body>{children}</body>
    </html>
  );
}

参考

Using Google Analytics with Next.js (through `next/script`)

nextjs.orgnextjs.org
Using Google Analytics with Next.js (through `next/script`)