Skip to main content

Snapshot Debugging

Snapshot Debugging in Solvix provides a detailed view of each request lifecycle.

It helps developers understand exactly what happened during a request — including retries, failures, timing, and transformations.

Why Snapshot Debugging?

In production systems:

  • Requests fail unpredictably
  • Retries may hide root causes
  • Debugging distributed systems is hard

Snapshots provide full visibility into request execution.

Basic usage

const client = createClient({
snapshot: {
enabled: true,
},
});

What is included in a snapshot?

A snapshot contains:

  • Request details (URL, method, headers)
  • Response details (status, headers)
  • Retry attempts
  • Errors
  • Timeline events
  • Duration

Example

const response = await client.get("/users");

console.log(response.meta.snapshot);

Sample Snapshot Structure

{
"url": "/users",
"method": "GET",
"status": 200,
"retries": 1,
"duration": 120,
"timeline": ["created", "queued", "transportStart", "completed"]
}

Timeline Events

Common events include:

  • created
  • queued
  • dequeued
  • transportStart
  • responseReceived
  • parseStart
  • parseEnd
  • completed
  • failed

Use cases

Debugging failures

Identify exactly where a request failed

Performance analysis

Measure request lifecycle timings

Observability

Track retries and system behavior

Combining with Redaction

const client = createClient({
snapshot: { enabled: true },
security: { redactSnapshot: true },
});

This ensures sensitive data is hidden.

Best practices

  • Enable during debugging
  • Disable in high-performance production paths if not needed
  • Combine with profiling for deeper insights

Summary

Snapshot Debugging provides deep visibility into request execution, making debugging and performance analysis easier.