Skip to content

Error monitoring that shows you why.

Squasher groups exceptions into issues, ties them to the logs and traces from the same request, and AI triage names the likely cause.

Free plan. No credit card required.

app.squasher.ai/acme/checkout-api/issues/c4e1a92f-6b1d-4e0a-9d7e-2a51f0c3b8e4

acmecheckout-apiIssuesC4E1A92F

⌘ K

TypeError: Cannot read properties of undefined (reading 'amount')

Review impact, context, and the next response action.

HighUnresolvedError

AI triage

checkout-api throws a TypeError in production when it reads amount from an undefined value: 1,339 events in 12 minutes. Likely cause: a price is read before it has loaded. Impact: high, the failing requests are checkouts. Next step: guard the read of amount and wait for the price.

Events
1,339
First seen
12 min ago
Last seen
1 min ago

Fingerprint

9f2c41e8a0b7d3c6

Issue

Status
Unresolved
Priority
High
Environment
production
Service
checkout-api
Assignee
Squasher AI

Workflow

BookmarkSubscribeRun AI triageCreate fix

Example project and data

Works with the stack you already run.

  • Next.js
  • Node.js
  • Browser
  • Cloudflare
  • Rust
  • Python
  • Go
  • OpenTelemetry
  • Vercel
  • AWS

Everything an error needs to get fixed.

A stack trace says where it broke. Squasher adds the release, the user, and the request around it.

  • Grouped into issues

    Repeats of the same error become one issue, with its event count and when it was first and last seen.

  • A workflow, not a feed

    Resolve, ignore, or mute an issue. Set its priority, assign it, and merge duplicates.

  • Release and environment

    Every event carries the release and environment you pass to the SDK, so you know which deploy it came from.

  • User and tags

    Identify the signed-in user and add your own tags, so every error says who hit it and where.

  • Linked by trace ID

    Errors, logs, and spans share trace IDs. Follow one failure through all three.

  • Built for agents

    List, update, and triage issues from the CLI, the REST API, or your coding agent over MCP.

Follow one failure across every signal.

Errors, logs, and traces share trace IDs. Browser errors and replays share a session ID.

    1. 14:06:09infoPOST /api/checkout 200 188ms
    2. 14:06:11infocart.load cart=8f21 items=3
    3. 14:06:12warnpricing: price pending at render
    4. 14:06:12errorTypeError: reading 'amount' of undefined
    5. 14:06:14infoPOST /api/checkout 500 2.31s
    6. 14:06:15warnretry pricing.load attempt=2
    7. 14:06:16infoGET /api/cart 200 84ms
    8. 14:06:18errorTypeError: reading 'amount' of undefined
    9. 14:06:09infoPOST /api/checkout 200 188ms
    10. 14:06:11infocart.load cart=8f21 items=3
    11. 14:06:12warnpricing: price pending at render
    12. 14:06:12errorTypeError: reading 'amount' of undefined
    13. 14:06:14infoPOST /api/checkout 500 2.31s
    14. 14:06:15warnretry pricing.load attempt=2
    15. 14:06:16infoGET /api/cart 200 84ms
    16. 14:06:18errorTypeError: reading 'amount' of undefined

    Logs

    Open a log line to see its trace and the lines around it.
    1. POST /api/checkout
    2. cart.load
    3. pricing.load
    4. db.query prices
    5. render.total
    6. 0 msrender.total threw2.31 s
    Spans from OpenTelemetry or the SDK. A failed span is an error.
  • shop.example.com/checkout
    Total
    Pay
    Something went wrong

    error at 1:031:40

    What the user saw, under the same session ID as their errors.

Previews show example data.

A first diagnosis on every new issue.

AI triage is on every plan. It runs on new production issues and writes its diagnosis on the issue page.

  • Reads the error type, message, service, environment, and event counts.
  • Writes the likely cause, the impact, and a next step.
  • Create fix works in your repository and opens a pull request after your tests pass, on Team and up. You merge it.
  • Need more? The Squasher Agent searches your logs and traces when you ask.
How AI triage works
app.squasher.ai/acme/checkout-api/issues/c4e1a92f

TypeError: Cannot read properties of undefined (reading 'amount')

Review impact, context, and the next response action.

HighUnresolvedError

AI triage

checkout-api throws a TypeError in production when it reads amount from an undefined value: 1,339 events in 12 minutes. Likely cause: a price is read before it has loaded. Impact: high, the failing requests are checkouts. Next step: guard the read of amount and wait for the price.

Events
1,339
First seen
12 min ago
Last seen
1 min ago

Fingerprint

9f2c41e8a0b7d3c6

Issue

Status
Unresolved
Priority
High
Environment
production
Service
checkout-api
Assignee
Squasher AI

Workflow

BookmarkSubscribeRun AI triageCreate fix

[Squasher] Fix: TypeError — Cannot read properties of undefined (reading 'amount')

OpenOpened by the Squasher hosted agent · #482

  • src/payments/currency.ts+2 −1
  • src/payments/currency.test.ts+6

All checks have passedReview required

Example issue and pull request

Error spikes page the right people.

