@@ -52,8 +52,6 @@ function isEventType(event: unknown): event is CfEventType {
52
52
) ;
53
53
}
54
54
55
- const TRACE_DATA_KEY = '__sentryTraceData' ;
56
-
57
55
/**
58
56
* Sentry Cloudflare Nitro plugin for when using the "cloudflare-pages" preset in Nuxt.
59
57
* This plugin automatically sets up Sentry error monitoring and performance tracking for Cloudflare Pages projects.
@@ -89,6 +87,8 @@ const TRACE_DATA_KEY = '__sentryTraceData';
89
87
export const sentryCloudflareNitroPlugin =
90
88
( optionsOrFn : CloudflareOptions | ( ( nitroApp : NitroApp ) => CloudflareOptions ) ) : NitroAppPlugin =>
91
89
( nitroApp : NitroApp ) : void => {
90
+ const traceDataMap = new WeakMap < object , ReturnType < typeof getTraceData > > ( ) ;
91
+
92
92
nitroApp . localFetch = new Proxy ( nitroApp . localFetch , {
93
93
async apply ( handlerTarget , handlerThisArg , handlerArgs : [ string , unknown ] ) {
94
94
setAsyncLocalStorageAsyncContextStrategy ( ) ;
@@ -122,10 +122,9 @@ export const sentryCloudflareNitroPlugin =
122
122
123
123
const traceData = getTraceData ( ) ;
124
124
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 ) ;
129
128
}
130
129
131
130
logger . log (
@@ -142,10 +141,10 @@ export const sentryCloudflareNitroPlugin =
142
141
143
142
// @ts -expect-error - 'render:html' is a valid hook name in the Nuxt context
144
143
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 ;
146
145
147
146
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 ) ;
149
148
addSentryTracingMetaTags ( html . head , storedTraceData ) ;
150
149
} else {
151
150
addSentryTracingMetaTags ( html . head ) ;
0 commit comments