@@ -52,8 +52,6 @@ function isEventType(event: unknown): event is CfEventType {
5252 ) ;
5353}
5454
55- const TRACE_DATA_KEY = '__sentryTraceData' ;
56-
5755/**
5856 * Sentry Cloudflare Nitro plugin for when using the "cloudflare-pages" preset in Nuxt.
5957 * This plugin automatically sets up Sentry error monitoring and performance tracking for Cloudflare Pages projects.
@@ -89,6 +87,8 @@ const TRACE_DATA_KEY = '__sentryTraceData';
8987export const sentryCloudflareNitroPlugin =
9088 ( optionsOrFn : CloudflareOptions | ( ( nitroApp : NitroApp ) => CloudflareOptions ) ) : NitroAppPlugin =>
9189 ( nitroApp : NitroApp ) : void => {
90+ const traceDataMap = new WeakMap < object , ReturnType < typeof getTraceData > > ( ) ;
91+
9292 nitroApp . localFetch = new Proxy ( nitroApp . localFetch , {
9393 async apply ( handlerTarget , handlerThisArg , handlerArgs : [ string , unknown ] ) {
9494 setAsyncLocalStorageAsyncContextStrategy ( ) ;
@@ -122,10 +122,9 @@ export const sentryCloudflareNitroPlugin =
122122
123123 const traceData = getTraceData ( ) ;
124124 if ( traceData && Object . keys ( traceData ) . length > 0 ) {
125- // Storing trace data in the event context for later use in HTML meta-tags (enables correct connection of parent/child span relationships)
126- // @ts -expect-error Storing a new key in the event context
127- event . context [ TRACE_DATA_KEY ] = traceData ;
128- logger . log ( 'Stored trace data in the event context.' ) ;
125+ // Storing trace data in the WeakMap using event.context.cf as key for later use in HTML meta-tags
126+ traceDataMap . set ( event . context . cf , traceData ) ;
127+ logger . log ( 'Stored trace data for later use in HTML meta-tags: ' , traceData ) ;
129128 }
130129
131130 logger . log (
@@ -142,10 +141,10 @@ export const sentryCloudflareNitroPlugin =
142141
143142 // @ts -expect-error - 'render:html' is a valid hook name in the Nuxt context
144143 nitroApp . hooks . hook ( 'render:html' , ( html : NuxtRenderHTMLContext , { event } : { event : H3Event } ) => {
145- const storedTraceData = event . context [ TRACE_DATA_KEY ] as ReturnType < typeof getTraceData > | undefined ;
144+ const storedTraceData = event ? .context ?. cf ? traceDataMap . get ( event . context . cf ) : undefined ;
146145
147146 if ( storedTraceData && Object . keys ( storedTraceData ) . length > 0 ) {
148- logger . log ( 'Using stored trace data from event context for meta tags.' ) ;
147+ logger . log ( 'Using stored trace data for HTML meta- tags: ' , storedTraceData ) ;
149148 addSentryTracingMetaTags ( html . head , storedTraceData ) ;
150149 } else {
151150 addSentryTracingMetaTags ( html . head ) ;
0 commit comments