diff --git a/CHANGELOG.md b/CHANGELOG.md index da0e95f0abcf..b0c2152420fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ This release adds an environment check in `@sentry/nextjs` for Vercel deployments (using the `VERCEL_ENV` env variable), and only enables `SentryWebpackPlugin` if the environment is `production`. To override this, [setting `disableClientWebpackPlugin` or `disableServerWebpackPlugin` to `false`](https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#disable-sentrywebpackplugin) now takes precedence over other checks, rather than being a no-op. Note: Overriding this is not recommended! It can increase build time and clog Release Health data in Sentry with inaccurate noise. +- fix(integrations): Don't add empty stack trace in `RewriteFrames` (#5625) - fix(nextjs): Don't run webpack plugin on non-prod Vercel deployments (#5603) ## 7.11.1 diff --git a/packages/integrations/src/rewriteframes.ts b/packages/integrations/src/rewriteframes.ts index 7b1129e45032..b5b830eb557e 100644 --- a/packages/integrations/src/rewriteframes.ts +++ b/packages/integrations/src/rewriteframes.ts @@ -97,7 +97,7 @@ export class RewriteFrames implements Integration { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion values: event.exception!.values!.map(value => ({ ...value, - stacktrace: this._processStacktrace(value.stacktrace), + ...(value.stacktrace && { stacktrace: this._processStacktrace(value.stacktrace) }), })), }, }; diff --git a/packages/integrations/test/rewriteframes.test.ts b/packages/integrations/test/rewriteframes.test.ts index bbe0a157e44a..78aeec7949d4 100644 --- a/packages/integrations/test/rewriteframes.test.ts +++ b/packages/integrations/test/rewriteframes.test.ts @@ -4,6 +4,7 @@ import { RewriteFrames } from '../src/rewriteframes'; let rewriteFrames: RewriteFrames; let exceptionEvent: Event; +let exceptionWithoutStackTrace: Event; let windowsExceptionEvent: Event; let multipleStacktracesEvent: Event; @@ -31,6 +32,11 @@ describe('RewriteFrames', () => { ], }, }; + exceptionWithoutStackTrace = { + exception: { + values: [{}], + }, + }; multipleStacktracesEvent = { exception: { values: [ @@ -64,6 +70,13 @@ describe('RewriteFrames', () => { expect(event.exception!.values![0].stacktrace!.frames![0].filename).toEqual('app:///file1.js'); expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('app:///file2.js'); }); + + it('ignore exception without StackTrace', () => { + // @ts-ignore Validates that the Stacktrace does not exist before validating the test. + expect(exceptionWithoutStackTrace.exception?.values[0].stacktrace).toEqual(undefined); + const event = rewriteFrames.process(exceptionWithoutStackTrace); + expect(event.exception!.values![0].stacktrace).toEqual(undefined); + }); }); describe('default iteratee prepends custom prefix to basename if frame starts with `/`', () => {