Detection
Detection

Client Error Detection: Browser Exceptions, Failed Fetches and Hydration Errors

By Sazabi Team

Last verified on Nov 8, 2026.

What it catches

Client errors covers what breaks in your users' browsers and apps: JavaScript exceptions, failed fetches and hydration errors. When one shows up in a way that deserves attention, Sazabi opens an issue in your project.

The detection reads telemetry from the client, so it only sees an app after you add an SDK. There are no alert rules to write once you have.

Examples

These are examples, not output from a real project.

A release ships a cart page that assumes items is always an array. Users with an empty saved cart see a blank page, and the browser logs:

TypeError: Cannot read properties of undefined (reading 'map')
    at CartSummary (cart-summary.tsx:48:21)
    at renderWithHooks (react-dom.production.min.js:16:2)

A checkout call starts failing for one client version. The network event looks like this:

fetch POST /api/checkout -> 502 (1840 ms)

A server-rendered page ships markup that differs from what the client renders, and React logs a hydration mismatch on load. Any of the three can open an issue.

What you see in Sazabi

You get an issue in the project's Issues inbox with a stable name, a description, a severity and a status. The docs describe an issue as arriving already investigated: the agent attaches what happened, why and the evidence. When the SDK sends W3C trace context with a request, the agent can line up the browser event with the backend work it triggered, so a failed fetch leads to the server logs behind it.

The usual actions apply: open the issue thread and ask follow-ups, resolve, ignore or mute it, or hand it to Claude Code, Codex, Cursor or Devin to fix in your repository. A repeat of the same problem while an issue is open or ignored is added to that issue rather than opening a second one.

Notifications follow your routing. Issue triggered goes to your in-app feed by default, and a shared Slack or Microsoft Teams channel gets it once a delivery rule names that channel. Rules can filter by severity, component or owning team.

What you need

You need browser or app telemetry in a production project. The ways the docs describe:

  • The Sazabi browser SDK. Install @sazabi/browser, import its register entry first in your app and call init() with your intake URL and a service name. It captures uncaught exceptions and unhandled promise rejections with stack traces, mirrors console.error and console.warn, and records fetch and XHR calls with method, status and duration. See the Sazabi Browser SDK integration.
  • The Sazabi React Native SDK. @sazabi/react-native is an early preview. It captures errors that reach the global handler, errors thrown while React renders inside <SazabiRoot>, and unhandled rejections on Hermes.
  • An existing Sentry SDK. You can point it at a Sazabi DSN and keep sending to Sentry too. See Sentry.

The intake URL carries a write-only public key, so it is safe in a bundle.

What it does not cover

Client errors is about failures that surface as errors or failed requests. It does not cover:

  • Native mobile crashes and ANRs. The React Native SDK sees the JavaScript side only.
  • Session replay recordings and Core Web Vitals, which the browser SDK does not capture.
  • A page that renders the wrong thing without throwing anything.
  • Apps with no SDK or forwarded client telemetry.

Errors on the server side belong to a different detection: see new error detection.

Issues Sazabi detects are metered, so check pricing. The category view is frontend breakage. For general background, read the client errors guide.

What Sazabi detects today

  • Client errors: JavaScript exceptions, failed fetches and hydration errors. Example: A new TypeError on one page after a release.

Frequently Asked Questions

Which apps does client error detection work for?

Web apps that send events through the Sazabi browser SDK and React Native or Expo apps that use the Sazabi React Native SDK, which is an early preview. You can also point an existing Sentry SDK at Sazabi.

Does Sazabi catch native mobile crashes?

No. The React Native SDK sees the JavaScript side of the app only. Native crashes and ANRs are not captured.

Does the SDK record what users type?

No. The browser SDK never captures request or response bodies, input values or keystrokes.

Is it safe to ship the intake URL in a bundle?

Yes. The URL embeds a write-only public key that can send telemetry into your project and cannot read from it.

Sources

  1. Browser SDK captures errors, console output and network activity, trace context injection, Sentry SDK path (accessed Nov 8, 2026)
  2. Uncaught exceptions and unhandled rejections with stack traces, no bodies or input values captured, init options (accessed Nov 8, 2026)
  3. Error events with exception type, message and stack trace, public key safe in a bundle, session replay and Core Web Vitals not captured (accessed Nov 8, 2026)
  4. React Native SDK early preview, errors reaching the global handler, render errors inside SazabiRoot, native crashes not captured (accessed Nov 8, 2026)
  5. Pointing an existing Sentry SDK at a Sazabi DSN to forward errors (accessed Nov 8, 2026)
  6. Issue contents, severity, lifecycle, suppression of recurrences, handing an issue to a coding agent (accessed Nov 8, 2026)
  7. Issue triggered notification, personal and shared channels, delivery rules (accessed Nov 8, 2026)