|
4 | 4 |
|
5 | 5 | - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
|
6 | 6 |
|
| 7 | +## 8.0.0-alpha.1 |
| 8 | + |
| 9 | +This is the first Alpha release of the v8 cycle, which includes a variety of breaking changes. |
| 10 | + |
| 11 | +Read the [in-depth migration guide](./MIGRATION.md) to find out how to address any breaking changes in your code. |
| 12 | + |
| 13 | +### Important Changes |
| 14 | + |
| 15 | +**- feat(node): Make `@sentry/node` powered by OpenTelemetry (#10762)** |
| 16 | + |
| 17 | +The biggest change is the switch to use OpenTelemetry under the hood in `@sentry/node`. This brings with it a variety of |
| 18 | +changes: |
| 19 | + |
| 20 | +- There is now automated performance instrumentation for Express, Fastify, Nest.js and Koa. You can remove any |
| 21 | + performance and request isolation code you previously wrote manually for these frameworks. |
| 22 | +- All performance instrumention is enabled by default, and will only take effect if the instrumented package is used. |
| 23 | + You don't need to use `autoDiscoverNodePerformanceMonitoringIntegrations()` anymore. |
| 24 | +- You need to ensure to call `Sentry.init()` _before_ you import any other packages. Otherwise, the packages cannot be |
| 25 | + instrumented: |
| 26 | + |
| 27 | +```js |
| 28 | +const Sentry = require('@sentry/node'); |
| 29 | +Sentry.init({ |
| 30 | + dsn: '...', |
| 31 | + // ... other config here |
| 32 | +}); |
| 33 | +// now require other things below this! |
| 34 | +const http = require('http'); |
| 35 | +const express = require('express'); |
| 36 | +// .... |
| 37 | +``` |
| 38 | + |
| 39 | +- Currently, we only support CJS-based Node application out of the box. There is experimental ESM support, see |
| 40 | + [the instructions](./packages/node-experimental/README.md#esm-support). |
| 41 | +- `startTransaction` and `span.startChild()` are no longer supported. This is due to the underlying change to |
| 42 | + OpenTelemetry powered performance instrumentation. See |
| 43 | + [docs on the new performance APIs](./docs/v8-new-performance-apis.md) for details. |
| 44 | + |
| 45 | +Related changes: |
| 46 | + |
| 47 | +- feat(node-experimental): Add missing re-exports (#10679) |
| 48 | +- feat(node-experimental): Move `defaultStackParser` & `getSentryRelease` (#10722) |
| 49 | +- feat(node-experimental): Move `errorHandler` (#10728) |
| 50 | +- feat(node-experimental): Move cron code over (#10742) |
| 51 | +- feat(node-experimental): Move integrations from node (#10743) |
| 52 | +- feat(node-experimental): Properly set request & session on http requests (#10676) |
| 53 | +- feat(opentelemetry): Support `forceTransaction` in OTEL (#10807) |
| 54 | +- feat(opentelemetry): Align span options with core span options (#10761) |
| 55 | +- feat(opentelemetry): Do not capture span events as breadcrumbs (#10612) |
| 56 | +- feat(opentelemetry): Ensure DSC & attributes are correctly set (#10806) |
| 57 | +- feat(opentelemetry): Fix & align isolation scope usage in node-experimental (#10570) |
| 58 | +- feat(opentelemetry): Merge node-experimental changes into opentelemetry (#10689) |
| 59 | +- ref(node-experimental): Cleanup re-exports (#10741) |
| 60 | +- ref(node-experimental): Cleanup tracing intergations (#10730) |
| 61 | +- ref(node-experimental): Copy transport & client to node-experimental (#10720) |
| 62 | +- ref(node-experimental): Remove custom `isInitialized` (#10607) |
| 63 | +- ref(node-experimental): Remove custom hub & scope (#10616) |
| 64 | +- ref(node-experimental): Remove deprecated class integrations (#10675) |
| 65 | +- ref(node-experimental): Rename `errorHandler` to `expressErrorHandler` (#10746) |
| 66 | +- ref(node-integration-tests): Migrate to new Http integration (#10765) |
| 67 | +- ref(node): Align semantic attribute handling (#10827) |
| 68 | + |
| 69 | +**- feat: Remove `@sentry/integrations` package (#10799)** |
| 70 | + |
| 71 | +This package is no longer published. You can instead import these pluggable integrations directly from your SDK package |
| 72 | +(e.g. `@sentry/browser` or `@sentry/react`). |
| 73 | + |
| 74 | +**- feat: Remove `@sentry/hub` package (#10783)** |
| 75 | + |
| 76 | +This package is no longer published. You can instead import directly from your SDK package (e.g. `@sentry/react` or |
| 77 | +`@sentry/node`). |
| 78 | + |
| 79 | +**- feat(v8): Remove @sentry/tracing (#10625)** |
| 80 | + |
| 81 | +This package is no longer published. You can instead import directly from your SDK package (e.g. `@sentry/react` or |
| 82 | +`@sentry/node`). |
| 83 | + |
| 84 | +**- feat: Set required node version to >=14.8.0 for all packages (#10834)** |
| 85 | + |
| 86 | +The minimum required node version is now 14.8+. If you need support for older node versions, you can stay on the v7 |
| 87 | +branch. |
| 88 | + |
| 89 | +**- Removed class-based integrations** |
| 90 | + |
| 91 | +We have removed most of the deprecated class-based integrations. Instead, you can use the functional styles: |
| 92 | + |
| 93 | +```js |
| 94 | +import * as Sentry from '@sentry/browser'; |
| 95 | +// v7 |
| 96 | +Sentry.init({ |
| 97 | + integrations: [new Sentry.BrowserTracing()], |
| 98 | +}); |
| 99 | +// v8 |
| 100 | +Sentry.init({ |
| 101 | + integrations: [new Sentry.browserTracingIntegration()], |
| 102 | +}); |
| 103 | +``` |
| 104 | + |
| 105 | +- ref: Remove `BrowserTracing` (#10653) |
| 106 | +- feat(v8/node): Remove LocalVariables class integration (#10558) |
| 107 | +- feat(v8/react): Delete react router exports (#10532) |
| 108 | +- feat(v8/vue): Remove all deprecated exports from vue (#10533) |
| 109 | +- feat(v8/wasm): Remove deprecated exports (#10552) |
| 110 | + |
| 111 | +**- feat(v8/browser): Remove XHR transport (#10703)** |
| 112 | + |
| 113 | +We have removed the XHR transport, and are instead using the fetch-based transport now by default. This means that if |
| 114 | +you are using Sentry in a browser environment without fetch, you'll need to either provide a fetch polyfill, or provide |
| 115 | +a custom transport to Sentry. |
| 116 | + |
| 117 | +**- feat(sveltekit): Update `@sentry/vite-plugin` to 2.x and adjust options API (#10813)** |
| 118 | + |
| 119 | +We have updated `@sentry/sveltekit` to use the latest version of `@sentry/vite-plugin`, which lead to changes in |
| 120 | +configuration options. |
| 121 | + |
| 122 | +### Other Changes |
| 123 | + |
| 124 | +- feat: Ensure `withActiveSpan` is exported everywhere (#10878) |
| 125 | +- feat: Allow passing `null` to `withActiveSpan` (#10717) |
| 126 | +- feat: Implement new Async Context Strategy (#10647) |
| 127 | +- feat: Remove `hub` from global, `hub.run` & hub utilities (#10718) |
| 128 | +- feat: Update default trace propagation targets logic in the browser (#10621) |
| 129 | +- feat: Ignore ResizeObserver and undefined error (#10845) |
| 130 | +- feat(browser): Export `getIsolationScope` and `getGlobalScope` (#10658) |
| 131 | +- feat(browser): Prevent initialization in browser extensions (#10844) |
| 132 | +- feat(core): Add metric summaries to spans (#10554) |
| 133 | +- feat(core): Decouple metrics aggregation from client (#10628) |
| 134 | +- feat(core): Lookup client on current scope, not hub (#10635) |
| 135 | +- feat(core): Make `setXXX` methods set on isolation scope (#10678) |
| 136 | +- feat(core): Make custom tracing methods return spans & set default op (#10633) |
| 137 | +- feat(core): Make global `addBreadcrumb` write to the isolation scope instead of current scope (#10586) |
| 138 | +- feat(core): Remove health check transaction filters (#10818) |
| 139 | +- feat(core): Streamline custom hub creation for node-experimental (#10555) |
| 140 | +- feat(core): Update `addEventProcessor` to add to isolation scope (#10606) |
| 141 | +- feat(core): Update `Sentry.addBreadcrumb` to skip hub (#10601) |
| 142 | +- feat(core): Use global `TextEncoder` and `TextDecoder` (#10701) |
| 143 | +- feat(deps): bump @sentry/cli from 2.26.0 to 2.28.0 (#10496) |
| 144 | +- feat(deps): bump @sentry/cli from 2.28.0 to 2.28.5 (#10620) |
| 145 | +- feat(deps): bump @sentry/cli from 2.28.5 to 2.28.6 (#10727) |
| 146 | +- feat(integrations): Capture error arguments as exception regardless of level in `captureConsoleIntegration` (#10744) |
| 147 | +- feat(metrics): Remove metrics method from `BaseClient` (#10789) |
| 148 | +- feat(node): Remove unnecessary URL imports (#10860) |
| 149 | +- feat(react): Drop support for React 15 (#10115) |
| 150 | +- feat(remix): Add Vite dev-mode support to Express instrumentation. (#10784) |
| 151 | +- fix: Export session API (#10711) |
| 152 | +- fix(angular-ivy): Add `exports` field to `package.json` (#10569) |
| 153 | +- fix(angular): Ensure navigations always create a transaction (#10646) |
| 154 | +- fix(core): Add lost scope tests & fix update case (#10738) |
| 155 | +- fix(core): Fix scope capturing via `captureContext` function (#10735) |
| 156 | +- fix(feedback): Replay breadcrumb for feedback events was incorrect (#10536) |
| 157 | +- fix(nextjs): Remove `webpack://` prefix more broadly from source map `sources` field (#10642) |
| 158 | +- fix(node): import `worker_threads` and fix node v14 types (#10791) |
| 159 | +- fix(node): Record local variables with falsy values, `null` and `undefined` (#10821) |
| 160 | +- fix(stacktrace): Always use `?` for anonymous function name (#10732) |
| 161 | +- fix(sveltekit): Avoid capturing Http 4xx errors on the client (#10571) |
| 162 | +- fix(sveltekit): Ensure navigations and redirects always create a new transaction (#10656) |
| 163 | +- fix(sveltekit): Properly await sourcemaps flattening (#10602) |
| 164 | +- fix(types): Improve attachment type (#10832) |
| 165 | +- fx(node): Fix anr worker check (#10719) |
| 166 | +- ref: Cleanup browser profiling integration (#10766) |
| 167 | +- ref: Collect child spans references via non-enumerable on Span object (#10715) |
| 168 | +- ref: Make scope setters on hub only write to isolation scope (#10572) |
| 169 | +- ref: Store runtime on isolation scope (#10657) |
| 170 | +- ref(astro): Put request as SDK processing metadata instead of span data (#10840) |
| 171 | +- ref(core): Always use a (default) ACS (#10644) |
| 172 | +- ref(core): Make `on` and `emit` required on client (#10603) |
| 173 | +- ref(core): Make remaining client methods required (#10605) |
| 174 | +- ref(core): Rename `Span` class to `SentrySpan` (#10687) |
| 175 | +- ref(core): Restructure hub exports (#10639) |
| 176 | +- ref(core): Skip hub in top level `captureXXX` methods (#10688) |
| 177 | +- ref(core): Allow `number` as span `traceFlag` (#10855) |
| 178 | +- ref(core): Remove `status` field from Span (#10856) |
| 179 | +- ref(remix): Make `@remix-run/router` a dependency. (#10479) |
| 180 | +- ref(replay): Use `beforeAddBreadcrumb` hook instead of scope listener (#10600) |
| 181 | +- ref(sveltekit): Hard-pin Vite plugin version (#10843) |
| 182 | + |
| 183 | +### Other Deprecation Removals/Changes |
| 184 | + |
| 185 | +We have also removed or updated a variety of deprecated APIs. |
| 186 | + |
| 187 | +- feat(v8): Remove `extractTraceparentData` export (#10559) |
| 188 | +- feat(v8): Remove defaultIntegrations deprecated export (#10691) |
| 189 | +- feat(v8): Remove deprecated `span.isSuccess` method (#10699) |
| 190 | +- feat(v8): Remove deprecated `traceHeaders` method (#10776) |
| 191 | +- feat(v8): Remove deprecated addInstrumentationHandler (#10693) |
| 192 | +- feat(v8): Remove deprecated configureScope call (#10565) |
| 193 | +- feat(v8): Remove deprecated runWithAsyncContext API (#10780) |
| 194 | +- feat(v8): Remove deprecated spanStatusfromHttpCode export (#10563) |
| 195 | +- feat(v8): Remove deprecated trace and startActiveSpan methods (#10593) |
| 196 | +- feat(v8): Remove requestData deprecations (#10626) |
| 197 | +- feat(v8): Remove Severity enum (#10551) |
| 198 | +- feat(v8): Remove span.origin (#10753) |
| 199 | +- feat(v8): Remove span.toTraceparent method (#10698) |
| 200 | +- feat(v8): Remove usage of span.description and span.name (#10697) |
| 201 | +- feat(v8): Update eventFromUnknownInput to only use client (#10692) |
| 202 | +- feat(v8/astro): Remove deprecated exports from Astro SDK (#10611) |
| 203 | +- feat(v8/browser): Remove `_eventFromIncompleteOnError` usage (#10553) |
| 204 | +- feat(v8/browser): Remove XHR transport (#10703) |
| 205 | +- feat(v8/browser): Rename TryCatch integration to `browserApiErrorsIntegration` (#10755) |
| 206 | +- feat(v8/core): Remove deprecated setHttpStatus (#10774) |
| 207 | +- feat(v8/core): Remove deprecated updateWithContext method (#10800) |
| 208 | +- feat(v8/core): Remove getters for span.op (#10767) |
| 209 | +- feat(v8/core): Remove span.finish call (#10773) |
| 210 | +- feat(v8/core): Remove span.instrumenter and instrumenter option (#10769) |
| 211 | +- feat(v8/ember): Remove deprecated exports (#10535) |
| 212 | +- feat(v8/integrations): Remove deprecated exports (#10556) |
| 213 | +- feat(v8/node): Remove deepReadDirSync export (#10564) |
| 214 | +- feat(v8/node): Remove deprecated anr methods (#10562) |
| 215 | +- feat(v8/node): Remove getModuleFromFilename export (#10754) |
| 216 | +- feat(core): Remove deprecated props from `Span` interface (#10854) |
| 217 | +- fix(v8): Remove deprecated tracing config (#10870) |
| 218 | +- ref: Make `setupOnce` optional in integrations (#10729) |
| 219 | +- ref: Migrate transaction source from metadata to attributes (#10674) |
| 220 | +- ref: Refactor remaining `makeMain` usage (#10713) |
| 221 | +- ref(astro): Remove deprecated Replay and BrowserTracing (#10768) |
| 222 | +- feat(core): Remove deprecated `scope.applyToEvent()` method (#10842) |
| 223 | +- ref(integrations): Remove offline integration (#9456) |
| 224 | +- ref(nextjs): Remove all deprecated API (#10549) |
| 225 | +- ref: Remove `lastEventId` (#10585) |
| 226 | +- ref: Remove `reuseExisting` option for ACS (#10645) |
| 227 | +- ref: Remove `tracingOrigins` options (#10614) |
| 228 | +- ref: Remove deprecated `showReportDialog` APIs (#10609) |
| 229 | +- ref: Remove usage of span tags (#10808) |
| 230 | +- ref: Remove user segment (#10575) |
| 231 | + |
| 232 | +## 7.105.0 |
| 233 | + |
| 234 | +### Important Changes |
| 235 | + |
| 236 | +- **feat: Ensure `withActiveSpan` is exported everywhere (#10877)** |
| 237 | + |
| 238 | +You can use the `withActiveSpan` method to ensure a certain span is the active span in a given callback. This can be |
| 239 | +used to create a span as a child of a specific span with the `startSpan` API methods: |
| 240 | + |
| 241 | +```js |
| 242 | +const parentSpan = Sentry.startInactiveSpan({ name: 'parent' }); |
| 243 | +if (parentSpan) { |
| 244 | + withActiveSpan(parentSpan, () => { |
| 245 | + // This will be a direct child of parentSpan |
| 246 | + const childSpan = Sentry.startInactiveSpan({ name: 'child' }); |
| 247 | + }); |
| 248 | +} |
| 249 | +``` |
| 250 | + |
| 251 | +## 7.104.0 |
| 252 | + |
| 253 | +### Important Changes |
| 254 | + |
| 255 | +- **feat(performance): create Interaction standalone spans on inp events (#10709)** |
| 256 | + |
| 257 | +This release adds support for the INP web vital. This is currently only supported for Saas Sentry, and product support |
| 258 | +is released with the upcoming `24.3.0` release of self-hosted. |
| 259 | + |
| 260 | +To opt-in to this feature, you can use the `enableInp` option in the `browserTracingIntegration`: |
| 261 | + |
| 262 | +```js |
| 263 | +Sentry.init({ |
| 264 | + integrations: [ |
| 265 | + Sentry.browserTracingIntegration({ |
| 266 | + enableInp: true, |
| 267 | + }); |
| 268 | + ] |
| 269 | +}) |
| 270 | +``` |
| 271 | + |
| 272 | +### Other Changes |
| 273 | + |
| 274 | +- feat(feedback): Flush replays when feedback form opens (#10567) |
| 275 | +- feat(profiling-node): Expose `nodeProfilingIntegration` (#10864) |
| 276 | +- fix(profiling-node): Fix dependencies to point to current versions (#10861) |
| 277 | +- fix(replay): Add `errorHandler` for replayCanvas integration (#10796) |
| 278 | + |
| 279 | +## 7.103.0 |
| 280 | + |
| 281 | +### Important Changes |
| 282 | + |
| 283 | +- **feat(core): Allow to pass `forceTransaction` to `startSpan()` APIs (#10819)** |
| 284 | + |
| 285 | +You can now pass `forceTransaction: true` to `startSpan()`, `startSpanManual()` and `startInactiveSpan()`. This allows |
| 286 | +you to start a span that you want to be a transaction, if possible. Under the hood, the SDK will connect this span to |
| 287 | +the running active span (if there is one), but still send the new span as a transaction to the Sentry backend, if |
| 288 | +possible, ensuring it shows up as a transaction throughout the system. |
| 289 | + |
| 290 | +Please note that setting this to `true` does not _guarantee_ that this will be sent as a transaction, but that the SDK |
| 291 | +will try to do so. You can enable this flag if this span is important to you and you want to ensure that you can see it |
| 292 | +in the Sentry UI. |
| 293 | + |
| 294 | +### Other Changes |
| 295 | + |
| 296 | +- fix: Make breadcrumbs option optional in WinterCGFetch integration (#10792) |
| 297 | + |
| 298 | +## 7.102.1 |
| 299 | + |
| 300 | +- fix(performance): Fixes latest route name and source for interactions not updating properly on navigation (#10702) |
| 301 | +- fix(tracing): Guard against missing `window.location` (#10659) |
| 302 | +- ref: Make span types more robust (#10660) |
| 303 | +- ref(remix): Make `@remix-run/router` a dependency (v7) (#10779) |
| 304 | + |
| 305 | +## 7.102.0 |
| 306 | + |
| 307 | +- fix: Export session API (#10712) |
| 308 | +- fix(core): Fix scope capturing via `captureContext` function (#10737) |
| 309 | + |
| 310 | +## 7.101.1 |
| 311 | + |
| 312 | +In version 7.101.0 the `@sentry/hub` package was missing due to a publishing issue. This release contains the package |
| 313 | +again. |
| 314 | + |
| 315 | +- fix(nextjs): Remove `webpack://` prefix more broadly from source map `sources` field (#10641) |
| 316 | + |
7 | 317 | ## 7.101.0
|
8 | 318 |
|
9 | 319 | - feat: Export semantic attribute keys from SDK packages (#10637)
|
|
0 commit comments