Skip to content

doc(sveltekit): Update README Setup Instructions #7653

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 30, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 49 additions & 30 deletions packages/sveltekit/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,17 @@ TODO: No docs yet, comment back in once we have docs

## SDK Status

This SDK is currently in **Alpha state** and we're still experimenting with APIs and functionality. We therefore make no guarantees in terms of semver or breaking changes. If you want to try this SDK and come across a problem, please open a [GitHub Issue](https://github.com/getsentry/sentry-javascript/issues/new/choose).
This SDK is currently in **Alpha state** and we're still experimenting with APIs and functionality.
We therefore make no guarantees in terms of semver or breaking changes.
If you want to try this SDK and come across a problem, please open a [GitHub Issue](https://github.com/getsentry/sentry-javascript/issues/new/choose).

## Compatibility

Currently, the minimum supported version of SvelteKit is `1.0.0`.

## General

This package is a wrapper around `@sentry/node` for the server and `@sentry/svelte` for the client, with added functionality related to SvelteKit.
This package is a wrapper around `@sentry/node` for the server and `@sentry/svelte` for the client side, with added functionality related to SvelteKit.

## Usage

Expand Down Expand Up @@ -55,72 +57,89 @@ Although the SDK is not yet stable, you're more than welcome to give it a try an

Sentry.init({
dsn: '__DSN__',

traceSampleRate: 1.0,
// For instance, initialize Session Replay:
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
integrations: [new Sentry.Replay()]
});
```

4. Add our `withSentryViteConfig` wrapper around your Vite config so that the Sentry SDK is added to your application in `vite.config.(js|ts)`:
```javascript
import { sveltekit } from '@sveltejs/kit/vite';
import { withSentryViteConfig } from '@sentry/sveltekit';

export default withSentryViteConfig({
plugins: [sveltekit()],
// ...
});
```

5. Create a `sentry.server.config.(js|ts)` file in the root directory of your SvelteKit project.
4. Create a `sentry.server.config.(js|ts)` file in the root directory of your SvelteKit project.
In this file you can configure the server-side Sentry SDK, like the Sentry Node SDK:

```javascript
import * as Sentry from '@sentry/sveltekit';

Sentry.init({
dsn: '__DSN__',
traceSampleRate: 1.0,
});
```

6. To catch errors in your `load` functions in `+page.(js|ts)`, wrap our `wrapLoadWithSentry` function:

5. Add our `withSentryViteConfig` wrapper around your Vite config so that the Sentry SDK is added to your application in `vite.config.(js|ts)`:
```javascript
import { wrapLoadWithSentry } from '@sentry/sveltekit';
import { sveltekit } from '@sveltejs/kit/vite';
import { withSentryViteConfig } from '@sentry/sveltekit';

export const load = wrapLoadWithSentry((event) => {
//...
export default withSentryViteConfig({
plugins: [sveltekit()],
// ...
});
```

7. In your `hooks.client.(js|ts)` or `hooks.server.(js|ts)`, you can wrap the `handleError` function as follows:
6. In your `hooks.client.(js|ts)` or `hooks.server.(js|ts)`, wrap the `handleError` functions as follows:

```javascript
import { handleErrorWithSentry } from '@sentry/sveltekit';
import type { HandleClientError } from '@sveltejs/kit';

const myErrorHandler = ((input) => {
console.log('This is the client error handler');
console.log(input.error);
}) satisfies HandleClientError;
console.error('An error occurred on the client-side');
return error;
});

export const handleError = handleErrorWithSentry(myErrorHandler);

// or alternatively, if you don't have a custom error handler:
// export const handleError = handleErrorWithSentry();
```

7. To capture performance data on the server-side, add our handler to the `handle` hook in `hooks.server.ts`:

```javascript
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);
```

8. To catch errors and performance data in your universal `load` functions (e.g. in `+page.(js|ts)`), wrap our `wrapLoadWithSentry` function around your load code:

```javascript
import { wrapLoadWithSentry } from '@sentry/sveltekit';

export const load = wrapLoadWithSentry((event) => {
//... your load code
});
```

9. To catch errors and performance data in your server `load` functions (e.g. in `+page.server.(js|ts)`), wrap our `wrapServerLoadWithSentry` function around your load code:

```javascript
import { wrapServerLoadWithSentry } from '@sentry/sveltekit';

export const load = wrapServerLoadWithSentry((event) => {
//... your server load code
});
```

## Known Limitations

This SDK is still under active development and several features are missing.
Take a look at our [SvelteKit SDK Development Roadmap](https://github.com/getsentry/sentry-javascript/issues/6692) to follow the progress:

- **Performance monitoring** is not yet fully supported.
You can add the `BrowserTracing` integration but proper instrumentation for routes, page loads and navigations is still missing.
This will be addressed next, as we release the next alpha builds.

- **Source Maps** upload is not yet working correctly.
We already investigated [some options](https://github.com/getsentry/sentry-javascript/discussions/5838#discussioncomment-4696985) but uploading source maps doesn't work automtatically out of the box yet.
This will be addressed next, as we release the next alpha builds.
Expand All @@ -129,5 +148,5 @@ Take a look at our [SvelteKit SDK Development Roadmap](https://github.com/getsen
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 `load` functions and hooks.
- 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 `load` functions.
This will be addressed once the SDK supports all Sentry features.