Open Stackblitz and try it out.
nuxt-bugsnag dependency to your projectnpx nuxi@latest module add bugsnag
nuxt-bugsnag to the modules section of nuxt.config.js.{
modules: [
'nuxt-bugsnag'
]
}
You can pass every bugsnag options in the config object
{
bugsnag: {
config: {
apiKey: 'your key',
enabledReleaseStages: ['staging', 'production'],
}
}
}
Set publishRelease to upload source maps during a production build. The module uses the BugSnag Vite uploader for browser chunks and the BugSnag CLI for final Nitro server bundles.
Set baseUrl to the public URL that serves your Nuxt assets and ensure appVersion matches the Bugsnag notifier configuration:
{
bugsnag: {
publishRelease: true,
baseUrl: 'https://example.com/',
config: {
apiKey: 'YOUR_API_KEY',
appVersion: 'YOUR_VERSION'
}
}
}
Uploads are enabled only for non-development builds. Existing source maps for the same bundle path and app version are overwritten, so each deploy should use a unique appVersion.
Set disableLog to suppress uploader output:
{
bugsnag: {
publishRelease: true,
disableLog: true,
baseUrl: 'https://example.com/'
}
}
If your Nuxt App runs in a different folder than /, you might want to set projectRoot to this directory, so that BugSnag can match the sourcemap.
{
bugsnag: {
publishRelease: true,
projectRoot: '/someFolder/'
}
}
I would recommend to set these options
{
modules: [
'nuxt-bugsnag',
],
bugsnag: {
publishRelease: true,
config: {
apiKey: 'YOUR_API_KEY',
enabledReleaseStages: ['staging', 'production'],
releaseStage: process.env.NODE_ENV,
appVersion: 'YOUR_VERSION',
}
}
}
Use the useBugsnag() composable to report errors:
useBugsnag().notify(new Error('Some Error'))
Only available in 7.4.0 and above
The simplest Configuration for the bugsnag performance feature is like this
{
bugsnag: {
apiKey: 'YOUR API KEY',
performance: true
}
}
for custom options you can use the following config and get all the settings from here
{
bugsnag: {
apiKey
config: {
performanceConfig: {
autoInstrumentFullPageLoads: true,
}
}
}
}
For sending Custom Spans see this documentation. There is a little helper in the module to send custom spans.
This can only be used on the client side and should never be called on the server side. There is a mock included so you don't need to worry about that, but should be kept in mind.
useBugsnagPerformance().startSpan('my-span')
For GDPR compliance, you can defer Bugsnag initialization until user consent is obtained using the deferStart option.
{
bugsnag: {
deferStart: true,
config: {
apiKey: 'YOUR_API_KEY',
}
}
}
When deferStart: true, Bugsnag will not initialize automatically. Instead:
useBugsnag() returns a mock client that logs errors to consoleinitBugsnag() after obtaining user consent to start the real Bugsnag clientuseBugsnag() returns the real client<script setup>
const hasConsent = ref(false)
function onConsentGiven() {
hasConsent.value = true
initBugsnag()
}
// Safe to call anytime - logs to console before consent
function reportError() {
useBugsnag().notify(new Error('Something went wrong'))
}
</script>
<template>
<button v-if="!hasConsent" @click="onConsentGiven">
Accept Cookies
</button>
<button @click="reportError">
Report Error
</button>
</template>
Note: Before consent is given, errors are logged to the browser console instead of being sent to Bugsnag.
$bugsnag removed - Use the useBugsnag() composable instead// Before (v8.x)
this.$bugsnag.notify(new Error('Some Error'))
// After (v9.0)
useBugsnag().notify(new Error('Some Error'))
$bugsnagPerformance removed - Use useBugsnagPerformance() composable instead// Before (v8.x)
this.$bugsnagPerformance.startSpan('my-span')
// After (v9.0)
useBugsnagPerformance().startSpan('my-span')
useBugsnag() before initialization when using deferStart: true.npm installnpm run devCopyright (c) Julian Martin julian.martin@russmedia.com