fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@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

fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@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

fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@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

fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@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

fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@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

fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@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

fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@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

fix(browser): Ensure user id is consistently added to sessions - #19341

Merged
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user
Feb 19, 2026
Merged

fix(browser): Ensure user id is consistently added to sessions#19341
Lms24 merged 8 commits into
developfrom
lms/fix-browser-session-user

Conversation

@Lms24

@Lms24Lms24 commented Feb 16, 2026

Copy link
Copy Markdown
Member

This PR fixes multiple bugs and problems around browser sessions, mostly related to user id assignment:

  1. When calling Sentry.setUser() on static pages (i.e. no soft navigations), the user id would never be added to sessions. This is because in static pages, we don't send an "exited" session update. The fix: We send a session update whenever the user is set on the isolationScope (see comment about limitations)

  2. When calling Sentry.setUser() in a single page application (i.e. with soft navigations), we would update the initial session with the user data when starting a new session for a new navigation. However, we did not include the user id on the new session, because the getCurrentScope().getUser() || getIsolationScope().getUser() check was flawed. The fix: we use our getCombinedScopeData helper to get the "correct" (read, consistently like in other telemetry items) user.

  3. It seems like we had an incorrect check that would skip creating a new sessions for the first soft navigation after the pageload (in the default 'route') session lifecycle. The fix: We no longer check for from being undefined.

In addition, I also added a new waitForSession helper and refactored most session integration tests to use this helper. This allows us to more granularly listen to multiple session envelopes simultaneously without running into collision risks.

As a result of these fixes, session counts could increase as a whole but also metrics like "crash free users" will likely change. I added a note to the changelog calling this out.

Waiting on https://github.com/getsentry/sentry-docs/pull/16428/changes for final changelog note modification

closes#19317

Comment threadpackages/browser/src/integrations/browsersession.ts Outdated
Comment threaddev-packages/browser-integration-tests/utils/helpers.ts Outdated
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Codecov Results 📊


Generated by Codecov Action

@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser25.61 kB+0.2%+50 B 🔺
@sentry/browser - with treeshaking flags24.12 kB+0.17%+40 B 🔺
@sentry/browser (incl. Tracing)42.42 kB+0.14%+57 B 🔺
@sentry/browser (incl. Tracing, Profiling)47.08 kB+0.11%+50 B 🔺
@sentry/browser (incl. Tracing, Replay)81.24 kB+0.07%+56 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags70.86 kB+0.09%+57 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)85.93 kB+0.08%+66 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)98.09 kB+0.07%+60 B 🔺
@sentry/browser (incl. Feedback)42.33 kB+0.11%+43 B 🔺
@sentry/browser (incl. sendFeedback)30.28 kB+0.17%+49 B 🔺
@sentry/browser (incl. FeedbackAsync)35.28 kB+0.16%+56 B 🔺
@sentry/browser (incl. Metrics)26.78 kB+0.16%+41 B 🔺
@sentry/browser (incl. Logs)26.92 kB+0.16%+42 B 🔺
@sentry/browser (incl. Metrics & Logs)27.6 kB+0.16%+42 B 🔺
@sentry/react27.37 kB+0.14%+37 B 🔺
@sentry/react (incl. Tracing)44.76 kB+0.09%+38 B 🔺
@sentry/vue30.06 kB+0.18%+54 B 🔺
@sentry/vue (incl. Tracing)44.26 kB+0.11%+47 B 🔺
@sentry/svelte25.64 kB+0.24%+59 B 🔺
CDN Bundle28.16 kB+0.17%+46 B 🔺
CDN Bundle (incl. Tracing)43.25 kB+0.11%+47 B 🔺
CDN Bundle (incl. Logs, Metrics)29 kB+0.16%+45 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics)44.09 kB+0.13%+55 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics)68.08 kB+0.09%+55 B 🔺
CDN Bundle (incl. Tracing, Replay)80.12 kB+0.07%+50 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)80.99 kB+0.06%+47 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)85.56 kB+0.08%+61 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)86.46 kB+0.07%+60 B 🔺
CDN Bundle - uncompressed82.33 kB+0.15%+118 B 🔺
CDN Bundle (incl. Tracing) - uncompressed128.05 kB+0.1%+118 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed85.17 kB+0.14%+118 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed130.88 kB+0.1%+118 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed208.83 kB+0.06%+118 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed244.93 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed247.75 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed257.73 kB+0.05%+118 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed260.54 kB+0.05%+118 B 🔺
@sentry/nextjs (client)47.17 kB+0.12%+53 B 🔺
@sentry/sveltekit (client)42.88 kB+0.16%+68 B 🔺
@sentry/node-core52.16 kB+0.05%+24 B 🔺
@sentry/node166.53 kB+0.01%+7 B 🔺
@sentry/node - without tracing93.95 kB+0.02%+10 B 🔺
@sentry/aws-serverless109.45 kB+0.01%+5 B 🔺

