Skip to content

Conversation

s1gr1d
Copy link
Member

@s1gr1d s1gr1d commented Sep 29, 2025

Note

Updates CHANGELOG.md with the 10.16.0 release notes, adding key features, fixes, and internal changes.

  • Release Notes (10.16.0) in CHANGELOG.md:
    • Features: logs replay_is_buffering flag; React Router loadContext type update; attach replay IDs to logs only when sampled.
    • Fixes: browser CLS span timestamp when CLS=0; core Anthropics MessageStream compatibility; Next.js turbopack config (no chalk); React avoid extra navigation span on pageload.
    • Internal: AWS build cache cleanup; publish_release command; aws-serverless build/readme improvements; core promise buffer refactor; e2e pins/reverts; new tests for Next.js turbopack and React Router v8 middleware.

Written by Cursor Bugbot for commit 55d8514. This will update automatically on new commits. Configure here.

github-actions bot and others added 18 commits September 24, 2025 16:15
[Gitflow] Merge master into develop
…ompatibility (#17777)

This PR unblocks our CI which pas failing because:

- Nuxt and SolidStart rely on nitro which relies on on `@vercel/nft`
- `import-in-the-middle` received a [bug fix
](https://github.com/nodejs/import-in-the-middle/pull/205/files) which
mixes `require` and `import` statements in `hooks.mjs`. This was
released [in
`1.14.3`](https://github.com/nodejs/import-in-the-middle/releases/tag/import-in-the-middle-v1.14.3)
- Apparently, nft can't trace modules that use both, `import` and
`require` statements, so the `require`'d `hooks.js` file is not added to
the subset of modules nft returns (we're working on a minimal
reproduction and bug report for nft)

As a result, we have to pin IITM to the version before the bugfix
(`1.14.2`) until either IITM reverts the fix or NFT releases a fix. The
terrible part about this though is that users have to do the same thing
for now and there's nothing we can do besides documenting to add an
override for IITM.

Being a JS developer is fun they said...
…uilding the Lambda layer (#17780)

this is actually a fix but not a user-facing one, therefore, `ref`.

Starting with `1.14.3`, `import-in-the-middle` uses both, `import` and
`require` statements in its `hook.mjs` file. This caused `@vercel/nft`
in its default config to _not_ trace the required `hook.js` file (+ all
of its dependencies). This PR enables `mixedModules: true` to trace
both, requires and imports. In contrast to #17777, we therefore don't
have to override the IITM version and we also don't have to revert this
PR.
This does two things:

1. Ensure the `build/aws` dir is cleared before we re-build it, to
ensure no old files remain and keep being cached.
2. Ensure we generate a zip explicitly with the files we care about
only, not all files in the `build/aws` dir
…am api (#17754)

Previously, we completely walked over anthropic's SDK and replaced
`message.stream` with our own method that returns an async generator.
This breaks the SDK as `MessageStream` has further user callable api,
such as adding event handlers.

This fix proxies `message.stream` instead of replacing it with our own
method. Instead of returning an async generator, we now hook into
various events to do our instrumentation.

Streams requested via `stream: true` are expected to return async
generators, so the current approach still holds, the only change is that
we proxy instead of overwrite.

Fixes: #17734
Adds an option to `getSessionId` and `getSessionId` to only return a
value if the replay is sampled.

ref #17676
Extracted this out of
#17782, this improved
our promise buffer class a bit:

1. Remove the code path without a `limit`, as we never use this (there
is a default limit used). There is also really no reason to use this
without a limit, the limit is the whole purpose of this class.
2. Use a `Set` instead of an array for the internal buffer handling,
this should slightly streamline stuff.
3. For `drain`, we can simplify the implementation without a timeout
drastically. We can use `Promise.race()` to handle this more gracefully,
which should be supported everywhere.
4. Some slight refactorings, actually improving timing semantics
slightly.
This will enable just executing `/publish_release` within a cursor chat
for creating a new release.

https://cursor.com/docs/agent/chat/commands 👀
The React Router instrumentation created an additional `navigation` span
on `pageload`.

On initial load, the lazy route has the history action `POP` and state
`idle`. This leads to the generation of a `navigation` span.

I added a condition to early-return from `handleNavigation` if a page
load is going on.

Closes issue (in Linear)
https://linear.app/getsentry/issue/FE-551/configure-react-router-for-fully-parameterized-routes-with-sentry
We don't know yet why but this config code seems to be evaluated once at
runtime for some users when using turbopack. The chalk import breaks
with `Failed to load external module @sentry/nextjs: Error
[ERR_REQUIRE_ESM]`.
Just getting rid of this import for now to not break apps.

We're still investigating together with Vercel why this this code gets
pulled in.

closes #17691
…17800)

When there's no layout shift, the standalone CLS span would previously
have the same start time as the pageload span
(`performance.timeOrigin`). This caused the cls span to be incorrectly
interpreted as the trace root in the Sentry UI. We can fix this by
setting the span start timestamp as the startTime instead if there's no
layout shift. In all other cases, we let the span start at the time the
last CLS update occured.
@s1gr1d s1gr1d changed the base branch from develop to master September 29, 2025 10:03
@s1gr1d s1gr1d requested a review from a team as a code owner September 29, 2025 10:03
@s1gr1d s1gr1d merged commit 70811c9 into master Sep 29, 2025
31 checks passed
@s1gr1d s1gr1d deleted the prepare-release/10.16.0 branch September 29, 2025 10:23
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.

5 participants