From 348c8cbc48314ce242e25b514044821ec723e059 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 17 Apr 2026 13:03:43 +0200 Subject: [PATCH] feat(nextjs): Filtering unwanted segments in span streaming --- packages/nextjs/src/client/index.ts | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/packages/nextjs/src/client/index.ts b/packages/nextjs/src/client/index.ts index fb8b7acea878..b7f9c482b816 100644 --- a/packages/nextjs/src/client/index.ts +++ b/packages/nextjs/src/client/index.ts @@ -74,19 +74,17 @@ export function init(options: BrowserOptions): Client | undefined { applyTunnelRouteOption(opts); applySdkMetadata(opts, 'nextjs', ['nextjs', 'react']); - const client = reactInit(opts); - - const filterTransactions: EventProcessor = event => - event.type === 'transaction' && event.transaction === '/404' ? null : event; - filterTransactions.id = 'NextClient404Filter'; - addEventProcessor(filterTransactions); + opts.ignoreSpans = [ + ...(opts.ignoreSpans || []), + // we filter out segment spans for /404 pages + /^\/404$/, + // segment spans where we didn't get a reasonable transaction name + // in this case, constructing a dynamic RegExp is fine because the variable is a constant + // we need to ensure to exact-match, so a string match isn't safe (same for /404 above) + new RegExp(`^${INCOMPLETE_APP_ROUTER_INSTRUMENTATION_TRANSACTION_NAME}$`), + ]; - const filterIncompleteNavigationTransactions: EventProcessor = event => - event.type === 'transaction' && event.transaction === INCOMPLETE_APP_ROUTER_INSTRUMENTATION_TRANSACTION_NAME - ? null - : event; - filterIncompleteNavigationTransactions.id = 'IncompleteTransactionFilter'; - addEventProcessor(filterIncompleteNavigationTransactions); + const client = reactInit(opts); const filterNextRedirectError: EventProcessor = (event, hint) => isRedirectNavigationError(hint?.originalException) || event.exception?.values?.[0]?.value === 'NEXT_REDIRECT'