fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix: Remove .getTraceData() from headers - #171

Merged
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation
Feb 3, 2026
Merged

fix: Remove .getTraceData() from headers#171
pawelgrzybek merged 1 commit into
nn1dev:mainfrom
JPeer264:jp/fix-propagation

Conversation

@JPeer264

Copy link
Copy Markdown

👋

I'm writing / creating the PR because you opened the ticket 173143 (reference: getsentry/sentry#106855 (comment)). I was looking at your issue and saw that Sentry.getTraceData() was set manually. This is actually not needed and removed it - now it works.

So the problem now is that it should have worked fine with the additional data, but it seems that we might have a bug there if this is set twice (because we already instrument the fetch API and add the headers, so you don't have to).

This is how it looks like for me locally (the error is intended, as I haven't set up resend):
Screenshot 2026-02-03 at 14 38 28

I will create a bug ticket on our side and reference this PR, so there is a backlink.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Wow, soo all this was that simple? WOW, let me merge this one and confirm that here in a moment.

@pawelgrzybek
pawelgrzybek merged commit de32bbe into nn1dev:mainFeb 3, 2026
@JPeer264

Copy link
Copy Markdown
Author

Can you already confirm if that worked out on your tenant as well?

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

I'm so sorry @JPeer264 allow me one more day and I'll come back to you. So sorry for the dalay, just wanted you to know how much I apreciate your help on this one.

@JPeer264

Copy link
Copy Markdown
Author

Absolutely no hurries from my side.

No worries, I'm here to help 🤗

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

Hey @JPeer264 so I spent some time on this one, and I think there is still some issue, and I believe the issue is on the sentry integration plugin side of things. Let me summarise what I found, what works great and what doesn't.


When all is set up locally, this all working great. To summarise (simplified version):

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project and the sentry headers are carried over to the Astro action which calls external API.
  3. The external API receives a request and all sentry headers with it. Along the way the same trace id headers are carries a that procuces a nice trace view with spans from multiple services combiner into one.

Here is a secreenshot that presents traced created by sentry in the browser, the same one carried over to the action and the same one used on the api.

localhost

And the example how spans from multiple services are nicely connected into the same trace. Pretty much how you got it.

dev

Unfortunately it doesn't behave in the same way on production. Here is how it works on production.

  1. I open the website and sentry creates a new trace for me.
  2. I submit the form on Astro project but headers are not carried over to the Astro action scope. So the API call sent from the action does not contain headers to chain the tracing spans.
  3. The external API receives a request but it is also missing the sentry heaeders as they have never been sent from the Astro action.

Here is the equivalent screenshot with the trace id produced on the browser, then lost on the action and missing on the API. Instead of screenshots from the locally running services, these are logs from the cloudflare workers.

production


Potentially there is still some issue with my tracingTarget configuration. But I think there may also be some issue on the sentry astro integration plugin, because on non-localhost env headers are not passed along to the action.

Please let me know if I can provide any extra information to help Sentry team diagnose this. I will really appreciate if we could work on that together.

@JPeer264

Copy link
Copy Markdown
Author

Thanks for taking a closer look on this. I also just took a look. It seems that Astro is running on Cloudflare Workers in this case instead of Cloudflare Pages (the old way of Cloudflare Pages) - which means that this is a new territory, which we didn't cover yet.

It is amazing that you are already running on Cloudflare Workers and that you've discovered that, but I'm afraid that your backend code is not instrumented at all - in other words, you can't do something right now.

The good news: I played around already with the SDK and got a working draft locally. I try to push this further next week and try to make it production ready. I'll create a ticket for it and link it here as a reference.

@pawelgrzybek

Copy link
Copy Markdown
Collaborator

This all makes perfect sense now. This is what I call good collaboration @JPeer264, you helped me identify incorrect configuration on my project, and I helped you to identify a missing feature. Love it ❣️

Since Astro and Cloudflare married recently, I would expect more and more folks are going to use combo of Astro + Workers instead of Astro + CF Pages. Also, using workers is an official recommendation by CF team for all Astro projects now. I think it makes sense for Sentry team to add this integration at this point.

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project (nn1.dev is a low risk project, this is just a meetup page and no-one is gonna die if something goes wrong).

For now, have a fab weekend 👋

@JPeer264

Copy link
Copy Markdown
Author

Please let me know if there is anything else I can help you with. I'll be very happy to assist and test some early releases on my production project

I highly appreciate your help on this one. It is also a huge help that your project is open source (kudos for that), which helped initially with finding the issue. I hope I can get something out tomorrow or the day after, I can tell you more then 🥳

@JPeer264JPeer264 mentioned this pull request Feb 24, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@JPeer264@pawelgrzybek