Official Sentry SDK for Svelte
![npm dt](https://img.shields.io/npm/dt/@sentry/svelte.svg)
This SDK currently only supports Svelte apps in the browser. If you're using SvelteKit, we
recommend using our dedicated
Sentry SvelteKit SDK.
General
This package is a wrapper around @sentry/browser
, providing error monitoring and basic performance monitoring features
for Svelte.
To use the SDK, initialize Sentry in your Svelte entry point main.js
before you bootstrap your Svelte app:
import App from './App.svelte';
import * as Sentry from '@sentry/svelte';
Sentry.init({
dsn: '__DSN__',
release: 'my-project-name@2.3.12',
integrations: [Sentry.browserTracingIntegration()],
tracesSampleRate: 1.0,
});
const app = new App({
target: document.getElementById('app'),
});
export default app;
The Sentry Svelte SDK supports all features from the @sentry/browser
SDK. Until it becomes more stable, please refer
to the Sentry Browser SDK documentation for more information and usage
instructions.
Sourcemaps and Releases
To generate source maps of your Svelte app bundle, check our guide
how to configure your bundler to
emit source maps.
To create releases and upload source maps to
Sentry, we recommend using sentry-cli
. You can for instance create a bash
script to take care of creating a release, uploading source maps and finalizing the release:
#!/bin/bash
VERSION=<your version>
ORG=<your org-slug>
PROJECT=<your project-slug>
SOURCEMAPS_PATH=./dist
sentry-cli releases new $VERSION --org $ORG --project $PROJECT
sentry-cli releases files $VERSION upload-sourcemaps $SOURCEMAPS_PATH --org $ORG --project $PROJECT
sentry-cli releases finalize $VERSION --org $ORG --project $PROJECT
Please note that the paths provided in this example work for a typical Svelte project that adheres to the project
structure set by create-vite with the svelte(-ts)
template. If your
project setup differs from this template, your configuration may need adjustments. Please refer to our documentation of
Advanced sentry-cli
Sourcemaps Options and to
our Sourcemaps Troubleshooting Guide.
Check out our
Svelte source maps uploading guide
for more information.
8.10.0
Important Changes
- feat(remix): Migrate to
opentelemetry-instrumentation-remix
. (#12110)
You can now simplify your remix instrumentation by opting-in like this:
const Sentry = require('@sentry/remix');
Sentry.init({
dsn: YOUR_DSN
// opt-in to new auto instrumentation
autoInstrumentRemix: true,
});
With this setup, you do not need to add e.g. wrapExpressCreateRequestHandler
anymore. Additionally, the quality of the
captured data improves. The old way to use @sentry/remix
continues to work, but it is encouraged to use the new setup.
Other Changes
- feat(browser): Export
thirdPartyErrorFilterIntegration
from @sentry/browser
(#12512) - feat(feedback): Allow passing
tags
field to any feedback config param (#12197) - feat(feedback): Improve screenshot quality for retina displays (#12487)
- feat(feedback): Screenshots don't resize after cropping (#12481)
- feat(node) add max lineno and colno limits (#12514)
- feat(profiling) add global profile context while profiler is running (#12394)
- feat(react): Add React version to events (#12390)
- feat(replay): Add url to replay hydration error breadcrumb type (#12521)
- fix(core): Ensure standalone spans respect sampled flag (#12533)
- fix(core): Use maxValueLength in extra error data integration (#12174)
- fix(feedback): Fix scrolling after feedback submission (#12499)
- fix(feedback): Send feedback rejects invalid responses (#12518)
- fix(nextjs): Update @rollup/plugin-commonjs (#12527)
- fix(node): Ensure status is correct for http server span errors (#12477)
- fix(node): Unify
getDynamicSamplingContextFromSpan
(#12522) - fix(profiling): continuous profile chunks should be in seconds (#12532)
- fix(remix): Add nativeFetch support for accessing request headers (#12479)
- fix(remix): Export no-op as
captureRemixServerException
from client SDK (#12497) - ref(node) refactor contextlines to use readline (#12221)
Work in this release was contributed by @AndreyKovanov and @kiliman. Thank you for your contributions!