Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx
, '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

Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx
, '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

Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx
, '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

Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx
, '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

Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx
, '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

Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx
, '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

Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx
, '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

Isaacs/jealous gx fix local variables 12588 - #18245

Merged
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588
Nov 21, 2025
Merged

Isaacs/jealous gx fix local variables 12588#18245
isaacs merged 1 commit into
developfrom
isaacs/JealousGx-fix-local-variables-12588

Conversation

@isaacs

@isaacsisaacs commented Nov 18, 2025

Copy link
Copy Markdown
Member

This is a fix commit for the test fragility, on top of JealousGx:fix/local-variables-12588, from PR #17545 which seems to have gone stale. Also, rebased onto develop branch, squashed, and updated to comply with commit message guidelines.

Close: #17545
Fix: #12588
CC: @JealousGx

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 44f1258 to a5170ecCompareNovember 18, 2025 23:25
@github-actions

github-actionsBot commented Nov 18, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser24.78 kB--
@sentry/browser - with treeshaking flags23.27 kB--
@sentry/browser (incl. Tracing)41.51 kB--
@sentry/browser (incl. Tracing, Profiling)45.83 kB--
@sentry/browser (incl. Tracing, Replay)79.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags69.65 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)84.6 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)96.85 kB--
@sentry/browser (incl. Feedback)41.45 kB--
@sentry/browser (incl. sendFeedback)29.46 kB--
@sentry/browser (incl. FeedbackAsync)34.4 kB--
@sentry/react26.49 kB--
@sentry/react (incl. Tracing)43.51 kB--
@sentry/vue29.22 kB--
@sentry/vue (incl. Tracing)43.31 kB--
@sentry/svelte24.79 kB--
CDN Bundle27.09 kB--
CDN Bundle (incl. Tracing)42.07 kB--
CDN Bundle (incl. Tracing, Replay)78.59 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)84.08 kB--
CDN Bundle - uncompressed79.46 kB--
CDN Bundle (incl. Tracing) - uncompressed124.83 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed240.86 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed253.63 kB--
@sentry/nextjs (client)45.93 kB--
@sentry/sveltekit (client)41.87 kB--
@sentry/node-core51.15 kB+0.11%+53 B 🔺
@sentry/node159.46 kB+0.03%+41 B 🔺
@sentry/node - without tracing93.03 kB+0.05%+43 B 🔺
@sentry/aws-serverless106.78 kB+0.06%+63 B 🔺

View base workflow run

@github-actions

github-actionsBot commented Nov 18, 2025

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 Baseline9,095-8,680+5%
GET With Sentry1,70219%1,595+7%
GET With Sentry (error only)6,09167%5,988+2%
POST Baseline1,202-1,128+7%
POST With Sentry58549%529+11%
POST With Sentry (error only)1,04787%1,000+5%
MYSQL Baseline3,275-3,249+1%
MYSQL With Sentry41313%360+15%
MYSQL With Sentry (error only)2,71183%2,683+1%

View base workflow run

@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a5170ec to 4f88959CompareNovember 19, 2025 01:33

@AbhiPrasadAbhiPrasad left a comment

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.

Looks good! I wonder if the e2e test failures are related?

Let's also make sure we're following the commit guidelines here: https://github.com/getsentry/sentry-javascript/blob/develop/docs/commit-issue-pr-guidelines.md#commits

@isaacsisaacs self-assigned this Nov 19, 2025
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from 4f88959 to fb3ba43CompareNovember 19, 2025 21:49
isaacs pushed a commit that referenced this pull request Nov 19, 2025
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from fb3ba43 to a7767a3CompareNovember 19, 2025 21:54
Address an issue where local variables were not being captured for
out-of-app frames, even when the `includeOutOfAppFrames` option was
enabled.
The `localVariablesSyncIntegration` had a race condition where it would
process events before the debugger session was fully initialized. Fix
this by awaiting the session creation in `setupOnce`.
The tests for this integration were failing because they were not
setting up a Sentry client, which is required for the integration to be
enabled. Correct by adding a client to the test setup.
Additionally, add tests for the `localVariablesAsyncIntegration` to
ensure it correctly handles the `includeOutOfAppFrames` option.
The `LocalVariables` integrations `setupOnce` method was `async`, which
violates the `Integration` interface. This caused a race condition where
events could be processed before the integration was fully initialized,
leading to missed local variables.
Fix the race condition by:
- Make `setupOnce` synchronous to adhere to the interface contract
- Move the asynchronous initialization logic to a separate `setup`
function
- Make `processEvent` asynchronous and await the result of the `setup`
function, so the integration is fully initialized before processing
any events
- Update tests to correctly `await` the `processEvent` method
FixesGH-12588FixesGH-17545
@isaacs
isaacsforce-pushed the isaacs/JealousGx-fix-local-variables-12588 branch from a7767a3 to 1fe7094CompareNovember 21, 2025 15:28
@isaacs
isaacs merged commit e8a1826 into developNov 21, 2025
142 checks passed
@isaacs
isaacs deleted the isaacs/JealousGx-fix-local-variables-12588 branch November 21, 2025 15:49
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.

Local variables missing when exception originates in node_modules dependency

3 participants

@isaacs@AbhiPrasad@JealousGx