Skip to content

meta(changelog): Update changelog for 9.39.0 #17020

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 38 commits into from
Jul 15, 2025
Merged

Conversation

chargome
Copy link
Member

No description provided.

github-actions bot and others added 30 commits July 11, 2025 12:11
[Gitflow] Merge master into develop
…ob (#16930)

Looks like node-core integration tests ran in our Node unit test job
matrix. This is because the package is not excluded from the `test:pr`
top-level NPM script.
resolves #16913

---------

Co-authored-by: Andrei Borza <[email protected]>
resolves https://linear.app/getsentry/issue/JS-663

Categorizing the attributes this way helps us differentiate between the
ai attributes added by vercel compared to the otel semantic conventions.
…signment on web vital spans (#16893)

Our standalone web vital spans need to include the span id of the
`pageload` span s.t. we can correctly assign the web vital value to the
respective pageload span in the Sentry backend.

In the previous implementation, we'd simply wait for a tick after
tracking the web vitals, get the active root span and take its spanId if
it was a pageload span. However, this relies on the assumption that the
pageload span is indeed started immediately. By default this happens but
users can always deactivate default behaviour and call
`startBrowserTracingPageloadSpan` whenever they want (for example, in a
custom `browserTracingIntegration`).
Furthermore, this "wait for a tick" logic always bugged me and was only
done because `getClient()` would not yet return the already initialized
client.

This change now makes the pageload spanId retrieval more robust by 
- adding and listening to a new SDK lifecycle hook:
`afterStartPageloadSpan`. This callback fires as soon as the pageload
span is actually started and available.
- passing the `client` from the `browserTracingIntegration`'s `setup`
hook into the web vital listening function so that we can remove the
`setTimeout(_, 0)` logic.
resolves #16940

Migrates `@sentry/react` to use the `debug` utility instead of `logger`
from `@sentry/core`.

This change aligns with the ongoing effort to streamline logging
utilities within the SDK, moving towards a more focused `debug`
function.

---

Before submitting a pull request, please take a look at our

[Contributing](https://github.com/getsentry/sentry-javascript/blob/master/CONTRIBUTING.md)
guidelines and verify:

- [x] If you've added code that should be tested, please add tests.
- [x] Ensure your code lints and the test suite passes (`yarn lint`) &
(`yarn test`).

---------

Co-authored-by: Cursor Agent <[email protected]>
This is pretty small, but apparently `Object.assign()` also counts as
side effect.

Part of #16846
)

Instead of having a side effect of writing on the GLOBAL_OBJ, we can use
a global singleton instead.

Part of #16846
…16928)

When we we start and send a web vital
standalone span while an idlespan (e.g. pageload) was still running,
we'd restart the idle span's child span timeout (i.e. prolong its
duration potentially). Is is unintended because by definition the
standalone span should not be associated with a potentially ongoing idle
span and its tree.

This can happen, for example when users hide the page while the pageload
span is still active, causing web vitals to be reported.
Link "homepage" on https://www.npmjs.com/package/@sentry/aws-serverless
links to a 404 page, as it targets the old `serverless` URL.

Is:
https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless
Should be:
https://github.com/getsentry/sentry-javascript/tree/master/packages/aws-serverless

This is the fix.

Not sure about the commit message, feel free to pick this up and adjust.

This PR is similar to the one for GCP:
#14411
resolves #16920

This will prevent recursive calls to `beforeSendLog` when using console
logging instrumentation which will cause crashes.
To ensure we get the correct node version etc.
This PR adds the external contributor to the CHANGELOG.md file, so that
they are credited for their contribution. See #16979

Co-authored-by: andreiborza <[email protected]>
…#16919)

This PR updates `@sentry-internal/node-native-stacktrace` to v0.2.0
which supports disabling last time tracking per thread.

The integration needed quite a few changes and I split it into more
functions but all the tests still pass!

This PR then adds `pauseEventLoopBlockDetection()`,
`restartEventLoopBlockDetection()` which can be used to pause and
restart detection and `disableBlockDetectionForCallback` which can be
used like this:

```ts
import { disableBlockDetectionForCallback } from '@sentry/node-native';

disableBlockDetectionForCallback(() => {
  someLongBlockingFn();
});
```
resolves #16937

Also reaches into `packages/browser-utils/src/networkUtils.ts` to make a
quick change.

Please review `packages/replay-internal/src/util/logger.ts` carefully.
In addition to 404, we now also drop 401, 402, 403 and 3xx (e.g. 301
MOVED_PERMANTENTLY) spans by default.

These are usually not helpful.

Noticed this in some react-router E2E test where 301 spans were messing
with the test, but these should not even be captured really.

---------

Co-authored-by: Andrei Borza <[email protected]>
Allows rollup minor and patch versions above 4.35.0 so that rollup
dependencies specifying a similar version range can be better deduped.
Instead, we can just check the required things directly on the span.
This is likely a bit more expensive than checking a map, but I would not
assume this operation should be happening too excessively, so IMHO this
should be fine.

This is also part of
#16846

@aliu39 do you see any problems with this change?
…16984)

