Capítulo 117 de 456
instrumentation-client.js|ts (raiz do projeto ou src/) roda código client-side (monitoring, analytics, polyfills) que executa após o HTML carregar mas antes da hidratação React começar, sem precisar exportar função específica.
onRouterTransitionStart(url, navigationType, event?): hook opcional para observar início de navegações do App Router; navigationType é 'push' | 'replace' | 'traverse'; erros dentro do hook são isolados e não afetam a navegação.event (experimental): requer experimental.instrumentationClientRouterTransitionEvents: true em next.config.ts; traz id, timestamp, fromRoutes (rotas visíveis antes da navegação, formato filesystem como /blog/[slug]), prefetchIntent ('full' | 'auto' | 'none' | null).Promise/import()/top-level await são fire-and-forget e podem resolver depois da hidratação já ter começado.instrumentationClientInject: opção de next.config.js para plugins (ex. withSentry) injetarem seu próprio módulo de instrumentação client, executando antes deste arquivo, em ordem de array.export function onRouterTransitionStart(
url: string,
navigationType: 'push' | 'replace' | 'traverse'
) {
console.log(url, navigationType)
}
event experimental.import ResizeObserverPolyfill from './lib/polyfills/resize-observer'
if (!window.ResizeObserver) {
window.ResizeObserver = ResizeObserverPolyfill
}
import() condicional para polyfill crítico: é fire-and-forget, pode aplicar depois da hidratação já ter começado, tarde demais para os componentes; use import estático + checagem síncrona.prefetchIntent sempre presente: é null em navegações programáticas (router.push()) ou back/forward do browser, sem link associado.instrumentation.js (server), este arquivo não precisa de export register, o próprio corpo do arquivo já executa.fetch, URL, Object.assign); só adicione polyfill para o que estiver fora dessa baseline.onRouterTransitionStart é o ponto certo para analytics de navegação client-side (page views, breadcrumbs de erro).instrumentationClientInject, executando antes do arquivo da aplicação.register/onRequestError.