The product loop · web

One tiny SDK.
The whole loop.

The tiny SDK for in-app feedback, surveys, and crash reports — for the web. Drop in @catch.dev/web once and follow one user problem all the way around the loop.

4kb gzipped Zero runtime deps Self-host ready
// 01 · Collect

A bug report users actually send.

One line of JS drops a corner widget into your app. The user types what broke; Catch attaches the screenshot, console, network, URL, and any metadata you pass — so there's no repro hunt waiting for you.

  • Screenshot & redact, in-browser
  • Console, network & URL auto-attached
  • Arbitrary key/value metadata
Read the feedback docs
app.acme.com
Feedback
// 02 · Catch

Crash reports, deminified.

JS errors are symbolicated against your source maps, so production stack traces read like the code you wrote. Catch groups them into issues you can assign, track, and resolve as a team.

  • Symbolicated stack traces
  • Source maps via CLI or build plugin
  • Grouped into issues — assign & track
TypeError2s ago
at Checkout.tsx:142
Cannot read property 'id' of undefined
ChunkLoadError14s ago
at vendor.a3f7.js:1:2104
Loading chunk 12 failed (timeout)
▸ TypeError · Checkout.tsx · 14 events · 3 users
// 03 · Alert

Know the moment it breaks.

A new issue, a spike, or a regression — Catch alerts the team in Slack or email with the stack trace attached. You fix it before it turns into churn.

  • Delivered to Slack and email
  • Fire on new, regression, or spike
  • Route by app, environment, or severity
#alertsjust now
New issue · TypeError in Checkout.tsx
environment productionusers 12first seen 2m
unresolved
View issueAssign
// 04 · Integrate

Wired into the tools you already use.

Source maps from npm and the CLI, alerts in Slack, errors that connect to GitHub — and your whole team on the same issue: assign, comment, and resolve together, without leaving Catch.

Slack
GitHub
npm
CLI
Webhooks
Email
App → Issue · assigned

Assign, watch, and comment on every issue together — your whole team, one source of truth.

AKJMRS
Assigned to AK · 2 watching
// Getting started

Add the dependency. Ship in ten.

Three steps, one tiny package. Pick your framework, copy it in, and Catch starts catching on your next deploy.

  1. 01

    Install the package

    npm i @catch.dev/web — 4kb gzipped, zero runtime deps.

  2. 02

    Initialize once

    Call Catch.init with your project key. Feedback and crashes are on by default.

  3. 03

    Ship it

    Deploy. Reports land under App → Issues and App → Feedback.

// one import, three jobs
$npm i @catch.dev/web
1// src/main.tsx — before you render
2import { Catch } from '@catch.dev/web'
3 
4Catch.init({
5 key: 'pk_live_…',
6 feedback: 'bottom-right',
7 crashes: true,
8})
4kb gzipped · zero depsconnected

You've seen the loop.
Now run it.

One tiny SDK — feedback, surveys, crashes, alerts, and integrations, wired together in under ten minutes.

no credit card · free for hobby apps