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'],
}
}
}
You can upload sourcemaps by adding the option publishRelease.
It's important to set the baseUrl as well, it will allow bugsnag to map your errors to the sourcemap:
{
bugsnag: {
publishRelease: true,
baseUrl: 'http://localhost:3000'
}
}
The output for a medium Nuxt App can get quite big. So we added an option to disable the logs for that case.
{
bugsnag: {
publishRelease: true,
disableLog: true,
baseUrl: 'http://localhost:3000'
}
}
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