importGoogleAnalyticsfrom'@/components/GoogleAnalytics'// 途中省略...exportdefaultfunctionRootLayout({ children }:{ children:React.ReactNode}):JSX.Element{return(<htmllang='en'><head><GoogleAnalytics/></head><bodyclassName={zen_kaku_gothic_new.className}>{children}</body></html>)}
Google Analyticsを読み込んでいる場所はapp/layout.tsxになります。
本来読み込まれる場所は<head>で合っていますでしょうか?
色々と原因を調べて見たのですが、
他に<head>に取り入れているのはSEO対策のMetadataのtitleとdescriptionをそれぞれのディレクトリのlayout.tsxで書いていますがそこまで影響はないと考えています。
Discussion
はじめまして!Masahiroと申します。
Next.jsのGoogle Analyticsの導入について質問があります。
今個人でアプリを作っているのですが、kazukiさんの記事を参考に作っています。
下記のコードで
<head>内でGoogleAnalytics コンポーネントを読み込んでいるのですがchromeの検証ツールで見てみると
scriptの読み込みが
<body>内に読み込まれてしまいます。しかし、google Analyticsは正常に計測されています(計測は本番環境のみ)
Google Analyticsを読み込んでいる場所は
app/layout.tsxになります。本来読み込まれる場所は
<head>で合っていますでしょうか?色々と原因を調べて見たのですが、
他に
<head>に取り入れているのはSEO対策のMetadataのtitleとdescriptionをそれぞれのディレクトリのlayout.tsxで書いていますがそこまで影響はないと考えています。原因などは分かりますでしょうか?
ソースコードは下記になります。
github
Masahiroさん、コメントありがとうございます!
おっしゃる通り、
<head>で<GoogleAnalytics />を読み込んでも実際には<body>内で読み込まれるようです。これは
GoogleAnalytics.tsxのnext/scriptのstrategyをlazyOnloadやafterInteractiveで指定しているからだと思われます。GitHub でも類似 Issue が過去に上がっています。
特に動作上で問題を感じていないのでこのまま運用しようと思っていますが、もし何か計測で問題があるようでしたらご指摘いただけますと幸いです!
ご返信ありがとうございます!
参考資料の共有もありがとうございます!
そういう挙動なんですね!
現状、google analyticsで計測が出来ていて、特に問題は出ていないです!
また、何か問題がありましたら相談させてください!