feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome
, '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

feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome
, '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

feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome
, '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

feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome
, '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

feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome
, '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

feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome
, '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

feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome
, '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

feat(solid): Set url attributes on solid router and tanstack router spans - #22090

Merged
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid
Jul 9, 2026
Merged

feat(solid): Set url attributes on solid router and tanstack router spans#22090
Lms24 merged 3 commits into
developfrom
feat/pageload-url-attrs-solid

Conversation

@Lms24

@Lms24Lms24 commented Jul 8, 2026

Copy link
Copy Markdown
Member

Adds url.template, url.path, and url.full to pageload and navigation spans for Solid Router and TanStack Solid Router integrations, including redirect and back-button navigation cases.

Ports locationToSpanUrlAttributes from the React TanStack Router integration and updates Solid Router to pass the destination URL when starting navigation spans. Includes e2e test coverage for solidstart and solid-tanstack-router.

part of #21921

Made with Cursor

@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 12:50
@Lms24
Lms24 requested review from chargome, mydea and nicohrubec and removed request for a teamJuly 8, 2026 12:50
@github-actions

github-actionsBot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

PathSize% ChangeChange
@sentry/browser27.59 kB--
@sentry/browser - with treeshaking flags26.03 kB--
@sentry/browser (incl. Tracing)46.34 kB--
@sentry/browser (incl. Tracing + Span Streaming)48.13 kB--
@sentry/browser (incl. Tracing, Profiling)51.12 kB--
@sentry/browser (incl. Tracing, Replay)85.62 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags75.26 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)90.32 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.97 kB--
@sentry/browser (incl. Feedback)44.76 kB--
@sentry/browser (incl. sendFeedback)32.38 kB--
@sentry/browser (incl. FeedbackAsync)37.51 kB--
@sentry/browser (incl. Metrics)28.67 kB--
@sentry/browser (incl. Logs)28.91 kB--
@sentry/browser (incl. Metrics & Logs)29.59 kB--
@sentry/react29.38 kB--
@sentry/react (incl. Tracing)48.61 kB--
@sentry/vue33.03 kB--
@sentry/vue (incl. Tracing)48.3 kB--
@sentry/svelte27.61 kB--
CDN Bundle30 kB--
CDN Bundle (incl. Tracing)48.32 kB--
CDN Bundle (incl. Logs, Metrics)31.57 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.64 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.81 kB--
CDN Bundle (incl. Tracing, Replay)85.84 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)87.14 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.64 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.92 kB--
CDN Bundle - uncompressed89.35 kB--
CDN Bundle (incl. Tracing) - uncompressed146.1 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed94.05 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed150.07 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.78 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed265.3 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed269.26 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed279 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.95 kB--
@sentry/nextjs (client)51.16 kB--
@sentry/sveltekit (client)46.78 kB--
@sentry/core/server78.42 kB--
@sentry/core/browser64.74 kB--
@sentry/node-core62.72 kB-0.01%-1 B 🔽
@sentry/node125.37 kB-0.01%-2 B 🔽
@sentry/node (incl. diagnostics channel injection)138.54 kB--
@sentry/node/import (ESM hook with diagnostics-channel injection)69.95 kB--
@sentry/node/light50.72 kB-0.01%-1 B 🔽
@sentry/node - without tracing74.06 kB-0.01%-1 B 🔽
@sentry/aws-serverless85.5 kB-0.01%-2 B 🔽
@sentry/cloudflare (withSentry) - minified181.71 kB--
@sentry/cloudflare (withSentry)449.16 kB--

View base workflow run