View base workflow run

Comment threadpackages/browser/src/integrations/browsersession.ts
@github-actions

github-actionsBot commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

node-overhead report 🧳

Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.

ScenarioRequests/s% of BaselinePrev. Requests/sChange %
GET Baseline8,786-8,917-1%
GET With Sentry1,64119%1,608+2%
GET With Sentry (error only)6,12870%6,072+1%
POST Baseline1,203-1,187+1%
POST With Sentry58749%572+3%
POST With Sentry (error only)1,05788%1,058-0%
MYSQL Baseline3,264-3,266-0%
MYSQL With Sentry46714%473-1%
MYSQL With Sentry (error only)2,69583%2,684+0%

View base workflow run

@Lms24Lms24 changed the title fix(browser): Update session after Sentry.setUser callsfix(browser): Ensure user id is consistently added to sessionsFeb 16, 2026
Comment threadpackages/browser/src/integrations/browsersession.ts
Comment threadCHANGELOG.md Outdated
Comment threadCHANGELOG.md Outdated

While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new `'page'` session lifecycle a try!
This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh.
Check out the [docs](TODO LINK) to learn more!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

l: Just a reminder to not forget to set the link in the docs

Comment threadpackages/browser/src/integrations/browsersession.ts

@chargomechargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@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 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment threadCHANGELOG.md Outdated
Comment thread.size-limit.js
Comment threadpackages/browser/src/integrations/browsersession.ts
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from eb2a670 to 5a94cadCompareFebruary 18, 2026 09:43
Lms24 added a commit to getsentry/sentry-docs that referenced this pull request Feb 18, 2026
…ntegration` (#16428)
<!-- Use this checklist to make sure your PR is ready for merge. You may
delete any sections you don't need. -->
## DESCRIBE YOUR PR
Adds docs for getsentry/sentry-javascript#18997.
I'd like to merge this before
getsentry/sentry-javascript#19341 since it calls
out this page in the changelog.
## IS YOUR CHANGE URGENT? Help us prioritize incoming PRs by letting us know when the change needs
to go live.
- [ ] Urgent deadline (GA date, etc.): <!-- ENTER DATE HERE -->
- [ ] Other deadline: <!-- ENTER DATE HERE -->
- [ ] None: Not urgent, can wait up to 1 week+
## SLA
- Teamwork makes the dream work, so please add a reviewer to your PRs.
- Please give the docs team up to 1 week to review your PR unless you've
added an urgent due date to it.
Thanks in advance for your help!
## PRE-MERGE CHECKLIST
*Make sure you've checked the following before merging your changes:*
- [ ] Checked Vercel preview for correctness, including links
- [ ] PR was reviewed and approved by any necessary SMEs (subject matter
experts)
- [ ] PR was reviewed and approved by a member of the [Sentry docs
team](https://github.com/orgs/getsentry/teams/docs)
## LEGAL BOILERPLATE
<!-- Sentry employees and contractors can delete or ignore this section.
-->
Look, I get it. The entity doing business as "Sentry" was incorporated
in the State of Delaware in 2015 as Functional Software, Inc. and is
gonna need some rights from me in order to utilize my contributions in
this here PR. So here's the deal: I retain all rights, title and
interest in and to my contributions, and by keeping this boilerplate
intact I confirm that Sentry can use, modify, copy, and redistribute my
contributions, under Sentry's choice of terms.
## EXTRA RESOURCES
- [Sentry Docs contributor guide](https://docs.sentry.io/contributing/)
@Lms24
Lms24force-pushed the lms/fix-browser-session-user branch from 5a94cad to 82422d7CompareFebruary 19, 2026 09:51
@Lms24
Lms24 enabled auto-merge (squash) February 19, 2026 09:52
@Lms24
Lms24 merged commit 7ff79f6 into developFeb 19, 2026
225 of 226 checks passed
@Lms24
Lms24 deleted the lms/fix-browser-session-user branch February 19, 2026 10:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

User information no available in the release session

3 participants

@Lms24@JPeer264@chargome