Lifecycle explorer
Step through an HTTP exchange to see how spans, metrics and propagation change together. Choose a client or server scenario, then use Next event. Select a span, metric or HTTP message for details. This is a simulation. Times and IDs are examples. Body sizes come from the example’s UTF-8 bytes.
Configure scenario
Exchange events · jump to any step
Trace waterfall
Simulated time
Dashed: external parent. Accent: open span. Green: ended. Red: ended with error. Select a row to expand or collapse its details.
Reset clears the measurements. All plots use the same time axis. A histogram point appears when a measurement is recorded. The body preview shows bytes as each chunk runs.
Simulation assumptions
The example uses W3C Trace Context and Baggage propagation, sampled spans and an SDK that keeps exemplars. Active requests and response body sizes are enabled. In a real application, your backend controls when data is exported and whether exemplars are kept. Open spans may not appear in your trace viewer yet. The `/widgets/{id}` template is configured for span names and metric labels. The URL redactor adds `access_token` to the sensitive query keys because the default list does not include it. Header capture is disabled by default and uses the default header redactor when enabled. Body contents and baggage are not automatically added to span attributes. The simulated server has no existing span context. Metrics-only middleware can use a context supplied by other code, but does not read context from incoming request headers. Each chunk is a piece of the body stream. It does not represent an HTTP chunked-transfer frame. The example splits the UTF-8 bytes of `é` across two chunks. The character appears when the second chunk completes it.See Streaming lifecycle for completion rules and middleware ordering.