Third Party Libraries
@next/third-parties is a library that provides a collection of components and utilities that improve the performance and developer experience of loading popular third-party libraries in your Next.js application.
All third-party integrations provided by @next/third-parties have been optimized for performance and ease of use.
Getting Started
To get started, install the @next/third-parties library:
npm install @next/third-parties@latest next@latest
@next/third-parties is currently an experimental library under active development. We recommend installing it with the latest or canary flags while we work on adding more third-party integrations.
Google Third-Parties
All supported third-party libraries from Google can be imported from @next/third-parties/google.
Google Tag Manager
The GoogleTagManager component can be used to instantiate a Google Tag Manager container to your page. By default, it fetches the original inline script after hydration occurs on the page.
To load Google Tag Manager for all routes, include the component directly in your custom _app and
pass in your GTM container ID:
import { GoogleTagManager } from "@next/third-parties/google";
export default function MyApp({ Component, pageProps }) {
return (
<>
<Component {...pageProps} />
<GoogleTagManager gtmId="GTM-XYZ" />
</>
);
}
To load Google Tag Manager for a single route, include the component in your page file:
import { GoogleTagManager } from "@next/third-parties/google";
export default function Page() {
return <GoogleTagManager gtmId="GTM-XYZ" />;
}
Sending Events
The sendGTMEvent function can be used to track user interactions on your page by sending events
using the dataLayer object. For this function to work, the <GoogleTagManager /> component must be
included in either a parent layout, page, or component, or directly in the same file.
import { sendGTMEvent } from "@next/third-parties/google";
export function EventButton() {
return (
<div>
<button
onClick={() => sendGTMEvent("event", "buttonClicked", { value: "xyz" })}
>
Send Event
</button>
</div>
);
}
Refer to the Tag Manager developer documentation to learn about the different variables and events that can be passed into the function.
Options
Options to pass to the Google Tag Manager. For a full list of options, read the Google Tag Manager docs.
| Name | Type | Description |
|---|---|---|
gtmId | Required | Your GTM container ID. Usually starts with GTM-. |
dataLayer | Optional | Data layer object to instantiate the container with. |
dataLayerName | Optional | Name of the data layer. Defaults to dataLayer. |
auth | Optional | Value of authentication parameter (gtm_auth) for environment snippets. |
preview | Optional | Value of preview parameter (gtm_preview) for environment snippets. |
Google Analytics
The GoogleAnalytics component can be used to include Google Analytics
4 to your page via the Google tag
(gtag.js). By default, it fetches the original scripts after hydration occurs on the page.
Recommendation: If Google Tag Manager is already included in your application, you can configure Google Analytics directly using it, rather than including Google Analytics as a separate component. Refer to the documentation to learn more about the differences between Tag Manager and
gtag.js.
To load Google Analytics for all routes, include the component directly in your custom _app and
pass in your measurement ID:
import { GoogleAnalytics } from "@next/third-parties/google";
export default function MyApp({ Component, pageProps }) {
return (
<>
<Component {...pageProps} />
<GoogleAnalytics gaId="G-XYZ" />
</>
);
}
To load Google Analytics for a single route, include the component in your page file:
import { GoogleAnalytics } from "@next/third-parties/google";
export default function Page() {
return <GoogleAnalytics gaId="G-XYZ" />;
}
Sending Events
The sendGAEvent function can be used to measure user interactions on your page by sending events
using the dataLayer object. For this function to work, the <GoogleAnalytics /> component must be
included in either a parent layout, page, or component, or directly in the same file.
import { sendGAEvent } from "@next/third-parties/google";
export function EventButton() {
return (
<div>
<button
onClick={() => sendGAEvent("event", "buttonClicked", { value: "xyz" })}
>
Send Event
</button>
</div>
);
}
Refer to the Google Analytics developer documentation to learn more about event parameters.
Tracking Pageviews
Google Analytics automatically tracks pageviews when the browser history state changes. This means that client-side navigations between Next.js routes will send pageview data without any configuration.
To ensure that client-side navigations are being measured correctly, verify that the “Enhanced Measurement” property is enabled in your Admin panel and the