@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e595d12 to d6abd79CompareJuly 8, 2026 13:11
@Lms24
Lms24 requested a review from a team as a code ownerJuly 8, 2026 13:11
@Lms24
Lms24 requested review from logaretm and removed request for a teamJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from a518d21 to 1d77c34CompareJuly 8, 2026 13:11
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from d6abd79 to ee4514cCompareJuly 8, 2026 14:22
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 1d77c34 to 6c98bbbCompareJuly 8, 2026 14:22
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:41
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:42
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6c98bbb to 6190c45CompareJuly 8, 2026 14:43
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to 0002c1fCompareJuly 8, 2026 14:43
Comment threadpackages/solid/src/solidrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 0002c1f to ee4514cCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 6190c45 to 6c98bbbCompareJuly 8, 2026 14:46
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from ee4514c to b276e49CompareJuly 8, 2026 14:52
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from 8d16900 to 3aea408CompareJuly 8, 2026 14:57
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch 2 times, most recently from a6eb9e5 to d262ae6CompareJuly 8, 2026 15:00
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 3aea408 to 377e8a8CompareJuly 8, 2026 15:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 1442f98 to fe7157eCompareJuly 8, 2026 16:16
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from cc1771f to c62961fCompareJuly 9, 2026 07:54
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from fe7157e to c49062dCompareJuly 9, 2026 07:54
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c49062d to 189260bCompareJuly 9, 2026 10:29
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from c62961f to f476dfcCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from 189260b to c80aa1cCompareJuly 9, 2026 10:30
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from f476dfc to cfa4176CompareJuly 9, 2026 10:30
@Lms24Lms24 self-assigned this Jul 9, 2026
Comment threadpackages/solid/src/tanstackrouter.ts
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from cfa4176 to ef79aedCompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from c80aa1c to 1139cf9CompareJuly 9, 2026 11:28
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch 2 times, most recently from a8ecb5c to 92e0d28CompareJuly 9, 2026 12:58
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-react branch from e843e31 to 1ccda07CompareJuly 9, 2026 12:58

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 92e0d28. Configure here.

Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Base automatically changed from feat/pageload-url-attrs-react to developJuly 9, 2026 13:58
Lms24and others added 2 commits July 9, 2026 15:59
…pans
Adds url.template, url.path, and url.full to pageload and navigation spans
for Solid Router and TanStack Solid Router, including redirect and back-button
navigation cases. Updates solidstart and solid-tanstack-router e2e tests.
part of #21921
Co-Authored-By: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Lms24
Lms24force-pushed the feat/pageload-url-attrs-solid branch from 92e0d28 to cf15b60CompareJuly 9, 2026 14:00
Comment threadpackages/solid/src/tanstackrouter.ts Outdated
Guard the pageload `onResolved` handler so it only overwrites the span
when a redirect resolves to a real route match, and always write
`url.template` in `applyRouteMatch` so a stale parameterized template is
cleared once a redirect hop lands on an unmatched path. Previously a
redirect chain could downgrade a route-based span to `sentry.source: url`
while keeping a stale `url.template`, misgrouping performance data.
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Comment on lines +154 to 156
applyRouteMatch(span, resolvedMatch, toLocation, WINDOW.location?.pathname || toLocation.pathname);
}
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The onResolved handler for navigation spans doesn't call applyRouteMatch for unmatched routes, preventing url.path and url.full attributes from being set on the span.
Severity: MEDIUM

Suggested Fix

Modify the onResolved handler for navigation spans. The applyRouteMatch function should be called even when resolvedMatch is undefined to ensure URL attributes are set correctly for unmatched routes. This could be done by moving the call outside the if (resolvedMatch) block or adjusting the logic to handle both matched and unmatched cases.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent. Verify if this is a real issue. If it is, propose a fix; if not, explain why it's
not valid.
Location: packages/solid/src/tanstackrouter.ts#L154-L156
Potential issue: In the `onResolved` handler for navigation spans, a conditional check
`if (resolvedMatch)` prevents `applyRouteMatch` from executing when a navigation
resolves to a path without a matching route. While `applyRouteMatch` is designed to
handle this case by setting span attributes like `url.path` and `url.full`, the guard
prevents it from running. Consequently, navigation spans for unmatched routes (e.g., a
404 page) will be missing these important URL attributes, unlike pageload spans where
similar behavior is intentional.

@Lms24
Lms24 merged commit 24ef5c3 into developJul 9, 2026
596 of 599 checks passed
@Lms24
Lms24 deleted the feat/pageload-url-attrs-solid branch July 9, 2026 17:10
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.

3 participants

@Lms24@logaretm@chargome