Capítulo 90 de 456
@next/third-parties é uma biblioteca experimental (instalar com @latest/canary) que fornece componentes otimizados para integrações populares de terceiros (foco em Google) — carregando scripts com o melhor timing possível sem trabalho manual de configuração.
GoogleTagManager: instancia um container GTM; por padrão busca o script inline após a hidratação. Pode ser colocado no root layout (todas as rotas) ou numa page específica.sendGTMEvent: envia eventos ao dataLayer — exige que <GoogleTagManager /> esteja incluído em algum ancestral, page ou no mesmo arquivo.gtmScriptUrl: permite apontar para um servidor de tagging próprio (server-side tagging); gtmId pode ser omitido quando esse URL é fornecido.GoogleAnalytics: injeta Google Analytics 4 via gtag.js; recomenda-se usar via GTM se este já estiver presente, em vez de componente separado.sendGAEvent: envia eventos de interação via dataLayer, análogo ao sendGTMEvent.browser history state automaticamente — navegação client-side entre rotas Next.js já dispara pageview sem config extra (requer "Enhanced Measurement" habilitado no Admin).GoogleMapsEmbed: embed de Google Maps com lazy-load via atributo loading por padrão.YouTubeEmbed: usa lite-youtube-embed por baixo dos panos para carregamento mais rápido que o iframe padrão do YouTube.import { GoogleTagManager } from '@next/third-parties/google'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<GoogleTagManager gtmId="GTM-XYZ" />
<body>{children}</body>
</html>
)
}
'use client'
import { sendGTMEvent } from '@next/third-parties/google'
export function EventButton() {
return (
<button onClick={() => sendGTMEvent({ event: 'buttonClicked', value: 'xyz' })}>
Send Event
</button>
)
}
dataLayer a partir de um Client Component.import { YouTubeEmbed } from '@next/third-parties/google'
export default function Page() {
return <YouTubeEmbed videoid="ogfYd705cRs" height={400} params="controls=0" />
}
| GoogleTagManager | Tipo | Descrição |
|---|---|---|
gtmId | Obrigatório* | ID do container GTM (GTM-...) |
gtmScriptUrl | Opcional* | URL do script GTM (default: googletagmanager.com/gtm.js) |
dataLayer | Opcional | Objeto para instanciar o container |
dataLayerName | Opcional | Nome da data layer (default dataLayer) |
auth / preview | Opcional | Parâmetros de ambiente (gtm_auth/gtm_preview) |
*gtmId pode ser omitido se gtmScriptUrl for fornecido.
| GoogleAnalytics | Tipo | Descrição |
|---|---|---|
gaId | Obrigatório | Measurement ID (G-...) |
dataLayerName | Opcional | Nome da data layer |
debugMode | Opcional | Habilita debug mode |
nonce | Opcional | Nonce de CSP |
GoogleAnalytics separado quando GTM já está presente: recomenda-se configurar Analytics via o próprio GTM em vez de duplicar componentes.@next/third-parties ainda é experimental — instale com tag latest ou canary.sendGTMEvent/sendGAEvent exigem que o componente correspondente já esteja montado em algum ancestral da árvore.YouTubeEmbed e GoogleMapsEmbed já vêm com lazy-load configurado, reduzindo JS desnecessário acima da dobra.next/script, mecanismo de baixo nível sobre o qual essas integrações são construídas.