|
4 | 4 |
|
5 | 5 | - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
|
6 | 6 |
|
| 7 | +## 7.50.0 |
| 8 | + |
| 9 | +### Important Changes |
| 10 | + |
| 11 | +- **doc(sveltekit): Promote the SDK to beta state (#7976)** |
| 12 | + - feat(sveltekit): Convert `sentryHandle` to a factory function (#7975) |
| 13 | + |
| 14 | +With this release, the Sveltekit SDK ([@sentry/sveltekit](./packages/sveltekit/README.md)) is promoted to Beta. |
| 15 | +This means that we do not expect any more breaking changes. |
| 16 | + |
| 17 | +The final breaking change is that `sentryHandle` is now a function. |
| 18 | +So in order to update to 7.50.0, you have to update your `hooks.server.js` file: |
| 19 | + |
| 20 | +```js |
| 21 | +// hooks.server.js |
| 22 | + |
| 23 | +// Old: |
| 24 | +export const handle = sentryHandle; |
| 25 | +// New: |
| 26 | +export const handle = sentryHandle(); |
| 27 | +``` |
| 28 | + |
| 29 | +- **feat(replay): Allow to configure URLs to capture network bodies/headers (#7953)** |
| 30 | + |
| 31 | +You can now capture request/response bodies & headers of network requests in Replay. |
| 32 | +You have to define an allowlist of URLs you want to capture additional information for: |
| 33 | + |
| 34 | +```js |
| 35 | +new Replay({ |
| 36 | + networkDetailAllowUrls: ['https://sentry.io/api'], |
| 37 | +}); |
| 38 | +``` |
| 39 | + |
| 40 | +By default, we will capture request/response bodies, as well as the request/response headers `content-type`, `content-length` and `accept`. |
| 41 | +You can configure this with some additional configuration: |
| 42 | + |
| 43 | +```js |
| 44 | +new Replay({ |
| 45 | + networkDetailAllowUrls: ['https://sentry.io/api'], |
| 46 | + // opt-out of capturing bodies |
| 47 | + networkCaptureBodies: false, |
| 48 | + // These headers are captured _in addition to_ the default headers |
| 49 | + networkRequestHeaders: ['X-Custom-Header'], |
| 50 | + networkResponseHeaders: ['X-Custom-Header', 'X-Custom-Header-2'] |
| 51 | +}); |
| 52 | +``` |
| 53 | + |
| 54 | +Note that bodies will be truncated to a max length of ~150k characters. |
| 55 | + |
| 56 | +**- feat(replay): Changes of sampling behavior & public API** |
| 57 | + - feat(replay): Change the behavior of error-based sampling (#7768) |
| 58 | + - feat(replay): Change `flush()` API to record current event buffer (#7743) |
| 59 | + - feat(replay): Change `stop()` to flush and remove current session (#7741) |
| 60 | + |
| 61 | +We have changed the behavior of error-based sampling, as well as adding & adjusting APIs a bit to be more aligned with expectations. |
| 62 | +See [Sampling](./packages/replay/README.md#sampling) for details. |
| 63 | + |
| 64 | +We've also revamped some public APIs in order to be better aligned with expectations. See [Stoping & Starting Replays manually](./packages/replay/README.md#stopping--starting-replays-manually) for details. |
| 65 | + |
| 66 | +- **feat(core): Add multiplexed transport (#7926)** |
| 67 | + |
| 68 | +We added a new transport to support multiplexing. |
| 69 | +With this, you can configure Sentry to send events to different DSNs, depending on a logic of your choosing: |
| 70 | + |
| 71 | +```js |
| 72 | +import { makeMultiplexedTransport } from '@sentry/core'; |
| 73 | +import { init, captureException, makeFetchTransport } from '@sentry/browser'; |
| 74 | + |
| 75 | +function dsnFromFeature({ getEvent }) { |
| 76 | + const event = getEvent(); |
| 77 | + switch(event?.tags?.feature) { |
| 78 | + case 'cart': |
| 79 | + return ['__CART_DSN__']; |
| 80 | + case 'gallery': |
| 81 | + return ['__GALLERY_DSN__']; |
| 82 | + } |
| 83 | + return [] |
| 84 | +} |
| 85 | + |
| 86 | +init({ |
| 87 | + dsn: '__FALLBACK_DSN__', |
| 88 | + transport: makeMultiplexedTransport(makeFetchTransport, dsnFromFeature) |
| 89 | +}); |
| 90 | +``` |
| 91 | +
|
| 92 | +### Additional Features and Fixes |
| 93 | +
|
| 94 | +- feat(nextjs): Add `disableLogger` option that automatically tree shakes logger statements (#7908) |
| 95 | +- feat(node): Make Undici a default integration. (#7967) |
| 96 | +- feat(replay): Extend session idle time until expire to 15min (#7955) |
| 97 | +- feat(tracing): Add `db.system` span data to DB spans (#7952) |
| 98 | +- fix(core): Avoid crash when Function.prototype is frozen (#7899) |
| 99 | +- fix(nextjs): Fix inject logic for Next.js 13.3.1 canary (#7921) |
| 100 | +- fix(replay): Ensure console breadcrumb args are truncated (#7917) |
| 101 | +- fix(replay): Ensure we do not set replayId on dsc if replay is disabled (#7939) |
| 102 | +- fix(replay): Ensure we still truncate large bodies if they are failed JSON (#7923) |
| 103 | +- fix(utils): default normalize() to a max. of 100 levels deep instead of Inifnity (#7957) |
| 104 | +
|
| 105 | +Work in this release contributed by @Jack-Works. Thank you for your contribution! |
| 106 | +
|
7 | 107 | ## 7.49.0
|
8 | 108 |
|
9 | 109 | ### Important Changes
|
|
0 commit comments