Skip to content

See what the user did before it broke.

The browser SDK records each session and tags it with the same session ID as the errors from that tab, so you can watch the steps that led to an error.

Free plan. No credit card required.

app.squasher.ai/acme/checkout-web/replays
shop.example.com/checkout7f13c2a9-4d1e-4b8a-9c02-51e6d0a4b7f3
Example ShopCartCheckout
Trail runner, size 42€129.00
Merino socks, 2 pairs€24.00
guest@example.com••••••••••
Subtotal€153.00
Total
Pay

Something went wrong

PauseTimeline0:41 / 1:40
Session activityPages, errors, console output, and network requests26 events
  1. 0:18shop.example.com/checkoutPage
  2. 0:39shop.example.com/api/pricesNetwork · 200 · 1840ms
  3. 0:41shop.example.com/api/checkoutNetwork · 500 · 2310ms
  4. 0:41replay errorReplay Error

Example session. The password field is masked, as it is by default.

What a replay records.

A replay rebuilds the page from the changes it recorded. It is a record of the page, not a video of the screen.

  • The page, rebuilt

    A full snapshot of the page when recording starts and every 60 seconds, then every change to it.

  • Every interaction

    Mouse moves, clicks, touches, scrolls, window resizes, and changes to form inputs.

  • The path through your app

    Each page the user visited, in order, so you see how they reached the failure.

  • Failed and slow requests

    Fetch calls and resource timings, with URL, status, and duration. Failed and slow ones stand out.

  • Errors from the same tab

    Errors carry the tab's session ID, so the replay lists the errors that happened while it recorded.

  • Release and user

    Each replay keeps the release and environment from init, and the user you pass to identify().

Private by default. Stricter in one line.

Masking runs in the browser, before anything is uploaded. Start strict, then open up what you need.

  • All text, inputs, and media are masked by default.
  • Password, payment card, and one-time-code fields are always left out.
  • blockSelector keeps whole elements out of the recording.
  • No canvas, no console output, and no request or response bodies.
Replay privacy settings
Defaultreplay: { enabled: true }

****** **** *******

*****

****************

********

*************

Image blocked

**** **

Opted outmaskAllText: false, maskAllInputs: false

Create your account

Email

dana@example.com

Password

*************

Free for 14 days

Sign up

Example recording.

From an error to its session.

The browser SDK gives each tab one session ID and puts it on errors, Web Vitals, and the replay.

  • Filter the session list to sessions with errors.
  • The session's activity lists its pages, errors, and failed requests.
  • The errors API returns the replay session IDs for an issue.
  • Search replays by URL, release, or failed requests from the CLI or MCP.
Replays API
app.squasher.ai/acme/checkout-web/replays

Session replays

Search sessions by URL, environment, or session ID…

Example recorded sessions with errors
SessionDurationErrors
shop.example.com/checkout1m 40s2
shop.example.com/checkout3m 12s1
shop.example.com/cart48s1
shop.example.com/account2m 05s3

Example sessions

Let your coding agent find the session.

The CLI and MCP server search replays and return compact summaries, so an agent reads the timeline before any raw recording.

  • Filter by URL, release, environment, and failed requests.
  • Inspect one session as a timeline of pages, errors, and requests.
  • The same calls run over MCP as replays.search and replays.inspect.
  • Raw recording events are a separate request.
Agent handoff
Terminal
$ squasher replays search --url /checkout --min-network-failed 1 \    --from 2026-09-24T13:00:00Z --to 2026-09-24T15:00:00Z $ squasher replays inspect 7f13c2a9-4d1e-4b8a-9c02-51e6d0a4b7f3 \    --include page,network,replay_error

Example commands

Record your first session.

Replay ships in the browser SDK. Set the privacy you want before real customers arrive, or paste one prompt into your coding agent.

  1. Install the browser SDK

    Replay is part of @squasher-ai/browser. There is no separate package.

    npm install @squasher-ai/browser
  2. Choose your privacy settings

    Replay is on for every session by default. Lower the sample rate and mask text before real customers arrive.

    import { init } from "@squasher-ai/browser"; init({  apiKey: process.env.NEXT_PUBLIC_SQUASHER_API_KEY!,  projectId: process.env.NEXT_PUBLIC_SQUASHER_PROJECT_ID!,  replay: {    enabled: true,    sampleRate: 0.25,    privacy: { blockSelector: "[data-private]" },  },});
    Browser SDK guide
  3. Watch one session

    Click through your app. Then open Explore, choose Sessions, and play it back.

    Session replay docs
Paste into your coding agent
Install Squasher for this project. If Squasher skills or MCP are not configured in this agent environment, run `bash <(curl -fsSL https://squasher.ai/install.sh) --agents -y`. Then read https://skills.squasher.ai/squasher-onboard/SKILL.md, map every runnable app/service/worker/frontend/agent in the repo, choose the matching Squasher SDK, log drain, OTLP, or Agent SDK path, initialize with SQUASHER_API_KEY and SQUASHER_PROJECT_ID from environment variables, send one real verification event, and report the files changed plus the verification step. Do not hardcode or reveal real API keys.
bash <(curl -fsSL https://squasher.ai/install.sh) --agents -y

Replays on every plan.

Every plan records replays. Plans differ in how many sessions a month and how long they are kept.

Session replays a month

Free
5,000
Pro
10,000
Team
40,000
Scale
150,000

Replay retention

Free
7 days
Pro
30 days
Team
30 days
Scale
90 days

More replays

Free
Not available
Pro
$0.75 / 1K replays
Team
$0.65 / 1K replays
Scale
$0.60 / 1K replays

Only new sessions count. More pages or segments in the same session do not.

Questions, answered.

What is session replay?

Session replay records what a user did in your web app: the pages, clicks, scrolls, and input changes. You play it back later to see the steps that led to a bug, without asking the user to reproduce it.

Is a session replay a screen recording?

No. The browser SDK records the page structure and every change to it with the open-source rrweb library, and the player rebuilds the page from that record. No video is captured, and canvas elements are not recorded.

What does Squasher mask by default?

Everything, by default: all page text, every input value, and images, video, SVG, and canvas, in the browser before upload. Password, payment card, and one-time-code fields are always left out, and page and request URLs drop their query strings. Set maskAllText: false only on pages without personal data.

How do I record only some sessions?

Set replay.sampleRate between 0 and 1. Each session is kept or skipped once, when the recorder starts. The default is 1, which records every session. To turn replay off, set replay: { enabled: false }.

Does it record network requests and console output?

It records fetch calls and browser resource timings: the URL, method, status, and duration. It does not record request or response headers or bodies. Console output is not part of the replay.

How long are replays kept?

Replay retention is 7 to 90 days, depending on your plan. After that, Squasher deletes the recording and keeps a short summary of the session, such as its URLs and counts.

Which frameworks does session replay support?

Any web app that runs the browser SDK, @squasher-ai/browser: single-page apps, multi-page sites, and custom frontends. In a Next.js app, start the browser SDK in the client bundle. The server SDKs do not record replays.

Does session replay slow down my site?

The recorder library loads on demand after init. It batches changes in memory and uploads them in the background every 5 seconds, with a final upload when the page is hidden. To record fewer sessions, lower replay.sampleRate.

Go squash some bugs.

Connect one service and send one real event. The crew takes it from there.

Free plan. No credit card required.