This updates the browser tracing implementation in react router to
ensure that we always have parametrized routes.

In the previous implementation, if the parametrized route was the same
as the "initial" one, we would just do nothing and the source remains
URL. We would also not set the origin of the spans. this is not correct,
because we actually ensured this is parametrized (there are simply no
parameters in, but still!), so the source should still be `route` in
this case.
This adds a new attribute to spans that we send from the Node SDK
because their parent span was already sent. This can be used by us or
customers to debug why certain things show up as transactions/root spans
in product. We could possibly also use this in the trace view to give
users helpful pointers.
While adding the SDK to the release-registry I noticed that we never
apply the correct metadata to node-core.


64d056a
failing tests show the node-core SDK getting incorrect
`sentry.javascript.node` metadata (from `NodeClient`)


88a975a
applies correct metadata to both SDKs

I was debating changing the underlying `NodeClient` to not automatically
set `sentry.javascript.node` but wasn't sure of the implications so
decided not to.
mydea and others added 8 commits July 15, 2025 14:45
…16986)

This updates react router http.server handling to ensure:

* That we always have a correct route/url source
* Streamlines how we get rid of the weird `*` transaction name by just
using `processEvent` in the integration. This means we now always add
the server integration, it just does less in non-matching node versions.
* Ensure we always have a good span origin
* Ensure the name of the spans is consistent with the target (e.g.
containing the .data suffix) - we can revisit this later but for now
this is consistent I'd say.
resolves #16942

---------

Co-authored-by: Cursor Agent <[email protected]>
resolves #16941

---------

Co-authored-by: Cursor Agent <[email protected]>
@chargome chargome self-assigned this Jul 15, 2025
@chargome chargome requested a review from a team as a code owner July 15, 2025 14:04
Copy link
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 23.88 kB added added
@sentry/browser - with treeshaking flags 22.35 kB added added
@sentry/browser (incl. Tracing) 39.75 kB added added
@sentry/browser (incl. Tracing, Replay) 77.88 kB added added
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 67.61 kB added added
@sentry/browser (incl. Tracing, Replay with Canvas) 82.58 kB added added
@sentry/browser (incl. Tracing, Replay, Feedback) 94.68 kB added added
@sentry/browser (incl. Feedback) 40.58 kB added added
@sentry/browser (incl. sendFeedback) 28.56 kB added added
@sentry/browser (incl. FeedbackAsync) 33.46 kB added added
@sentry/react 25.61 kB added added
@sentry/react (incl. Tracing) 41.72 kB added added
@sentry/vue 28.31 kB added added
@sentry/vue (incl. Tracing) 41.53 kB added added
@sentry/svelte 23.9 kB added added
CDN Bundle 25.18 kB added added
CDN Bundle (incl. Tracing) 39.44 kB added added
CDN Bundle (incl. Tracing, Replay) 75.44 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) 80.91 kB added added
CDN Bundle - uncompressed 73.54 kB added added
CDN Bundle (incl. Tracing) - uncompressed 116.99 kB added added
CDN Bundle (incl. Tracing, Replay) - uncompressed 231.18 kB added added
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 243.99 kB added added
@sentry/nextjs (client) 43.75 kB added added
@sentry/sveltekit (client) 40.2 kB added added
@sentry/node 167.69 kB added added
@sentry/node - without tracing 100.34 kB added added
@sentry/aws-serverless 128.48 kB added added

@chargome chargome merged commit 98cc6e3 into master Jul 15, 2025
169 checks passed
@chargome chargome deleted the prepare-release/9.39.0 branch July 15, 2025 14:26
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.

8 participants