Browser monitoring is a beta AppSignal Labs feature. The
@appsignal/browser package is published under the beta tag on npm, and its
configuration and API may still change between beta releases. Share feedback
in our Discord community.How errors are grouped
AppSignal groups related errors into issues using the reported route and your application’s grouping settings. Repeated occurrences can appear as one issue to triage. The route is what the SDK reported throughsetRouteTemplate(), or the page’s path when nothing was declared. Without a template, /orders/1 and /orders/2 are different error routes. One bug can become two issues.
Reading the issue list
Each issue in the list carries:- The error class and message, with the route it happened on.
- The version where it was introduced. If it first appears in your latest release, check that deploy.
- A trend for the selected period, so a spike reads differently from a steady trickle.
- The total number of occurrences in the period.
- When it was last seen.
- Who it is assigned to.
Filtering by time and version
- Time range. Presets from one hour to 30 days, or a custom range.
- Version. Restrict the list to the errors reported by a single release. Combined with the introduced-in column, this is how you confirm whether a deploy is responsible.
Investigating an issue
Select an issue in the list to open it in a side panel. The panel has two tabs:- Sample: one time the error happened in a user’s browser.
- Logbook: your team’s notes on the issue, with its state changes and linked GitHub issues.
- Error message and Tags.
- The backtrace, for errors your code throws.
- Trace service map and Trace timeline.
- Related log lines, when the back end is instrumented.
- Breadcrumbs.
- Read the message. It tells you what failed. For example,
POST https://api.example.com/orders: HTTP 503means the checkout API returned a server error. - Check the backtrace for errors your code throws. It shows where the error happened in your code. If you see minified code instead of readable file names and lines, upload sourcemaps for the version set in
appVersion. - Read the breadcrumbs. They show events before the error, such as a button selection or a network request. If the user selected Pay just before
/orderstook three seconds, check that API request first. - Check the version and tags. Compare the sample’s version with your recent deploys. Use tags set with
setTags()to narrow down who was affected.
HTTPError or TimeoutError has no backtrace. The Sample tab shows its trace instead. The Trace service map and Trace timeline cards show its browser span. If the back end is instrumented, its spans appear there too, followed by its related log lines. Open full trace page, the icon next to the issue number, opens the full issue page.

The side panel for a failed request: the browser and Django services in one trace, then its timeline and related log lines.
Triage and notifications
You can assign, mute, and change the state of these issues. They also support notification settings. Read more in errors. Because front-end errors live in thebrowser namespace, those settings are separate from your back-end ones. If you migrate from @appsignal/javascript, set up notifications for browser. Settings for frontend do not carry over. Read more in the migration guide.
Errors you will not find here
Some errors never reach the SDK. Examples include errors beforeinit() and errors inside uninstrumented iframes. Opaque cross-origin script errors are dropped. Each has a workaround, listed in errors that are not reported. If an error you expected is missing, work through troubleshooting.