Errors
How OpenPerf groups errors, and how to find, read and triage them.
Errors lists error groups. A group collects every event of one error in one project, so a bug that fires a thousand times is one row.
What becomes an error
| Source | Level |
|---|---|
| An uncaught exception, reported by the SDK | Fatal, unhandled |
captureException(error) from the SDK |
Error, handled |
A span event named exception (see OpenTelemetry) |
Error |
A log record with exception.type or exception.stacktrace |
Fatal or Error from the log severity, Warning below it |
Grouping
Events join one group when they share the error type and the top of the stack trace. Line and column numbers, UUIDs, hex values, file hashes and numbers are ignored, so a new deploy doesn’t split a group. An event without a stack trace groups by type and message.
To group events yourself, give them the same fingerprint:
captureException(error, { fingerprint: "checkout-payment-timeout" });
Over OpenTelemetry, set the openperf.error.fingerprint attribute.
Find errors
The filter bar has a project picker, a search box and a time range. The range defaults to the last 7 days and spans at most 90.
The search box takes key:value filters. Separate values with commas and quote values with spaces: status:resolved,archived level:fatal message:"connection reset". Words without a key are not applied.
| Key | Matches |
|---|---|
message |
Part of the error type or message. |
status |
unresolved, regressed, resolved, archived, ignored. Defaults to unresolved,regressed. |
level |
fatal, error, warn. |
handled |
handled, unhandled. |
release |
Release versions. |
environment |
Environment names. |
Sorted by orders the list by Events, Users, Trending, Last seen or First seen. A New badge marks errors first seen inside the selected range. Counts cover the selected range only.
Statuses
| Status | Meaning | New events |
|---|---|---|
| Unresolved | A new error, or one you reopened. | Recorded. |
| Regressed | A resolved error that happened again. | Recorded. |
| Resolved | You fixed it. | The next one turns it Regressed. |
| Archived | Hidden from the default list. | Recorded; it stays archived. |
| Ignored | Hidden from the default list. | Dropped. |
New and regressed errors send the error.created and error.regressed webhooks and can fire alerts.
Triage
- In the list, select rows to open the action bar. Resolve is the main action, or Reopen when every selected error is closed. Archive and Ignore sit under More actions and ask for confirmation.
- On an error, change the status from the Properties section or with a shortcut.
Any member of the organization can change a status. The audit log records each change.
| Key | Action |
|---|---|
R |
Resolve or reopen |
A |
Archive |
Shift+I |
Ignore |
J / K |
Older / newer occurrence |
L |
Latest occurrence |
U |
Back to the list |
Shift+C |
Copy link |
? |
All shortcuts |
Error page
The page shows one occurrence at a time, the latest in the time range by default.
- Occurrences: events over time, with release markers. Click a bar to open an event from that bucket.
- The occurrence bar shows when it happened, its position such as “3 of 120 events”, and tags: environment, release, level, handled, transaction, runtime, browser, OS, device and user.
- Stack trace: app frames, with library frames folded. Frames from
node_modules/,node:,internal/,site-packages/,dist-packages/and/gems/count as library frames. Show all frames unfolds them and Raw shows the original text. - Breadcrumbs: what led up to the error. The browser SDK records clicks, navigations and console messages;
addBreadcrumbadds your own. - Trace and Logs: the trace the error happened in and its logs, when the event carries a trace ID. Open trace and Open in Logs jump to them.
- All attributes: every attribute of the event and its resource.
The sidebar shows the status, level and handled state, the project, a linked Linear issue, events in the range against the period before, users, when the error was first and last seen with links to those releases, and its environments.
Minified browser stack traces become readable when the release’s source maps are uploaded before the errors arrive; see Releases. Events received earlier stay minified.
Suspect commit
With the GitHub integration and a code mapping for the project, the stack trace shows a Suspect commit: the latest commit before the error was first seen that touched one of its app frames. Add the mapping under Settings → Integrations → GitHub:
- Stack root: the start of file paths in stack traces, such as
/app/orwebpack://app/. Empty matches every path. - Source root: the repository folder it points to. Empty means the repository root.
The lookup uses the commit of the error’s release when OpenPerf knows it, otherwise the repository’s default branch.
Linear issues
Once an owner or admin connects Linear under Settings → Integrations, More actions → Create issue on an error opens a Linear issue with a title, description, workspace and team. The issue links back to the error and shows in its sidebar. Unlink issue removes the link without touching the issue.