A query monitor watches your error volume and opens an incident when it jumps.

  • Alert on a fixed threshold, or on a spike over the usual baseline.
  • Route by severity to Slack, email, webhooks, PagerDuty, or Telegram.
  • Slack cards name the impact, the likely cause, and a deploy from the hour before.
Notification routing

#incidents

12

SquasherAPP2:06 PM

checkout-api: error burst

Severity: SEV-2Status: Investigating

Started 4m after deploy of checkout-api@a41c

▸ Impact

Error logs on checkout-api went from 3 to 41 a minute. Checkouts return 500.

▸ Root cause

The errors began 4 minutes after checkout-api@a41c deployed. That release is the likely cause.

▸ Recommended action

Roll back a41c, or open the TypeError issue and run Create fix.

Monitor: checkout errors · Opened 2:06 PM

View in SquasherInvestigate

Example alert.

Live in three steps.

Add the SDK, initialize it from your environment, and send one real event. Or paste one prompt into your coding agent and let it do all three.

  1. Install the SDK

    Next.js shown. The Node.js, browser, Cloudflare Workers, and Rust SDKs work the same way.

    bun add @squasher-ai/nextjs
  2. Initialize it

    Read the API key and project ID from environment variables. Never hard-code the key.

    import { init } from "@squasher-ai/nextjs"; export async function register() {  init({    apiKey: process.env.SQUASHER_API_KEY!,    projectId: process.env.SQUASHER_PROJECT_ID!,    environment: process.env.NODE_ENV,  });}
    Next.js guide
  3. Send one real event

    Throw a test error and check that it reaches your project.

    Quickstart
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

Error monitoring, logging, and APM.

Each tool starts from a different signal. The fastest fixes use all three.

Starts from

Error monitoring
An exception
Log management
A log line
APM
A request or span
Squasher
Any of the three, by trace ID

Answers

Error monitoring
What broke, and how often
Log management
What the system did
APM
Where a request spent its time
Squasher
What broke, what led up to it, and the likely cause

Best for

Error monitoring
Exceptions your users hit
Log management
Debugging and audit trails
APM
Latency and slow dependencies
Squasher
Teams that want all three in one place

Questions, answered.

What is error monitoring?

Error monitoring captures the exceptions your application throws in production, groups repeats of the same error into one issue, and tracks how often it happens, so your team can fix the errors that matter first.

How is error monitoring different from logging?

Logging records what your system did, line by line. Error monitoring starts from the exception: it groups repeats into issues and keeps the stack trace. Squasher does both, and errors and logs share trace IDs, so you can move from one to the other.

Is error tracking the same as APM?

No. APM measures where requests spend their time. Error tracking records what failed. Squasher accepts OpenTelemetry traces next to your errors, and a span that ends with an error status is recorded as an error.

Which languages and frameworks does Squasher support?

Squasher has SDKs for the browser, Next.js, Node.js, Cloudflare Workers, and Rust, and logging handlers for Python and Go. Any service that exports OpenTelemetry can send over OTLP, and Squasher also accepts error events from Sentry SDKs.

Is AI triage included on every plan?

Yes, AI triage is on every plan. It runs on new production issues, reads the error type, message, service, environment, and event counts, and writes the likely cause, the impact, and a next step. To dig into logs and traces, ask the Squasher Agent. Fix pull requests are on Team and up.

Does Squasher change my code on its own?

No. A fix arrives as a pull request on your GitHub repository, with a regression test when the failure can be reproduced safely. Your team decides whether to merge it. Squasher never merges on its own.

How does Squasher handle sensitive data?

The SDKs have a beforeSend hook, so you can drop or edit an event before it leaves your app. At ingest, values under keys such as password, token, secret, cookie, and authorization are replaced with [REDACTED]. Session replay masks all page text, typed values, and media by default.

Priced by volume, never by seat.

Start free. Invite the whole team. AI triage is included on every plan.

Compare every plan

Free

For side projects, evals, and internal tools.

$0/ month

No card needed. No overage charges.

Start free
10 GB telemetry
5K replays
500 AI credits

Included

  • AI triage on new issues
  • 500 AI credits / month (an investigation uses 50)
  • 1 project

Pro

For small production apps that want one tool, not five.

$29/ month

Flat price. No per-seat fees.

Start on Pro
100 GB telemetry
10K replays
3K AI credits

Everything in Free, plus

  • 3,000 AI credits / month (an investigation uses 50)
  • 5 projects
  • 30 monitors with 30-second checks

Team

Most Popular

For product teams replacing separate error, replay, and status tools.

$99/ month

Flat price. No per-seat fees.

Start on Team
250 GB telemetry
40K replays
12K AI credits

Everything in Pro, plus

  • 12,000 AI credits / month (an investigation uses 50)
  • Unlimited projects
  • 25 status pages

Scale

For high-volume teams with security, procurement, and support needs.

$299/ month

Flat price. No per-seat fees.

Start on Scale
1 TB telemetry
150K replays
30K AI credits

Everything in Team, plus

  • 30,000 AI credits / month (an investigation uses 50)
  • 100 status pages
  • 250 monitors with 30-second checks

Need more volume, a security review, or custom terms? Get in touch.

Go squash some bugs.

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

Free plan. No credit card required.