Skip to content

Conversation

chargome
Copy link
Member

No description provided.

dependabot bot and others added 29 commits September 17, 2025 10:30
Bumps [@sentry/cli](https://github.com/getsentry/sentry-cli) from 2.52.0
to 2.53.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-cli/releases"><code>@​sentry/cli</code>'s
releases</a>.</em></p>
<blockquote>
<h2>2.53.0</h2>
<h3>Various fixes &amp; improvements</h3>
<ul>
<li>feat(mobile-app): Add release notes option (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2712">#2712</a>)
by <a
href="https://github.com/noahsmartin"><code>@​noahsmartin</code></a></li>
</ul>
<h3>Changes from 2.53.0-alpha</h3>
<p>2.53.0-alpha reintroduced the <code>build</code> (previously named
<code>mobile-app</code>) commands. 2.53.0 is the first stable release to
reintroduce them.</p>
<p>Please note, the <code>build</code> commands are still experimental,
and are therefore subject to breaking changes, including removal, in any
release, without notice.</p>
<ul>
<li>feat(mobile-app): Add default vcs base_ref parsing for mobile-app
subcommand (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2706">#2706</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>chore(mobile-app): Rename mobile-app subcommand to build (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2719">#2719</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>Revert &quot;feat(mobile-app): Reintroduce mobile-app feature gating
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2643">#2643</a>)&quot;
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2670">#2670</a>)
by <a
href="https://github.com/noahsmartin"><code>@​noahsmartin</code></a></li>
<li>meta(cursor): Add rule to avoid explicit type annotations (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2717">#2717</a>)
by <a
href="https://github.com/szokeasaurusrex"><code>@​szokeasaurusrex</code></a></li>
<li>retry on cloudflare timeout (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2695">#2695</a>)
by <a
href="https://github.com/manishrawat1992"><code>@​manishrawat1992</code></a></li>
</ul>
<h2>2.53.0-alpha</h2>
<p>This release reintroduces the <code>build</code> (previously named
<code>mobile-app</code>) commands.</p>
<h3>Various fixes &amp; improvements</h3>
<ul>
<li>feat(mobile-app): Add default vcs base_ref parsing for mobile-app
subcommand (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2706">#2706</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>chore(mobile-app): Rename mobile-app subcommand to build (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2719">#2719</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>Revert &quot;feat(mobile-app): Reintroduce mobile-app feature gating
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2643">#2643</a>)&quot;
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2670">#2670</a>)
by <a
href="https://github.com/noahsmartin"><code>@​noahsmartin</code></a></li>
<li>meta(cursor): Add rule to avoid explicit type annotations (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2717">#2717</a>)
by <a
href="https://github.com/szokeasaurusrex"><code>@​szokeasaurusrex</code></a></li>
<li>retry on cloudflare timeout (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2695">#2695</a>)
by <a
href="https://github.com/manishrawat1992"><code>@​manishrawat1992</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md"><code>@​sentry/cli</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>2.53.0</h2>
<h3>Various fixes &amp; improvements</h3>
<ul>
<li>feat(mobile-app): Add release notes option (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2712">#2712</a>)
by <a
href="https://github.com/noahsmartin"><code>@​noahsmartin</code></a></li>
</ul>
<h3>Changes from 2.53.0-alpha</h3>
<p>2.53.0-alpha reintroduced the <code>build</code> (previously named
<code>mobile-app</code>) commands. 2.53.0 is the first stable release to
reintroduce them.</p>
<p>Please note, the <code>build</code> commands are still experimental,
and are therefore subject to breaking changes, including removal, in any
release, without notice.</p>
<ul>
<li>feat(mobile-app): Add default vcs base_ref parsing for mobile-app
subcommand (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2706">#2706</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>chore(mobile-app): Rename mobile-app subcommand to build (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2719">#2719</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>Revert &quot;feat(mobile-app): Reintroduce mobile-app feature gating
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2643">#2643</a>)&quot;
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2670">#2670</a>)
by <a
href="https://github.com/noahsmartin"><code>@​noahsmartin</code></a></li>
<li>meta(cursor): Add rule to avoid explicit type annotations (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2717">#2717</a>)
by <a
href="https://github.com/szokeasaurusrex"><code>@​szokeasaurusrex</code></a></li>
<li>retry on cloudflare timeout (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2695">#2695</a>)
by <a
href="https://github.com/manishrawat1992"><code>@​manishrawat1992</code></a></li>
</ul>
<h2>2.53.0-alpha</h2>
<p>This release reintroduces the <code>build</code> (previously named
<code>mobile-app</code>) commands.</p>
<h3>Various fixes &amp; improvements</h3>
<ul>
<li>feat(mobile-app): Add default vcs base_ref parsing for mobile-app
subcommand (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2706">#2706</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>chore(mobile-app): Rename mobile-app subcommand to build (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2719">#2719</a>)
by <a href="https://github.com/rbro112"><code>@​rbro112</code></a></li>
<li>Revert &quot;feat(mobile-app): Reintroduce mobile-app feature gating
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2643">#2643</a>)&quot;
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2670">#2670</a>)
by <a
href="https://github.com/noahsmartin"><code>@​noahsmartin</code></a></li>
<li>meta(cursor): Add rule to avoid explicit type annotations (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2717">#2717</a>)
by <a
href="https://github.com/szokeasaurusrex"><code>@​szokeasaurusrex</code></a></li>
<li>retry on cloudflare timeout (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2695">#2695</a>)
by <a
href="https://github.com/manishrawat1992"><code>@​manishrawat1992</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/80ffbe58a1c827486a797855c19a292e4668d4f5"><code>80ffbe5</code></a>
meta: update changelog</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/783b75e2cb0f728a2dbf68f694fb66665c5f86d7"><code>783b75e</code></a>
release: 2.53.0</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/09754edd0c85ae2aebbb6c9b1f724648cf74470d"><code>09754ed</code></a>
meta(cursor): Tell Cursor to <code>cargo fmt</code> (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2721">#2721</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/87be223c54e19ce86fcaaad8d926a8394ed4419d"><code>87be223</code></a>
feat(mobile-app): Add release notes option (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2712">#2712</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/d20139c587db7d6fa655e1f166632e121083d3f5"><code>d20139c</code></a>
Merge branch 'release/2.53.0-alpha'</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/29e36b907837a829622a2328b75d4b075b75fbdf"><code>29e36b9</code></a>
meta: Update changelog</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/ab8f32c5a555ec59bad37cbc321601cb0f146301"><code>ab8f32c</code></a>
release: 2.53.0-alpha</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/9064d5ead212cb1e21a2d5c7e6df9b43dfae0982"><code>9064d5e</code></a>
feat(mobile-app): Add default vcs base_ref parsing for mobile-app
subcommand ...</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/7f5cb5d3b43eaed458c8ce98a1d740b3683cb2f4"><code>7f5cb5d</code></a>
chore(mobile-app): Rename mobile-app subcommand to build (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2719">#2719</a>)</li>
<li><a
href="https://github.com/getsentry/sentry-cli/commit/29151e598408f77c767f671e20fdef4a5a0ea3e1"><code>29151e5</code></a>
Revert &quot;feat(mobile-app): Reintroduce mobile-app feature gating (<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2643">#2643</a>)&quot;
(<a
href="https://redirect.github.com/getsentry/sentry-cli/issues/2670">#2670</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/getsentry/sentry-cli/compare/2.52.0...2.53.0">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@sentry/cli&package-manager=npm_and_yarn&previous-version=2.52.0&new-version=2.53.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Adds some test for generating the test matrix to be able to easily debug
it.
Noticed while working on
#17679, we
incorrectly changed the `this` context here (which is also why TS
complained).

I rewrote this to a proxy which should keep the context properly.
…nction` (#17680)

Noticed while working on
#17679, this was
actually incorrect here. `handleCallbackErrors` does not actually do
anything, you need to still call the function you want to call in the
error case!

Actually we can just drop this as this error is handled by some other
handler anyhow, I think, according to the tests!
#17653 failed in CI
because of a non-breaking plugin option change in 4.3.0. Because we use
both Vite and Rollup plugins in Nuxt, the combined `getPluginOptions`
function would throw a type error if the respective option types
differed.

This PR bumps both dependencies at once which should fix the type error.
I've seen a few places where we are wrapping things that could be sync
or async, and we want to do something with the return value. By adding
an onSuccess handler to `handelCallbackErrors` we can handle this more
generically in the future:

```js
const wrapped = handleCallbackErrors(
  () => fn(), 
  // error handler
  (_err) => {}, 
  // finally handler
  () => {},
  // success handler, gets value or resolved value if function returns a promise
  (_value) => {}
);
```

While scanning a bit for places where we could already use this, I also
found two bugs around this, opened separate PRs for them:
* #17680
* #17681
We make quite heavy use of it in event processing, not touching this for
now, but in other places it should not be needed IMHO. These are all
places that will never be sync generally speaking so it is fine to make
them "proper" async.

Somewhat related to
#17634

---------

Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
Looking at
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status#redirection_messages,
it seems that we should not filter out 300, 302 and 304 status codes by
default:

> [300 Multiple
Choices](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/300)
In [agent-driven content
negotiation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Content_negotiation#agent-driven_negotiation),
the request has more than one possible response and the user agent or
user should choose one of them. There is no standardized way for clients
to automatically choose one of the responses, so this is rarely used.
> [304 Not
Modified](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/304)
This is used for caching purposes. It tells the client that the response
has not been modified, so the client can continue to use the same
[cached](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Caching)
version of the response.

In contrast, the others seem safe to continue to filter:

> [301 Moved
Permanently](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/301)
The URL of the requested resource has been changed permanently. The new
URL is given in the response.

> [302
Found](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/302)
This response code means that the URI of requested resource has been
changed temporarily. Further changes in the URI might be made in the
future, so the same URI should be used by the client in future requests.

> [303 See
Other](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/303)
The server sent this response to direct the client to get the requested
resource at another URI with a
[GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/GET)
request.

> [305 Use Proxy
Deprecated](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status#305_use_proxy)
Defined in a previous version of the HTTP specification to indicate that
a requested response must be accessed by a proxy. It has been deprecated
due to security concerns regarding in-band configuration of a proxy.

> [306
unused](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status#306_unused)
This response code is no longer used; but is reserved. It was used in a
previous version of the HTTP/1.1 specification.

> [307 Temporary
Redirect](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/307)
The server sends this response to direct the client to get the requested
resource at another URI with the same method that was used in the prior
request. This has the same semantics as the 302 Found response code,
with the exception that the user agent must not change the HTTP method
used: if a
[POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/POST)
was used in the first request, a POST must be used in the redirected
request.

> [308 Permanent
Redirect](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/308)
This means that the resource is now permanently located at another URI,
specified by the
[Location](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Location)
response header. This has the same semantics as the 301 Moved
Permanently HTTP response code, with the exception that the user agent
must not change the HTTP method used: if a
[POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/POST)
was used in the first request, a POST must be used in the second
request.

eventually it makes sense to unify this between node/node-core, but this
should happen when we merge the httpIntegration split PR.
- Emit a debug log when a span matches `ignoreSpans`
- Adjust the warning when returning `null` in `beforeSendSpan` to
suggest `ignoreSpans` instead

closes #17687
…ilterIntegration` (#17693)

As reported in
#17674 our previous
filter to exclude builtin or native stack frames from
`thirdPartyErrorFilterIntegration` filtering logic would incorrectly
still let some native frames slip through. This PR expands the check and
lets the integration only consider frames with a filename (as
previously) AND with at least a `lineno` or `colno`. If neither of these
properties are present, we exclude them from being a factor in
determining 1st vs. 3rd party.

Also added integration tests for `thirdPartyErrorsFilterIntegration`.

closes #17674
…are ignored (#17700)

This PR fixes a problem reported in
#17451 where
ignoring spans in idle root spans (pageload and navigations most
prominently) caused the root span duration to be perceived much longer
than reasonable. This is only a problem for idle spans in browser, so
this PR applies a pragmatic fix to adjust the end time stamp:

We already adjust the time stamp when we end the idle span. So we might
as well at this point take any to-be-removed-because-of-`ignoreSpans`
spans out of this calculation. This should work well enough without
throwing a bunch of idle-span specific logic into the client or
completely changing the point in the event lifecycle where `ignoreSpans`
is applied.

closes #17451
This PR implements instrumentation for the Google GenerativeAI SDK,
adding automatic tracing for both direct model calls
(models.generateContent) and conversational chat sessions (chats.create
+ sendMessage). The implementation follows Sentry's AI Agents Manual
Instrumentation conventions and includes integration tests.

Usage:

```
import * as Sentry from '@sentry/node';

Sentry.init({
  integrations: [
    Sentry.googleGenAIIntegration({
      recordInputs: true,   // Record prompts/messages
      recordOutputs: true,  // Record AI responses
    }),
  ],
});

// Chat Google GenAI calls are now automatically instrumented
```
…ons (#17696)

Quick PR to streamline the stack frame `module_metadata` property
assignment (`addMetadataToStackFrames`) and cleanup
(`stripMetadataFromStackFrames`) logic, since we can use optional
chaining now without a bundle size hit from polyfilling.

Originally went with moving the cleanup logic into the client but
decided against it due to the bundle size hit (see comment).
This avoids looking up the integration for anthropic-ai instrumentation,
instead relying on this being passed in (which it already is). When
manually instrumenting the client you need to pass in the options
directly.

1. Node: Options are passed from the integration to
`instrumentAnthropicAiClient` anyhow, so nothing changes
2. cloudflare/vercel-edge: There is no integration, users need to
manually call `instrumentAnthropicAiClient()` and pass in the options
anyhow (no integration to look anything up from exists there)

This required updating the tests to actually use auto instrumentation
properly instead of manual client wrapping, which is overall a good
change anyhow IMHO.
This PR fixes two edge cases around our client hook subscriber
management:

1. Registering the same callback instance twice on the same hook,
resulted in the callback only being invoked once. Fixed by wrapping the
passed callback in a function to "unique-ify" it.
2. Unregistering one callback synchronously within the callback, caused
other callbacks to not be invoked due to in-place, sync array mutation.
Fixed by converting the hooks data structure from `Array<Function>` to
`Set<Function>` which is resilient to sync, in-place mutation. This also
lets us remove the workaround introduced in
#17272 where we
initially discovered this bug.

Added regression tests for both cases that failed beforehand.

closes #17276
The problem was that when anything inside of the E2E test apps was
changed, we _only_ looked at this, not at the affected projects anymore.
With this fix, we collect a set from both sources, ensuring anything
changed/affected is run.
Next.js has their own fetch instrumentation, but when people use their
own OTel setup, we don't want to disable that.

fixes #17581
…ds (#17698)

Supercedes #16874

This PR makes two changes

1. It adds `logger` as an export to `@sentry/core`, and then refactors
the `browser`, `cloudflare` and `vercel-edge` packages to just re-export
`@sentry/core`'s logger.

This change makes it easy to use logging in an isomorphic way, and
reduces duplication between our various packages. We couldn't change the
export from `node-core` because it has a different type signature than
the standard logger.

2. It expands the logger exports to accept an optional scope argument.
This allows for users to provide their own custom clients to the
methods, which helps with standalone client cases.

```js
import * as Sentry from "@sentry/browser";

const client = createMySentryClient();
const scope = new Sentry.Scope();
scope.setClient(client);

Sentry.logger.info("Hello World!", {}, { scope });
```
…PageLoaded()` (#17697)

Add new functionality to `browserTracingIntegration`: By
setting the new `enableReportPageLoaded` option to `true`, users can
take full control* of the pageload span duration. It will stay active
until `Sentry.reportPageLoaded()` is called*. This new functionality is
opt-in and nothing changes for the default idle span mechanism.
…#17703)

ref #16737

Right now if users use `console.log` like so:

```js
console.log("here", "is", "my", "log", "statement");
```

The console logging integration will emit a log with log message `"here
is my log statement"`.

Some users would like it if we automatically paramaterized this into a
template, given there are separate arguments being sent into the logging
statement. So the above log statement would generate

```json
{
  "sentry.message.template": "here {} {} {} {}",
  "sentry.message.parameter.0": "is",
  "sentry.message.parameter.1": "my",
  "sentry.message.parameter.2": "log",
  "sentry.message.parameter.3": "statement",
}
```

This paramaterization is what this PR does, which provides a much better
user experience.

One edge case that we need to watch out for is console substitution
patterns like `%s`, `%d`, `%i`, `%f`, `%o`, `%O`, `%c`. Read more about
this in the [MDN
docs](https://developer.mozilla.org/en-US/docs/Web/API/console). When
encountering a console substitution pattern in the string, we elect to
not generate string templates, as parsing the string to evaluate it gets
too complicated client side.
This PR adds the external contributor to the CHANGELOG.md file, so that
they are credited for their contribution. See #17719

Co-authored-by: Lms24 <8420481+Lms24@users.noreply.github.com>
@chargome chargome self-assigned this Sep 22, 2025
@chargome chargome requested a review from a team as a code owner September 22, 2025 11:39
Copy link
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 24.23 kB added added
@sentry/browser - with treeshaking flags 22.74 kB added added
@sentry/browser (incl. Tracing) 40.34 kB added added
@sentry/browser (incl. Tracing, Replay) 78.72 kB added added
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 68.38 kB added added
@sentry/browser (incl. Tracing, Replay with Canvas) 83.39 kB added added
@sentry/browser (incl. Tracing, Replay, Feedback) 95.59 kB added added
@sentry/browser (incl. Feedback) 40.95 kB added added
@sentry/browser (incl. sendFeedback) 28.88 kB added added
@sentry/browser (incl. FeedbackAsync) 33.8 kB added added
@sentry/react 25.94 kB added added
@sentry/react (incl. Tracing) 42.32 kB added added
@sentry/vue 28.72 kB added added
@sentry/vue (incl. Tracing) 42.14 kB added added
@sentry/svelte 24.25 kB added added
CDN Bundle 25.74 kB added added
CDN Bundle (incl. Tracing) 40.16 kB added added
CDN Bundle (incl. Tracing, Replay) 76.38 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) 81.88 kB added added
CDN Bundle - uncompressed 75.23 kB added added
CDN Bundle (incl. Tracing) - uncompressed 118.89 kB added added
CDN Bundle (incl. Tracing, Replay) - uncompressed 234.01 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 246.78 kB added added
@sentry/nextjs (client) 44.34 kB added added
@sentry/sveltekit (client) 40.76 kB added added
@sentry/node-core 49.98 kB added added
@sentry/node 152.19 kB added added
@sentry/node - without tracing 91.88 kB added added
@sentry/aws-serverless 105.33 kB added added

Copy link
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

Scenario Requests/s % of Baseline Prev. Requests/s Change %
GET Baseline 8,861 - - added
GET With Sentry 1,352 15% - added
GET With Sentry (error only) 6,104 69% - added
POST Baseline 1,191 - - added
POST With Sentry 519 44% - added
POST With Sentry (error only) 1,043 88% - added
MYSQL Baseline 3,219 - - added
MYSQL With Sentry 434 13% - added
MYSQL With Sentry (error only) 2,614 81% - added

Comment on lines +84 to +101
if (buildTool.startsWith('after-production-compile')) {
assets.push(path.posix.join(normalizedDistPath, getServerPattern({ useDirectoryPath: true })));

if (buildTool === 'after-production-compile-turbopack') {
// In turbopack we always want to upload the full static chunks directory
// as the build output is not split into pages|app chunks
assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));
} else {
// Webpack client builds in after-production-compile mode
if (widenClientFileUpload) {
assets.push(path.posix.join(normalizedDistPath, getStaticChunksPattern({ useDirectoryPath: true })));
} else {
assets.push(
path.posix.join(normalizedDistPath, getStaticChunksPagesPattern({ useDirectoryPath: true })),
path.posix.join(normalizedDistPath, getStaticChunksAppPattern({ useDirectoryPath: true })),
);
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potential bug: The new, more specific asset patterns for sourcemap uploads may miss files that the previous broader ** pattern would have captured, especially for client chunks not under pages/ or app/.
  • Description: The refactored logic in getBuildPluginOptions replaces a broad ** glob pattern with more specific asset paths for sourcemap uploads. By default, for webpack client builds, it only includes static/chunks/pages/** and static/chunks/app/**. This creates a functional regression where sourcemap files for other legitimate chunks (e.g., custom chunks or future Next.js chunk types) located directly under static/chunks/ could be missed. This would impair debugging capabilities for production errors, as the corresponding sourcemaps would not be uploaded. The existence of the widenClientFileUpload option suggests awareness of this narrower scope.

  • Suggested fix: To ensure all relevant sourcemaps are captured, consider making the static/chunks/** pattern the default for webpack client builds, similar to how Turbopack is handled. This would align with the previous behavior of capturing all chunks. Alternatively, if the narrower scope is intentional for performance, the widenClientFileUpload option should be documented clearly as a potential necessity for projects with custom chunking configurations.
    severity: 0.7, confidence: 0.9

Did we get this right? 👍 / 👎 to inform future reviews.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. The build output from webpack and turbopack differs
  2. The pattern of narrowing down the sourcemaps for webpack client uploads was not modified to how it was handled before

Copy link
Member

@andreiborza andreiborza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀

@chargome chargome merged commit a2e84ff into master Sep 22, 2025
364 of 366 checks passed
@chargome chargome deleted the prepare-release/10.13.0 branch September 22, 2025 12:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants