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
Occurrences of the same error type on the same route become one issue. A bug that fires ten thousand times is one thing to triage rather than ten thousand notifications. The route is what the SDK reported throughsetRouteTemplate(), or the page’s path when nothing was declared. This is why declaring templates matters: without them, /orders/1 and /orders/2 are different routes, and one bug fragments into an issue per order.
Reading the issue list
Each issue in the list carries:- The error class and message, with the route it happened on.
- The version it was introduced in, which is often the fastest way to spot a regression: a new issue against your most recent release is a release you may want to look at.
- 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
Opening an issue shows one sample of the error: when it happened, the page it happened on, and the deploy it first appeared in, along with four things you debug from.- The error message, in full. This is where the meaning is.
TypeErrortells you almost nothing on its own, whileFailed to fetch dynamically imported moduletells you a lazily loaded chunk never arrived. - The tags you set with
setTags(), shown alongside the user agent and the revision, if you have setappVersion. A few tag names do more than filter. Tag withcountry_codeorbrowserand you get attribute distributions, which show you which countries or browsers see the most errors. Link templates turn a tag into a link, so auser_idtag can open that user in your own admin. - The backtrace, which you can read in full or narrowed to your own application. Front-end stacks are often almost entirely framework frames. A
removeChildfailure from React arrives as a wall ofreact-domframes with nothing of yours in sight, and the application view is what cuts through it. - The breadcrumb timeline leading up to the error, which is usually the part that saves you.
Triage and notifications
Issues can be assigned, given a state, muted, and configured with their own notification settings, and the rest of AppSignal’s incident tooling works on them too. Read more in errors. Because front-end errors live in thebrowser namespace, those settings are separate from your back-end ones. If you are migrating from @appsignal/javascript, note that its errors were reported to frontend, so the notification settings you configured there do not carry over. Read more in the migration guide.