Skip to content

Conversation

timfish
Copy link
Collaborator

@timfish timfish commented Oct 22, 2025

timfish and others added 22 commits October 14, 2025 20:42
…/sentry-javascript into timfish/fix/pino-child-loggers
…7905)

With 19.2, React introduced [custom perfomance
tracks](https://react.dev/blog/2025/10/01/react-19-2#performance-tracks)
in chrome dev tools. This track is populated by collecting
`performance.measure` entries for every component (re-)render. Sounds
good in theory but in reality this causes a massive performance
degradation when using the Sentry SDK because we collect spans from
`PerformanceMeasure` entries. In our Sentry UI, this caused 10+ second
long blocks because we created thousands of spans from these render
entries.

This patch fixes this performance drop by inspecting the measure entries'
`detail` object which we can use to _fairly well_ distinguish React's
entries from users' entries. Not 100% bulletproof but I think good
enough.
# Summary

This PR adds support for TanStack Router Solid. It follows the same
outline as the existing implementation of TanStack Router React for
Sentry as both TanStack Router flavors are built on the same agnostic
foundation.

---------

Co-authored-by: Andrei Borza <andrei.borza@sentry.io>
next@canary now resolves to next 16 which is why we need to update the
testing strategy here
This PR adds the external contributor to the CHANGELOG.md file, so that
they are credited for their contribution. See #17735

---------

Co-authored-by: andreiborza <168741329+andreiborza@users.noreply.github.com>
This resolves the issue that occurs when an extra `navigation`
transaction is created after a prematurely ended `pageload` transaction
in React Router lazy routes.

This apparently occurs when there's a long-running pageload with
lazy-routes (after fetching assets, there are multiple potentially
long-running API calls happening).

This causes the `pageload` transaction to prematurely end, even before
the fully parameterized transaction name is resolved. The reason is that
there can be a `POP` event emitted, which we subscribe to create a
`navigation` transaction. This ends the ongoing `pageload` transaction
before its name is updated with a resolved parameterized route path, and
starts a `navigation` transaction, which contains the remaining spans
that were supposed to be a part of the `pageload` transaction.

This fix makes sure the initial `POP` events are not necessarily treated
as `navigation` pointers, which should fix both:

- Duplicate / extra `navigation` transactions having a part of
`pageload` spans.
- Remaining wildcards in the `pageload` transaction names
…/sentry-javascript into timfish/fix/pino-child-loggers
@github-actions
Copy link
Contributor

github-actions bot commented Oct 22, 2025

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,806 - 9,532 -8%
GET With Sentry 1,332 15% 1,431 -7%
GET With Sentry (error only) 6,082 69% 6,317 -4%
POST Baseline 1,180 - 1,239 -5%
POST With Sentry 483 41% 562 -14%
POST With Sentry (error only) 1,050 89% 1,087 -3%
MYSQL Baseline 3,324 - 3,447 -4%
MYSQL With Sentry 475 14% 522 -9%
MYSQL With Sentry (error only) 2,711 82% 2,821 -4%

View base workflow run

@timfish timfish marked this pull request as ready for review October 22, 2025 13:25
@timfish timfish requested a review from AbhiPrasad October 22, 2025 13:25
@AbhiPrasad AbhiPrasad merged commit e05acdd into develop Oct 22, 2025
268 of 273 checks passed
@AbhiPrasad AbhiPrasad deleted the timfish/fix/pino-err-object branch October 22, 2025 14:19
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.

Pino integration strips error objects

8 participants