This SDK is currently in Beta state. Bugs and issues might still appear and we're still actively working on the SDK. Also, we're still adding features. If you experience problems or have feedback, please open a GitHub Issue.
Currently, the minimum supported version of SvelteKit is 1.0.0.
This package is a wrapper around @sentry/node for the server and @sentry/svelte for the client side, with added functionality related to SvelteKit.
-
Ensure you've set up the
@sveltejs/adapter-nodeadapter -
Install the Sentry SvelteKit SDK:
# Using npm npm install @sentry/sveltekit # Using yarn yarn add @sentry/sveltekit
The Sentry SvelteKit SDK mostly relies on SvelteKit Hooks to capture error and performance data.
-
If you don't already have a client hooks file, create a new one in
src/hooks.client.(js|ts). -
On the top of your
hooks.client.(js|ts)file, initialize the Sentry SDK:// hooks.client.(js|ts) import * as Sentry from '@sentry/sveltekit'; Sentry.init({ dsn: '__DSN__', tracesSampleRate: 1.0, // For instance, initialize Session Replay: replaysSessionSampleRate: 0.1, replaysOnErrorSampleRate: 1.0, integrations: [new Sentry.Replay()], });
-
Add our
handleErrorWithSentryfunction to thehandleErrorhook:// hooks.client.(js|ts) import { handleErrorWithSentry } from '@sentry/sveltekit'; const myErrorHandler = (({ error, event }) => { console.error('An error occurred on the client side:', error, event); }); export const handleError = handleErrorWithSentry(myErrorHandler); // or alternatively, if you don't have a custom error handler: // export const handleError = handleErrorWithSentry();
-
If you don't already have a server hooks file, create a new one in
src/hooks.server.(js|ts). -
On the top of your
hooks.server.(js|ts)file, initialize the Sentry SDK:// hooks.server.(js|ts) import * as Sentry from '@sentry/sveltekit'; Sentry.init({ dsn: '__DSN__', tracesSampleRate: 1.0, });
-
Add our
handleErrorWithSentryfunction to thehandleErrorhook:// hooks.server.(js|ts) import { handleErrorWithSentry } from '@sentry/sveltekit'; const myErrorHandler = (({ error, event }) => { console.error('An error occurred on the server side:', error, event); }); export const handleError = handleErrorWithSentry(myErrorHandler); // or alternatively, if you don't have a custom error handler: // export const handleError = handleErrorWithSentry();
-
Add our request handler to the
handlehook inhooks.server.ts:// hooks.server.(js|ts) import { sentryHandle } from '@sentry/sveltekit'; export const handle = sentryHandle(); // or alternatively, if you already have a handler defined, use the `sequence` function // see: https://kit.svelte.dev/docs/modules#sveltejs-kit-hooks-sequence // export const handle = sequence(sentryHandle(), yourHandler());
-
To catch errors and performance data in your universal
loadfunctions (e.g. in+page.(js|ts)), wrap ourwrapLoadWithSentryfunction around your load code:// +page.(js|ts) import { wrapLoadWithSentry } from '@sentry/sveltekit'; export const load = wrapLoadWithSentry((event) => { //... your load code });
-
To catch errors and performance data in your server
loadfunctions (e.g. in+page.server.(js|ts)), wrap ourwrapServerLoadWithSentryfunction around your load code:// +page.server.(js|ts) import { wrapServerLoadWithSentry } from '@sentry/sveltekit'; export const load = wrapServerLoadWithSentry((event) => { //... your server load code });
-
Add our
sentrySvelteKitplugins to yourvite.config.(js|ts)file so that the Sentry SDK can apply build-time features. Make sure that it is added before thesveltekitplugin:// vite.config.(js|ts) import { sveltekit } from '@sveltejs/kit/vite'; import { sentrySvelteKit } from '@sentry/sveltekit'; export default { plugins: [sentrySvelteKit(), sveltekit()], // ... rest of your Vite config };
This adds the Sentry Vite Plugin to your Vite config to automatically upload source maps to Sentry.
After completing the Vite Setup, the SDK will automatically upload source maps to Sentry, when you
build your project. However, you still need to specify your Sentry auth token as well as your org and project slugs. You
can either set them as env variables (for example in a .env file):
SENTRY_ORGyour Sentry org slugSENTRY_PROJECTyour Sentry project slugSENTRY_AUTH_TOKENyour Sentry auth token
Or you can pass them in whatever form you prefer to sentrySvelteKit:
// vite.config.(js|ts)
import { sveltekit } from '@sveltejs/kit/vite';
import { sentrySvelteKit } from '@sentry/sveltekit';
export default {
plugins: [
sentrySvelteKit({
sourceMapsUploadOptions: {
org: 'my-org-slug',
project: 'my-project-slug',
authToken: process.env.SENTRY_AUTH_TOKEN,
},
}),
sveltekit(),
],
// ... rest of your Vite config
};Under sourceMapsUploadOptions, you can also specify all additional options supported by the
Sentry Vite Plugin.
This might be useful if you're using adapters other than the Node adapter or have a more customized build setup.
// vite.config.(js|ts)
import { sveltekit } from '@sveltejs/kit/vite';
import { sentrySvelteKit } from '@sentry/sveltekit';
export default {
plugins: [
sentrySvelteKit({
sourceMapsUploadOptions: {
org: 'my-org-slug',
project: 'my-project-slug',
authToken: 'process.env.SENTRY_AUTH_TOKEN',
include: ['dist'],
cleanArtifacts: true,
setCommits: {
auto: true,
},
},
}),
sveltekit(),
],
// ... rest of your Vite config
};If you don't want to upload source maps automatically, you can disable it as follows:
// vite.config.(js|ts)
import { sveltekit } from '@sveltejs/kit/vite';
import { sentrySvelteKit } from '@sentry/sveltekit';
export default {
plugins: [
sentrySvelteKit({
autoUploadSourceMaps: false,
}),
sveltekit(),
],
// ... rest of your Vite config
};This SDK is still under active development. Take a look at our SvelteKit SDK Development Roadmap to follow the progress:
-
Adapters other than
@sveltejs/adapter-nodeare currently not supported. We haven't yet tested other platforms like Vercel. This is on our roadmap but it will come at a later time. -
We're aiming to simplify SDK setup in the future so that you don't have to go in and manually add our wrappers to all your
loadfunctions. This will be addressed once the SDK supports all Sentry features.