Configure under observatory in your app nuxt.config.ts.
export default defineNuxtConfig({
observatory: {
instrumentServer: true, // Instrument the server for SSR/Nitro fetch and composable tracking. Enable this when using SSR so server-side composable calls are captured. Disable for SPA projects to avoid double-registration caused by the transform running on both builds.
fetchDashboard: true, // Enable useFetch dashboard
provideInjectGraph: true, // Enable provide/inject graph
composableTracker: true, // Enable composable tracker
piniaTracker: true, // Enable Pinia store tracker
renderHeatmap: true, // Enable render heatmap
transitionTracker: true, // Enable transition tracker
traceViewer: true, // Enable trace viewer
composableNavigationMode: 'route', // 'route' clears entries on navigation (default), 'session' persists across navigation
heatmapThresholdCount: 5, // Highlight components with 5+ renders
heatmapThresholdTime: 16, // Highlight components with render time above this (ms)
heatmapHideInternals: true, // Hide node_modules and internal components in the render heatmap
debugRpc: false, // Enable RPC handshake debug logs (useful for troubleshooting)
maxFetchEntries: 200, // Max fetch entries to keep in memory
fetchPageSize: 20, // Rows loaded per infinite-scroll step in the useFetch Dashboard
maxPayloadBytes: 10000, // Max payload size (bytes) per fetch entry
maxTransitions: 500, // Max transition entries to keep in memory
maxComposableHistory: 50, // Max composable history events per entry
maxComposableEntries: 300, // Max composable entries to keep in memory
maxPiniaTimeline: 100, // Max Pinia timeline events per store
maxRenderTimeline: 100, // Max render timeline events per entry
},
})
Configuration notes
routecomposable navigation mode clears on page navigation.sessionmode keeps history across navigations for investigation sessions.debugRpchelps diagnose host/iframe bridge issues.- Caps reduce memory growth during long dev sessions.
fetchPageSizecontrols how many useFetch rows are appended per scroll step.piniaTrackerrecords Pinia store state, action/mutation timelines, and hydration attribution.maxPiniaTimelinecaps timeline events kept per store.
Environment variables
Most options can also be set through environment variables (see .env.example).
Nuxt config values take precedence over .env values.
Shipped tracker tabs default to on when neither nuxt.config nor env sets them.
Use OBSERVATORY_*=false (or 0) to disable a tab without a config entry.
piniaTracker stays off until that tracker is merged.
instrumentServer defaults to on for SSR apps and off for SPA apps.
