docs/01-app/03-api-reference/05-config/01-next-config-js/instrumentationClientInject.mdx
instrumentationClientInject is a list of modules that are imported on the client for their side effects before the user's instrumentation-client.{js,ts} file runs, ahead of React hydration.
This option is primarily intended for next.config.js plugins (for example, wrappers like withSentry or withAnalytics that extend a project's config). It lets such a plugin inject its own client instrumentation module — including a navigation hook — without requiring every project to author or modify an instrumentation-client file. Application code should generally continue to use the instrumentation-client.{js,ts} file convention directly.
A plugin typically appends its own module to whatever the project already has configured:
module.exports = function withMyInstrumentation(nextConfig = {}) {
return {
...nextConfig,
instrumentationClientInject: [
...(nextConfig.instrumentationClientInject ?? []),
'my-instrumentation-package/client',
],
}
}
It can also be set directly:
/** @type {import('next').NextConfig} */
module.exports = {
instrumentationClientInject: [
'my-analytics-package',
'./lib/sentry-client.js',
],
}
Each entry is one of:
node_modules.Modules run on the client in this order:
instrumentationClientInject, in array order.instrumentation-client.{js,ts} file, if present.Each injected module may optionally export an onRouterTransitionStart function with the same signature as the one documented for the instrumentation-client file convention. Next.js composes a single hook that fans out to every exported onRouterTransitionStart on each navigation, calling them in array order, with the user file's hook running last.
// Side-effectful setup runs at load time.
setupSentry()
export function onRouterTransitionStart(url, navigationType) {
recordNavigationBreadcrumb(url, navigationType)
}
Modules that do not export onRouterTransitionStart are skipped during navigation.
| Version | Changes |
|---|---|
v16.3.0 | instrumentationClientInject introduced |