Menu Home
ProductReplay & DevToolsSignalsCall qualityWhy (AI)Live AssistCanvas recordingPrivacy & complianceSelf-hosted
SolutionsHealthcare & virtual careEngineeringSupportProduct teamsKiosks & monitoring
MorePricingDocsCompareTrust centerGlossaryAboutContactPress kit
Log inStart free
Engineering

Reproduce the bug from the replay alone.

No more 'can you send steps to reproduce'. The session has the console with source maps, the failing request with its backend trace, the state action that preceded it, and an AI explanation that cites each of them.

Signals 0 fired

    Why generated from this session

    Loading explanation…

    Case-sensitive promo validation, a 3.4-second request, and a layout shift that displaced a click, all in one replay.

    Workflow

    From alert to pull request.

    A Signal fires

    An error click cluster crosses its threshold after a deploy. Slack gets one message with counts, the release, and a link to the moment.

    Open the replay at the moment

    Console shows the symbolicated stack. Network shows the 413 and the backend span tree. State shows the action that sent the request.

    Ask Why

    "Explain this moment" returns the root cause with confidence, the code location, and how many other sessions hit the same cluster this week.

    Generate the test, draft the PR

    Repro steps and a Playwright test using stable selectors. Connect GitHub and Why opens a draft PR for review.

    For agents too

    Your coding agent can pull the evidence itself.

    The MCP server exposes a session's evidence, error context, repro steps, request details, and cluster data to Claude Code, Cursor, or any MCP client, with a scoped token.

    Tell your agent "fix the upload 413 issue from Backstory" and it fetches what it needs. PHI tenants can disable or restrict the server.

    mcp client config
    {
      "mcpServers": {
        "backstory": {
          "url": "https://api.backstory.io/mcp",
          "headers": { "Authorization": "Bearer backstory_…scoped_token" }
        }
      }
    }
    Engineering-grade details

    The things you would check first.

    Bounded recorder

    Runs in a Web Worker with a 24 MB budget and a five-level governor. A slow network makes it thin pointer samples and lower canvas quality, never grow. Gaps are explicit.

    OpenTelemetry native

    The SDK emits spans with session.id and propagates trace context to your allowlisted APIs. Send your backend traces over OTLP and they appear under each request.

    Framework wrappers

    React, Next.js, Vue, Angular, SvelteKit. State bridges for Redux, Zustand, Pinia, NgRx, TanStack Query, Apollo. Source map upload from CI.

    The story behind every bug.

    Free for 1,000 sessions a month. Strict masking, conditional recording, and Signals are all included.

    Get started

    Replay your first session in five minutes.

    Free for 1,000 sessions a month, no credit card. Or leave a work email and we will reach out about the private beta for healthcare and support teams.