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'