Why users don't report bugs — and how to change that
Most users never report bugs — they retry, work around it, or quietly leave. Why reporting fails, and how one-gesture in-app feedback changes it.
// Blog
Guides on error tracking, user feedback, and shipping software you can trust — from the team building Catch.
Most users never report bugs — they retry, work around it, or quietly leave. Why reporting fails, and how one-gesture in-app feedback changes it.
Shipped an app from Cursor, Lovable, or Bolt? One script tag captures production errors — stack trace, browser, frequency — ready to paste into your agent.
8 min read
Six lighter Sentry alternatives compared honestly — GlitchTip, Honeybadger, Rollbar, TrackJS, Insight Hub, Catch — and when Sentry is still the right call.
11 min read
Looking for an html2canvas alternative? getDisplayMedia captures real pixels instead of a DOM repaint — fidelity, permissions, mobile, and when to use each.
9 min read
Export onRequestError from instrumentation.ts to capture every uncaught Next.js server error — components, actions, route handlers — in one function.
9 min read
Build shake-to-report for iOS in Swift: detect the shake with motionEnded, screenshot with UIGraphicsImageRenderer, annotate with PencilKit — or use one SDK.
9 min read
This Vite error means an open tab requested a lazy chunk your deploy deleted. Fix it with a vite:preloadError reload handler, router fixes, and cache headers.
7 min read
Error boundaries only catch render errors. Three fixes for async and event-handler errors: showBoundary, React 19's onUncaughtError, and global window handlers.
8 min read
Map app.js:1:45 back to a real file, line, and function. How to generate source maps in Vite, webpack, and esbuild — and unminify stack traces safely.
9 min read
window.onerror misses resource failures and promise rejections. What addEventListener('error') and unhandledrejection catch, with one complete runnable handler.
10 min read