Features · Measure
Uncaught errors and unhandled promise rejections from real visits, grouped by message, page and browser. Message, file and line are sent. The stack trace is not.
Stack traces routinely carry user data — URLs with tokens, form values captured in closures. Sending them would quietly contradict everything else on this site.
By message and page to find the bug, by browser and OS to find who it hits. Often the fastest signal that a release went wrong.
The same error fires once per page view, capped, so an error in a render loop cannot flood your quota.
Errors live in the same event table as everything else, so "this page is slow AND throwing" is one query, not two tools.
The evidence
SELECT json_extract(props,'$.message') AS message,
json_extract(props,'$.path') AS path,
COUNT(*) AS hits, COUNT(DISTINCT session_id) AS sessions
FROM events
WHERE site_id = ? AND ts >= ? AND ts < ?
AND bot_kind = '' AND name = 'error'
GROUP BY message, path ORDER BY hits DESC LIMIT 10
No column here can contain a stack trace, because one is never collected.
This is error MONITORING, not a debugger. Without stack traces you get what broke, where and for whom — not the exact line in your bundle. If you need that, run a dedicated error tracker alongside; we would rather be honest than half a Sentry.