Traced Events

Traced Events

Reference of all diagnostic channels and the events they trace

Each traced operation follows the Diagnostic Channels lifecycle:

  1. Start — When an operation begins, a span is created with contextual attributes (URL, method, component name, etc.)
  2. Async Context — The span is bound to the current async context via AsyncLocalStorage, ensuring child spans maintain parent relationships
  3. End — On completion, the span is finalized with response metadata (status code, etc.)
  4. Error — If the operation fails, the span records the exception and marks the status as error

Available channels

ChannelEventsRequired Nuxt Version
nuxt.renderSSR renders>= 4.5.0
nuxt.islandIsland component renders>= 4.5.0
nuxt.dataData fetching operations>= 4.5.0
nuxt.pluginPlugin initialization>= 4.5.0
h3.requestHTTP requests via h3>= 5.0.0
srvx.requestServer route requests>= 5.0.0
srvx.middlewareServer route middleware>= 5.0.0
unstorage.*Storage operations (get, set, remove, etc.)>= 5.0.0

Enable channels

Configure which channels are active via the tracingChannel Nuxt option:

nuxt.config.ts
export default defineNuxtConfig({
  tracingChannel: {
    nuxt: true,
    h3: true,
    srvx: true,
    unstorage: true,
  },
})

Set tracingChannel: true to enable all channels, or false to disable all.

How the lifecycle works

For every channel, the module hooks into the diagnostic channel's start and end messages:

Render example

  1. Nuxt emits a nuxt.render:start message with render context (URL, component, etc.)
  2. The module creates an OpenTelemetry span and binds it to the async context
  3. Child operations (data fetching, island rendering) create child spans
  4. On nuxt.render:end, the span is finalized with the response status code
  5. On error, the span records the exception and sets status to error

Next steps

Copyright © 2026