How it works

A fix bundle, not a screenshot.

Crumbtrail embeds in your app and captures everything that happens in a session — front end to database — keyed to stable identity. Behavioral detectors watch that stream for the signals of a user giving up; when one fires, the reproduction window is flagged and handed to your agent.

1 · Capture

Every layer of one session, one correlated timeline

A drop-in SDK records the whole stack of one user session — interactions, network, backend spans, and database writes — time-correlated to the exact second the user gave up.

Clicks & pointer

Every interaction, keyed to a stable component signature — not a brittle CSS path.

Network

fetch and XHR: method, URL, status, timing, and redacted payloads.

Console & errors

Logs, warnings, uncaught exceptions, and unhandled rejections with stacks.

Backend spans

OpenTelemetry spans correlated to the click that triggered them, across origins.

Database writes

Row-level diffs — the exact row a request changed, before and after.

Environment & flags

Feature flags, config, build, and runtime recorded with every session.

2 · Detect

The give-up has a signature

Rage-clicks, retry storms, slow responses, abandoned flows — four detectors fire on the behavior of a frustrated user, not on exceptions. Cross-release comparison rides on the same identity model when you need to know what a release changed.

Detectors for the quiet give-up

Four behavioral detectors ship today: rage-click, retry storm, slow response, and abandoned flow. They fire on what a frustrated user does, not on exceptions — so the issues that never throw still surface.

The reproduction already exists

Every click, request, console line, and database write is captured into one correlated session — complete, not sampled. When a detector fires, Crumbtrail flags the window around it. The context exists before anyone files a ticket, and long before churn.

The exact row that changed

Row-level database diffs ride along with each request. When a user's action writes the wrong data — 200 OK, no exception — Crumbtrail shows the exact row that changed, before and after.

The autonomy dial

You decide what happens next. Level 1: alert — “47 users hit this, here’s the reproduction.” Level 2: hand the fix-context bundle to your coding agent. Level 3: your coding agent takes the bundle all the way to an open PR. One pipeline, escalating trust. Nothing fixes production until you turn the dial.

3 · Hand to the agent

Your agent pulls the evidence itself

Crumbtrail exposes a rich MCP surface so your coding agent pulls the time-matched front-end and back-end evidence itself — and can traverse and act on the UI by component identity, instead of guessing from a screenshot.

getFixContext

The complete causal window for one failure — clicks, requests, spans, and the row that changed.

getRegressionContext

What diverged between two releases for the same interaction, step for step.

Redacted by design

Credentials and PII are masked before anything is stored — your capture policy, enforced. You decide what is captured, what is masked, and how long it is kept.

Find out what your users are quietly hitting.

Read the quickstart and embed Crumbtrail in an afternoon.