Add BugSnag to your JavaScript projects to automatically capture and report errors in production.
Our universal JavaScript notifier automatically detects whether it is running in Node.js or in the browser. That means this guide is the same whether you are running on the front-end, back-end or both. Platform-specific differences where they do exist will be noted.
New to BugSnag? Create an account
Looking for performance monitoring? See our performance guide
This page contains a general guide to error reporting with BugSnag. If you use a particular framework listed below, click through to see a specifically tailored guide:
The best way to install BugSnag is to get the @bugsnag/js
npm package from the npm registry using npm or yarn:
npm install --save @bugsnag/js
# or
yarn add @bugsnag/js
Alternatively, if you only want to use BugSnag in the browser, for the most simple installation you can load it from our CDN:
<script src="//d2wy8f7a9ursnm.cloudfront.net/v8/bugsnag.min.js"></script>
See the CDN guide for more information.
The latest available version of @bugsnag/js
is v8.1.2
.
This documentation is for version 7+ of the BugSnag JavaScript notifier. If you are using older versions, we recommend upgrading to the latest release using our Upgrade guide. Documentation for the previous release can be found on our legacy pages.
Depending on which module system you are using, you’ll need to include BugSnag in one of the following ways:
// commonjs/node-style require
var Bugsnag = require('@bugsnag/js')
// ES module-style import
import Bugsnag from '@bugsnag/js'
If you are using the CDN, Bugsnag
will be defined as a global variable and you don’t need to import
or require
it.
The simplest way to configure BugSnag is to provide your API key as a string:
Bugsnag.start('YOUR_API_KEY')
You can find your API key in Project Settings from your BugSnag dashboard.
To specify any additional configuration options, supply an object instead:
Bugsnag.start({
apiKey: 'YOUR_API_KEY',
otherOptions: value
})
For information on values that can be set in the configuration object, see configuration options.
Type definitions are provided and will be picked up automatically by the TypeScript compiler when you import any of the top-level @bugsnag/*
packages.
@bugsnag/js
can be used in AWS Lambda functions using the @bugsnag/plugin-aws-lambda
package.
See AWS Lambda for integration instructions.
Source maps enable BugSnag to show you the original file, line, method and surrounding code in your stacktraces.
Use the source maps guide to ensure your tooling outputs source maps, and the build integrations guide to find out how to upload them to BugSnag.
After completing installation and basic configuration, unhandled exceptions and unhandled promise rejections will be reported and automatically appear on your BugSnag dashboard.
Sometimes it is useful to manually notify BugSnag of a problem. To do this, call Bugsnag.notify()
. For example:
try {
something.risky()
} catch (e) {
Bugsnag.notify(e)
}
When reporting handled errors, it’s often helpful to send custom diagnostic data or to adjust the severity of particular errors. For more information, see reporting handled errors.
BugSnag will automatically capture the following data for every exception:
<script/>
tag)It can often be helpful to attach application-specific diagnostic data to error reports. This can be accomplished by setting a callback which will be invoked before any reports are sent to BugSnag.
The following adds a map of data to the “company” tab on the BugSnag dashboard for all captured events:
Bugsnag.start({
onError: function (event) {
event.addMetadata('company', {
name: "Acme Co.",
country: "uk"
})
}
})
For more information, see Customizing error reports.
In order to correlate errors with customer reports, or to see a list of users who experienced each error, it is helpful to capture and display user information on your BugSnag dashboard.
You can set the user information of an error report using the user
configuration property when BugSnag starts or via an onError
callback.
Bugsnag.start({
onError: function (event) {
event.setUser('3', 'bugs.nag@bugsnag.com', 'Bugs Nag')
}
})
For information on doing so, see Adding user data.
In order to understand what happened in your application before each error, it can be helpful to leave short log statements that we call breadcrumbs. A configurable number of breadcrumbs are attached to each error report to help diagnose what events led to the error.
By default, BugSnag captures the following events as breadcrumbs.
For more information or to disable particular classes of automatic breadcrumb generation see the enabledBreadcrumbTypes
configuration option.
You can use the leaveBreadcrumb
method to log potentially useful events in your own applications:
Bugsnag.leaveBreadcrumb('Button clicked')
BugSnag will keep track of the time and order of the breadcrumbs and show them on your dashboard. Additional data can also be attached to breadcrumbs by providing the optional metadata
parameter.
For more information and examples for how custom breadcrumbs can be integrated, see Customizing breadcrumbs.
BugSnag tracks the number of “sessions” that happen within your application. This allows you to compare stability scores between releases and helps you to understand the quality of your releases.
Sessions are captured and reported by default. This behavior can be disabled using the autoTrackSessions
configuration option.
In the browser, BugSnag will automatically report a session each time:
history.pushState()
or history.replaceState()
Sessions are reported in Node.js every time a request is served if you are using one of the server integrations:
@bugsnag/plugin-express
@bugsnag/plugin-restify
@bugsnag/plugin-koa
A summary of sessions recorded will be periodically sent to BugSnag.
For more information about manually controlling session tracking, see Capturing sessions.
Monitor errors as you roll out features or run experiments and A/B tests by declaring your feature flag and experiment usage in the BugSnag client. You can use the Features dashboard to identify whether these features have introduced errors into your app.
For more information, see Feature flags & experiments.
Configure your app version to see the release that each error was introduced in.
Bugsnag.start({ appVersion: '4.10.0' })
Then set up a build tool integration to enable linking to code in your source control provider from the releases dashboard, timeline annotations, and stack traces.
@bugsnag/js
, the library powering BugSnag’s JavaScript error reporting, on GitHub