Guia de tracking
Onde iniciar o coletor de analytics no Next.js, Vue/Nuxt e TanStack — sem quebrar o SSR.
Client
O tracking roda só no browser. Use a tag de script para zero dependências, ou crie uma instância de DataxamasTracking no escopo do módulo e chame start() quando o app montar.
app/layout.tsx
import Script from "next/script";
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
return (
<html lang="en">
<body>
{children}
<Script
src="https://dataxamas.izakdvlpr.com/dataxamas.js"
data-website-id="YOUR_WEBSITE_ID_HERE"
data-allow-localhost="true"
/>
</body>
</html>
);
}components/dataxamas-provider.tsx
"use client";
import { DataxamasTracking } from "dataxamas";
import { useEffect } from "react";
// Module scope: one instance for the whole app, never re-created on render.
const tracking = new DataxamasTracking({
websiteId: process.env.NEXT_PUBLIC_DATAXAMAS_WEBSITE_ID as string,
});
export function DataxamasProvider() {
useEffect(() => {
tracking.start();
}, []);
return null;
}app/layout.tsx
import { DataxamasProvider } from "@/components/dataxamas-provider";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<DataxamasProvider />
</body>
</html>
);
}O tracking precisa apenas do websiteId — nenhum token de API. O endpoint de ingest é público, então nada secreto vai para o seu bundle. Logs e captura de erros precisam de token; veja os guias de Logs e Exceptions.
Navegação client-side já está coberta: o coletor verifica o path atual a cada 500 ms e envia um PAGE_VIEW a cada mudança, então transições do App Router, do vue-router e do TanStack Router funcionam.
start() é um no-op silencioso em localhost e 127.0.0.1 a menos que você passe allowLocalhost: true (ou data-allow-localhost="true" na tag de script). É por isso que nada aparece em desenvolvimento.
Servidor
Não existe tracking no servidor. Chamar start() fora do browser lança erro, então mantenha a chamada dentro de um efeito, de um plugin browser-only ou atrás de um guard de window.
ssr.ts
// Throws: "DataxamasTracking: This SDK can only be used in a browser environment."
tracking.start();
// Next.js — inside a "use client" component effect
useEffect(() => {
tracking.start();
}, []);
// Nuxt — plugins/dataxamas.client.ts, the .client suffix is browser-only
// TanStack Start — useEffect in __root.tsx, or the client entry file
// Anywhere else, guard it by hand
if (typeof window !== "undefined") tracking.start();Criar a instância é seguro em qualquer lugar — só o start() exige browser. Comparação completa: Browser vs Servidor.