<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhammad Mejanul Haque</title>
    <description>The latest articles on DEV Community by Muhammad Mejanul Haque (@mejanhaque).</description>
    <link>https://dev.to/mejanhaque</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F397683%2F32452a5c-66a7-4c84-9851-beb8b56f523a.jpg</url>
      <title>DEV Community: Muhammad Mejanul Haque</title>
      <link>https://dev.to/mejanhaque</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mejanhaque"/>
    <language>en</language>
    <item>
      <title>Google Analytics With Next JS</title>
      <dc:creator>Muhammad Mejanul Haque</dc:creator>
      <pubDate>Fri, 14 Aug 2020 06:13:49 +0000</pubDate>
      <link>https://dev.to/mejanhaque/google-analytics-with-next-js-1a51</link>
      <guid>https://dev.to/mejanhaque/google-analytics-with-next-js-1a51</guid>
      <description>&lt;p&gt;In the old version of Nextjs, we had to add the scripts in &lt;code&gt;_document.jsx&lt;/code&gt; which would be heavy on loading performance. Thanks to the new Script Nextjs component, we can add scripts anywhere in the app, and it will also take care of optimizing the app performance. &lt;/p&gt;

&lt;p&gt;If you are wondering about can I implement the same strategy in other react meta frameworks, check out &lt;a href="https://dev.toPartytown"&gt;https://partytown.builder.io/&lt;/a&gt; which works great with Astro, Gatsby, etc.&lt;/p&gt;

&lt;p&gt;First, add your project to Google Analytics then copy the GA measurement id from &lt;code&gt;Admin/Date Streams/Steam Details&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Then create a &lt;code&gt;.env&lt;/code&gt; file and add &lt;code&gt;NEXT_PUBLIC_GA_ID=YOUR_GA_MEASUREMENT ID&lt;/code&gt;. Restart the app if it's already running. &lt;/p&gt;

&lt;p&gt;Finally, Add the code below in your global Jsx file like &lt;code&gt;_app.jsx&lt;/code&gt; or &lt;code&gt;_document.jsx&lt;/code&gt; etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Script&lt;/span&gt;
   &lt;span class="na"&gt;strategy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"afterInteractive"&lt;/span&gt;
   &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`https://www.googletagmanager.com/gtag/js?id=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_GA_ID&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Script&lt;/span&gt;
   &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"gtag-init"&lt;/span&gt;
   &lt;span class="na"&gt;strategy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"afterInteractive"&lt;/span&gt;
   &lt;span class="na"&gt;dangerouslySetInnerHTML&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;__html&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());
            gtag('config', '&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NEXT_PUBLIC_GA_ID&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;', {
              page_path: window.location.pathname,
            });
          `&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2ruVnpJ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/khrmia4289cp2lduyo9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2ruVnpJ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/khrmia4289cp2lduyo9z.png" alt="Alt Text" width="330" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure to add the environment variable in your hosting server too.&lt;/p&gt;

&lt;p&gt;You can also check this Nextjs example from &lt;a href="https://github.com/vercel/next.js/blob/canary/examples/with-google-analytics"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Article
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.alhaqi.com/blog/tailwind-css-with-next-js-and-typography"&gt;Tailwind CSS With Next.js and Typography&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>react</category>
      <category>nextjs</category>
      <category>googleanalytics</category>
      <category>script</category>
    </item>
  </channel>
</rss>
