What is @sentry/vue?
@sentry/vue is an official Sentry SDK for Vue.js applications. It allows developers to monitor and track errors, performance issues, and other events in their Vue.js applications. The package provides seamless integration with Vue.js, enabling automatic error tracking and performance monitoring.
What are @sentry/vue's main functionalities?
Error Tracking
This feature allows you to initialize Sentry in your Vue.js application to automatically capture and report errors. The `dsn` is your Sentry Data Source Name, which uniquely identifies your project.
import * as Sentry from '@sentry/vue';
import { Integrations } from '@sentry/tracing';
import Vue from 'vue';
Sentry.init({
Vue: Vue,
dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0',
integrations: [new Integrations.BrowserTracing()],
tracesSampleRate: 1.0,
});
Performance Monitoring
This feature allows you to monitor the performance of your Vue.js application. You can track custom transactions and measure the performance of specific parts of your application.
import * as Sentry from '@sentry/vue';
import { Integrations } from '@sentry/tracing';
import Vue from 'vue';
Sentry.init({
Vue: Vue,
dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0',
integrations: [new Integrations.BrowserTracing()],
tracesSampleRate: 1.0,
});
// Example of a custom transaction
const transaction = Sentry.startTransaction({
op: 'test',
name: 'My Custom Transaction',
});
setTimeout(() => {
transaction.finish();
}, 99);
Manual Error Reporting
This feature allows you to manually capture and report exceptions in your Vue.js application. This is useful for capturing errors that are not automatically caught by Sentry.
import * as Sentry from '@sentry/vue';
import Vue from 'vue';
Sentry.init({
Vue: Vue,
dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0',
});
// Manually capture an exception
try {
throw new Error('This is a test error');
} catch (error) {
Sentry.captureException(error);
}
Other packages similar to @sentry/vue
bugsnag-js
Bugsnag provides error monitoring and crash reporting for web and mobile applications. It offers similar functionalities to @sentry/vue, such as automatic error tracking and performance monitoring. Bugsnag also provides detailed error reports and supports various platforms, including Vue.js.
rollbar
Rollbar is an error tracking and monitoring service that supports multiple languages and frameworks, including Vue.js. It offers real-time error reporting, automatic error grouping, and detailed error insights. Rollbar is comparable to @sentry/vue in terms of functionality and ease of integration.
airbrake-js
Airbrake provides error monitoring and performance management for web applications. It supports Vue.js and offers features like real-time error tracking, detailed error reports, and performance monitoring. Airbrake is similar to @sentry/vue in its capabilities and integration process.
Official Sentry SDK for Vue.js
Links
General
This package is a wrapper around @sentry/browser
, with added functionality related to Vue.js. All methods available in
@sentry/browser
can be imported from @sentry/vue
.
To use this SDK, call Sentry.init(options)
as early in your application as possible.
Vue 3
const app = createApp({
});
Sentry.init({
app,
dsn: '__PUBLIC_DSN__',
integrations: [
Sentry.browserTracingIntegration({ router }),
],
});
Vue 2
import Vue from 'vue';
import App from './App';
import router from './router';
import * as Sentry from '@sentry/vue';
Sentry.init({
Vue: Vue,
dsn: '__PUBLIC_DSN__',
integrations: [
Sentry.browserTracingIntegration({ router }),
],
});
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>',
});
8.36.0
Important Changes
- feat(nextjs/vercel-edge/cloudflare): Switch to OTEL for performance monitoring (#13889)
With this release, the Sentry Next.js, and Cloudflare SDKs will now capture performance data based on OpenTelemetry.
Some exceptions apply in cases where Next.js captures inaccurate data itself.
NOTE: You may experience minor differences in transaction names in Sentry.
Most importantly transactions for serverside pages router invocations will now be named GET /[param]/my/route
instead of /[param]/my/route
.
This means that those transactions are now better aligned with the OpenTelemetry semantic conventions.
Other Changes
- deps: Bump bundler plugins and CLI to 2.22.6 and 2.37.0 respectively (#14050)
- feat(deps): bump @opentelemetry/instrumentation-aws-sdk from 0.44.0 to 0.45.0 (#14099)
- feat(deps): bump @opentelemetry/instrumentation-connect from 0.39.0 to 0.40.0 (#14101)
- feat(deps): bump @opentelemetry/instrumentation-express from 0.43.0 to 0.44.0 (#14102)
- feat(deps): bump @opentelemetry/instrumentation-fs from 0.15.0 to 0.16.0 (#14098)
- feat(deps): bump @opentelemetry/instrumentation-kafkajs from 0.3.0 to 0.4.0 (#14100)
- feat(nextjs): Add method and url to route handler request data (#14084)
- feat(node): Add breadcrumbs for
child_process
and worker_thread
(#13896) - fix(core): Ensure standalone spans are not sent if SDK is disabled (#14088)
- fix(nextjs): Await flush in api handlers (#14023)
- fix(nextjs): Don't leak webpack types into exports (#14116)
- fix(nextjs): Fix matching logic for file convention type for root level components (#14038)
- fix(nextjs): Respect directives in value injection loader (#14083)
- fix(nuxt): Only wrap
.mjs
entry files in rollup (#14060) - fix(nuxt): Re-export all exported bindings (#14086)
- fix(nuxt): Server-side setup in readme (#14049)
- fix(profiling-node): Always warn when running on incompatible major version of Node.js (#14043)
- fix(replay): Fix
onError
callback (#14002) - perf(otel): Only calculate current timestamp once (#14094)
- test(browser-integration): Add sentry DSN route handler by default (#14095)