From 6acd484e410fd78038df5b0e9c1db85ccb1f594a Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Sat, 23 May 2026 17:17:54 +0200 Subject: [PATCH 1/5] feat(tanstackstart-react): Filter noisy dev transactions via ignoreSpans Co-Authored-By: Claude Opus 4.6 (1M context) --- .../tanstackstart-react/src/server/sdk.ts | 9 ++++++ .../test/server/sdk.test.ts | 29 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/packages/tanstackstart-react/src/server/sdk.ts b/packages/tanstackstart-react/src/server/sdk.ts index 1bf2b5e65be2..5cf071177b95 100644 --- a/packages/tanstackstart-react/src/server/sdk.ts +++ b/packages/tanstackstart-react/src/server/sdk.ts @@ -13,5 +13,14 @@ export function init(options: NodeOptions): NodeClient | undefined { applySdkMetadata(sentryOptions, 'tanstackstart-react', ['tanstackstart-react', 'node']); + sentryOptions.ignoreSpans = [ + ...(sentryOptions.ignoreSpans || []), + /GET \/node_modules\//, + /GET \/favicon\.ico/, + /GET \/@id\//, + /GET \/@react-refresh/, + /GET \/@tanstack-start\//, + ]; + return initNodeSdk(sentryOptions); } diff --git a/packages/tanstackstart-react/test/server/sdk.test.ts b/packages/tanstackstart-react/test/server/sdk.test.ts index f95d970ce8cc..918c9eb20ff6 100644 --- a/packages/tanstackstart-react/test/server/sdk.test.ts +++ b/packages/tanstackstart-react/test/server/sdk.test.ts @@ -38,5 +38,34 @@ describe('TanStack Start React Server SDK', () => { it('returns client from init', () => { expect(init({})).not.toBeUndefined(); }); + + it('sets ignoreSpans to filter low-quality transactions', () => { + init({ dsn: 'https://public@dsn.ingest.sentry.io/1337' }); + + expect(nodeInit).toHaveBeenCalledWith( + expect.objectContaining({ + ignoreSpans: expect.arrayContaining([ + /GET \/node_modules\//, + /GET \/favicon\.ico/, + /GET \/@id\//, + /GET \/@react-refresh/, + /GET \/@tanstack-start\//, + ]), + }), + ); + }); + + it('preserves user-defined ignoreSpans', () => { + init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + ignoreSpans: [/custom-pattern/], + }); + + expect(nodeInit).toHaveBeenCalledWith( + expect.objectContaining({ + ignoreSpans: expect.arrayContaining([/custom-pattern/, /GET \/favicon\.ico/]), + }), + ); + }); }); }); From 227d655e01889ae0b2f5ba66ee0e8bef349db83f Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Sat, 23 May 2026 17:30:40 +0200 Subject: [PATCH 2/5] fix: Add ignoreSpans to client init, drop GET prefix from patterns Patterns without the method prefix match both server transaction names (GET /node_modules/...) and browser resource span descriptions (/node_modules/...). Co-Authored-By: Claude Opus 4.6 (1M context) --- .../tanstackstart-react/src/client/sdk.ts | 9 ++++++ .../tanstackstart-react/src/server/sdk.ts | 10 +++---- .../test/client/sdk.test.ts | 29 +++++++++++++++++++ .../test/server/sdk.test.ts | 12 ++++---- 4 files changed, 49 insertions(+), 11 deletions(-) diff --git a/packages/tanstackstart-react/src/client/sdk.ts b/packages/tanstackstart-react/src/client/sdk.ts index 0998c027f112..34ad1d3c1375 100644 --- a/packages/tanstackstart-react/src/client/sdk.ts +++ b/packages/tanstackstart-react/src/client/sdk.ts @@ -18,5 +18,14 @@ export function init(options: ReactBrowserOptions): Client | undefined { applyTunnelRouteOption(sentryOptions); applySdkMetadata(sentryOptions, 'tanstackstart-react', ['tanstackstart-react', 'react']); + sentryOptions.ignoreSpans = [ + ...(sentryOptions.ignoreSpans || []), + /\/node_modules\//, + /\/favicon\.ico/, + /\/@id\//, + /\/@react-refresh/, + /\/@tanstack-start\//, + ]; + return initReactSDK(sentryOptions); } diff --git a/packages/tanstackstart-react/src/server/sdk.ts b/packages/tanstackstart-react/src/server/sdk.ts index 5cf071177b95..90ef2eecd38a 100644 --- a/packages/tanstackstart-react/src/server/sdk.ts +++ b/packages/tanstackstart-react/src/server/sdk.ts @@ -15,11 +15,11 @@ export function init(options: NodeOptions): NodeClient | undefined { sentryOptions.ignoreSpans = [ ...(sentryOptions.ignoreSpans || []), - /GET \/node_modules\//, - /GET \/favicon\.ico/, - /GET \/@id\//, - /GET \/@react-refresh/, - /GET \/@tanstack-start\//, + /\/node_modules\//, + /\/favicon\.ico/, + /\/@id\//, + /\/@react-refresh/, + /\/@tanstack-start\//, ]; return initNodeSdk(sentryOptions); diff --git a/packages/tanstackstart-react/test/client/sdk.test.ts b/packages/tanstackstart-react/test/client/sdk.test.ts index 400bbe877dc1..c70254aae296 100644 --- a/packages/tanstackstart-react/test/client/sdk.test.ts +++ b/packages/tanstackstart-react/test/client/sdk.test.ts @@ -43,6 +43,35 @@ describe('TanStack Start React Client SDK', () => { expect(init({})).not.toBeUndefined(); }); + it('sets ignoreSpans to filter low-quality spans', () => { + init({ dsn: 'https://public@dsn.ingest.sentry.io/1337' }); + + expect(reactInit).toHaveBeenCalledWith( + expect.objectContaining({ + ignoreSpans: expect.arrayContaining([ + /\/node_modules\//, + /\/favicon\.ico/, + /\/@id\//, + /\/@react-refresh/, + /\/@tanstack-start\//, + ]), + }), + ); + }); + + it('preserves user-defined ignoreSpans', () => { + init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + ignoreSpans: [/custom-pattern/], + }); + + expect(reactInit).toHaveBeenCalledWith( + expect.objectContaining({ + ignoreSpans: expect.arrayContaining([/custom-pattern/, /\/favicon\.ico/]), + }), + ); + }); + it('applies the managed tunnel route when no runtime tunnel is provided', () => { vi.stubGlobal('__SENTRY_TANSTACKSTART_TUNNEL_ROUTE__', '/managed-tunnel'); diff --git a/packages/tanstackstart-react/test/server/sdk.test.ts b/packages/tanstackstart-react/test/server/sdk.test.ts index 918c9eb20ff6..6a1ea1c9d290 100644 --- a/packages/tanstackstart-react/test/server/sdk.test.ts +++ b/packages/tanstackstart-react/test/server/sdk.test.ts @@ -45,11 +45,11 @@ describe('TanStack Start React Server SDK', () => { expect(nodeInit).toHaveBeenCalledWith( expect.objectContaining({ ignoreSpans: expect.arrayContaining([ - /GET \/node_modules\//, - /GET \/favicon\.ico/, - /GET \/@id\//, - /GET \/@react-refresh/, - /GET \/@tanstack-start\//, + /\/node_modules\//, + /\/favicon\.ico/, + /\/@id\//, + /\/@react-refresh/, + /\/@tanstack-start\//, ]), }), ); @@ -63,7 +63,7 @@ describe('TanStack Start React Server SDK', () => { expect(nodeInit).toHaveBeenCalledWith( expect.objectContaining({ - ignoreSpans: expect.arrayContaining([/custom-pattern/, /GET \/favicon\.ico/]), + ignoreSpans: expect.arrayContaining([/custom-pattern/, /\/favicon\.ico/]), }), ); }); From b806f8eeb1b8449255d9672d57a71f6f67017517 Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Sat, 23 May 2026 17:46:33 +0200 Subject: [PATCH 3/5] fix: Add /@fs/ and /@vite/ to ignoreSpans These Vite dev paths account for the bulk of the noise (296+ resource.script spans per pageload from unbundled module serving). Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/tanstackstart-react/src/client/sdk.ts | 2 ++ packages/tanstackstart-react/src/server/sdk.ts | 2 ++ packages/tanstackstart-react/test/client/sdk.test.ts | 2 ++ packages/tanstackstart-react/test/server/sdk.test.ts | 2 ++ 4 files changed, 8 insertions(+) diff --git a/packages/tanstackstart-react/src/client/sdk.ts b/packages/tanstackstart-react/src/client/sdk.ts index 34ad1d3c1375..2f86766df520 100644 --- a/packages/tanstackstart-react/src/client/sdk.ts +++ b/packages/tanstackstart-react/src/client/sdk.ts @@ -25,6 +25,8 @@ export function init(options: ReactBrowserOptions): Client | undefined { /\/@id\//, /\/@react-refresh/, /\/@tanstack-start\//, + /\/@fs\//, + /\/@vite\//, ]; return initReactSDK(sentryOptions); diff --git a/packages/tanstackstart-react/src/server/sdk.ts b/packages/tanstackstart-react/src/server/sdk.ts index 90ef2eecd38a..58b7be53e05e 100644 --- a/packages/tanstackstart-react/src/server/sdk.ts +++ b/packages/tanstackstart-react/src/server/sdk.ts @@ -20,6 +20,8 @@ export function init(options: NodeOptions): NodeClient | undefined { /\/@id\//, /\/@react-refresh/, /\/@tanstack-start\//, + /\/@fs\//, + /\/@vite\//, ]; return initNodeSdk(sentryOptions); diff --git a/packages/tanstackstart-react/test/client/sdk.test.ts b/packages/tanstackstart-react/test/client/sdk.test.ts index c70254aae296..b8add33b4984 100644 --- a/packages/tanstackstart-react/test/client/sdk.test.ts +++ b/packages/tanstackstart-react/test/client/sdk.test.ts @@ -54,6 +54,8 @@ describe('TanStack Start React Client SDK', () => { /\/@id\//, /\/@react-refresh/, /\/@tanstack-start\//, + /\/@fs\//, + /\/@vite\//, ]), }), ); diff --git a/packages/tanstackstart-react/test/server/sdk.test.ts b/packages/tanstackstart-react/test/server/sdk.test.ts index 6a1ea1c9d290..92315a4821df 100644 --- a/packages/tanstackstart-react/test/server/sdk.test.ts +++ b/packages/tanstackstart-react/test/server/sdk.test.ts @@ -50,6 +50,8 @@ describe('TanStack Start React Server SDK', () => { /\/@id\//, /\/@react-refresh/, /\/@tanstack-start\//, + /\/@fs\//, + /\/@vite\//, ]), }), ); From d5c230bf4a5159edcdaa5d63813bad4d648d7cae Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Sat, 23 May 2026 17:57:50 +0200 Subject: [PATCH 4/5] fix: Trim server ignoreSpans to only patterns that produce transactions Only /node_modules/, /@id/, /@react-refresh/, and /@vite/ actually generate server-side http.server transactions in a real browser session. The rest (favicon.ico, /@tanstack-start/, /@fs/) are handled by Vite before reaching Node. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/tanstackstart-react/src/server/sdk.ts | 3 --- packages/tanstackstart-react/test/server/sdk.test.ts | 10 +--------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/packages/tanstackstart-react/src/server/sdk.ts b/packages/tanstackstart-react/src/server/sdk.ts index 58b7be53e05e..5f0d5a5a29df 100644 --- a/packages/tanstackstart-react/src/server/sdk.ts +++ b/packages/tanstackstart-react/src/server/sdk.ts @@ -16,11 +16,8 @@ export function init(options: NodeOptions): NodeClient | undefined { sentryOptions.ignoreSpans = [ ...(sentryOptions.ignoreSpans || []), /\/node_modules\//, - /\/favicon\.ico/, /\/@id\//, /\/@react-refresh/, - /\/@tanstack-start\//, - /\/@fs\//, /\/@vite\//, ]; diff --git a/packages/tanstackstart-react/test/server/sdk.test.ts b/packages/tanstackstart-react/test/server/sdk.test.ts index 92315a4821df..c9865f1a542b 100644 --- a/packages/tanstackstart-react/test/server/sdk.test.ts +++ b/packages/tanstackstart-react/test/server/sdk.test.ts @@ -44,15 +44,7 @@ describe('TanStack Start React Server SDK', () => { expect(nodeInit).toHaveBeenCalledWith( expect.objectContaining({ - ignoreSpans: expect.arrayContaining([ - /\/node_modules\//, - /\/favicon\.ico/, - /\/@id\//, - /\/@react-refresh/, - /\/@tanstack-start\//, - /\/@fs\//, - /\/@vite\//, - ]), + ignoreSpans: expect.arrayContaining([/\/node_modules\//, /\/@id\//, /\/@react-refresh/, /\/@vite\//]), }), ); }); From 115e55f6af56d3174ae7a87ab4abbec6f9a96dca Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Sat, 23 May 2026 18:44:11 +0200 Subject: [PATCH 5/5] fix: Fix server sdk test to assert a pattern that actually exists Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/tanstackstart-react/test/server/sdk.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tanstackstart-react/test/server/sdk.test.ts b/packages/tanstackstart-react/test/server/sdk.test.ts index c9865f1a542b..889c43fff513 100644 --- a/packages/tanstackstart-react/test/server/sdk.test.ts +++ b/packages/tanstackstart-react/test/server/sdk.test.ts @@ -57,7 +57,7 @@ describe('TanStack Start React Server SDK', () => { expect(nodeInit).toHaveBeenCalledWith( expect.objectContaining({ - ignoreSpans: expect.arrayContaining([/custom-pattern/, /\/favicon\.ico/]), + ignoreSpans: expect.arrayContaining([/custom-pattern/, /\/@vite\//]), }), ); });