diff --git a/packages/nextjs/src/common/wrapAppGetInitialPropsWithSentry.ts b/packages/nextjs/src/common/wrapAppGetInitialPropsWithSentry.ts index 312e1b319fdb..7bd04342c0ab 100644 --- a/packages/nextjs/src/common/wrapAppGetInitialPropsWithSentry.ts +++ b/packages/nextjs/src/common/wrapAppGetInitialPropsWithSentry.ts @@ -56,10 +56,20 @@ export function wrapAppGetInitialPropsWithSentry(origAppGetInitialProps: AppGetI } if (requestSpan) { - appGetInitialProps.pageProps._sentryTraceData = spanToTraceHeader(requestSpan); + const sentryTrace = spanToTraceHeader(requestSpan); + + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (sentryTrace) { + appGetInitialProps.pageProps._sentryTraceData = sentryTrace; + } + const dynamicSamplingContext = getDynamicSamplingContextFromSpan(requestSpan); - appGetInitialProps.pageProps._sentryBaggage = - dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + const baggage = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (baggage) { + appGetInitialProps.pageProps._sentryBaggage = baggage; + } } return appGetInitialProps; diff --git a/packages/nextjs/src/common/wrapErrorGetInitialPropsWithSentry.ts b/packages/nextjs/src/common/wrapErrorGetInitialPropsWithSentry.ts index 71c8cf9806a5..347283494b38 100644 --- a/packages/nextjs/src/common/wrapErrorGetInitialPropsWithSentry.ts +++ b/packages/nextjs/src/common/wrapErrorGetInitialPropsWithSentry.ts @@ -49,10 +49,20 @@ export function wrapErrorGetInitialPropsWithSentry( const requestSpan = getSpanFromRequest(req) ?? (activeSpan ? getRootSpan(activeSpan) : undefined); if (requestSpan) { - errorGetInitialProps._sentryTraceData = spanToTraceHeader(requestSpan); + const sentryTrace = spanToTraceHeader(requestSpan); + + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (sentryTrace) { + errorGetInitialProps._sentryTraceData = sentryTrace; + } const dynamicSamplingContext = getDynamicSamplingContextFromSpan(requestSpan); - errorGetInitialProps._sentryBaggage = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + const baggage = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (baggage) { + errorGetInitialProps._sentryBaggage = baggage; + } } return errorGetInitialProps; diff --git a/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts b/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts index 0b5425417913..1a1e351f83ed 100644 --- a/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts +++ b/packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts @@ -45,10 +45,20 @@ export function wrapGetInitialPropsWithSentry(origGetInitialProps: GetInitialPro const requestSpan = getSpanFromRequest(req) ?? (activeSpan ? getRootSpan(activeSpan) : undefined); if (requestSpan) { - initialProps._sentryTraceData = spanToTraceHeader(requestSpan); + const sentryTrace = spanToTraceHeader(requestSpan); + + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (sentryTrace) { + initialProps._sentryTraceData = sentryTrace; + } const dynamicSamplingContext = getDynamicSamplingContextFromSpan(requestSpan); - initialProps._sentryBaggage = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + const baggage = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (baggage) { + initialProps._sentryBaggage = baggage; + } } return initialProps; diff --git a/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts b/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts index d8a14b392462..1be908042b5e 100644 --- a/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts +++ b/packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts @@ -38,13 +38,21 @@ export function wrapGetServerSidePropsWithSentry( if (serverSideProps && 'props' in serverSideProps) { const activeSpan = getActiveSpan(); - const requestTransaction = getSpanFromRequest(req) ?? (activeSpan ? getRootSpan(activeSpan) : undefined); - if (requestTransaction) { - (serverSideProps.props as Record)._sentryTraceData = spanToTraceHeader(requestTransaction); - - const dynamicSamplingContext = getDynamicSamplingContextFromSpan(requestTransaction); - (serverSideProps.props as Record)._sentryBaggage = - dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + const requestSpan = getSpanFromRequest(req) ?? (activeSpan ? getRootSpan(activeSpan) : undefined); + if (requestSpan) { + const sentryTrace = spanToTraceHeader(requestSpan); + + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (sentryTrace) { + (serverSideProps.props as Record)._sentryTraceData = sentryTrace; + } + + const dynamicSamplingContext = getDynamicSamplingContextFromSpan(requestSpan); + const baggage = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext); + // The Next.js serializer throws on undefined values so we need to guard for it (#12102) + if (baggage) { + (serverSideProps.props as Record)._sentryBaggage = baggage; + } } }