Skip to content

fix(feedback): Prevent removeFromDom() from throwing - #16030

Merged
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws
May 1, 2025
Merged

fix(feedback): Prevent removeFromDom() from throwing#16030
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws

Conversation

@ryan953

@ryan953ryan953 commented Apr 10, 2025

Copy link
Copy Markdown
Member

An internal user reported seeing "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the replay of their session confirms it: https://sentry.sentry.io/explore/replays/127444034ae84099a84b524458b6dd90/

However, there is no matching JS error to give more clues.

What I think happened is that after interacting with the Feedback SDK the widget got into a state where it was no longer mounted into the page, but we called removeFromDom() anyway.

Looking at the replay i saw the moment when the feedback dom was aded to the page, but it wasn't visible, only this got added at 18:51:
SCR-20250411-lsav

So something prevented it from opening all the way up.

Fixesgetsentry/sentry#89424

@ryan953
ryan953 requested a review from a team as a code ownerApril 10, 2025 22:10
@codecov

codecovBot commented Apr 10, 2025

Copy link
Copy Markdown

❌ We are unable to process any of the uploaded JUnit XML files. Please ensure your files are in the right format.

logger.error(
'[Feedback] Error when trying to remove Actor from the DOM. It is not appended to the DOM yet!',
);
throw new Error('[Feedback] Actor is not appended to DOM, nothing to remove.');

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.

Why do you want to throw this one here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

turns out el.remove() doesn't even throw if there's no parent element. unlike parent.removeChild(child).

So now if people call removeFromDom() we'll basically guarantee that the elements will be removed, and there'll be no errors thrown.

Similar to the appendToDom() call, SDK users can't really tell what state things are currently in, but they can call methods to put things into the state you want to be in.

@ryan953
ryan953 marked this pull request as draft April 11, 2025 15:24
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 7a904c7 to 18c9875CompareApril 14, 2025 20:42
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 96483aa to 0463304CompareApril 14, 2025 21:00
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 0463304 to b85449bCompareApril 14, 2025 21:02
@ryan953
ryan953 marked this pull request as ready for review April 14, 2025 21:05
@ryan953
ryan953 requested review from a team and chargomeApril 14, 2025 21:05
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.28 KB--
@sentry/browser - with treeshaking flags23.12 KB--
@sentry/browser (incl. Tracing)36.99 KB--
@sentry/browser (incl. Tracing, Replay)74.17 KB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.55 KB--
@sentry/browser (incl. Tracing, Replay with Canvas)78.83 KB--
@sentry/browser (incl. Tracing, Replay, Feedback)90.65 KB-0.01%-8 B 🔽
@sentry/browser (incl. Feedback)39.67 KB-0.03%-10 B 🔽
@sentry/browser (incl. sendFeedback)27.9 KB--
@sentry/browser (incl. FeedbackAsync)32.67 KB-0.02%-5 B 🔽
@sentry/react25.09 KB--
@sentry/react (incl. Tracing)38.91 KB--
@sentry/vue27.51 KB--
@sentry/vue (incl. Tracing)38.71 KB--
@sentry/svelte23.32 KB--
CDN Bundle24.51 KB--
CDN Bundle (incl. Tracing)36.98 KB--
CDN Bundle (incl. Tracing, Replay)72.03 KB--
CDN Bundle (incl. Tracing, Replay, Feedback)77.17 KB-0.01%-6 B 🔽
CDN Bundle - uncompressed71.47 KB--
CDN Bundle (incl. Tracing) - uncompressed109.34 KB--
CDN Bundle (incl. Tracing, Replay) - uncompressed220.63 KB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed233.15 KB-0.01%-12 B 🔽
@sentry/nextjs (client)40.53 KB--
@sentry/sveltekit (client)37.44 KB--
@sentry/node143.23 KB--
@sentry/node - without tracing96.47 KB--
@sentry/aws-serverless120.77 KB--

View base workflow run

@ryan953ryan953 changed the title fix(feedback): Fix an issue where, if removeFromDom() is called it might throwfix(feedback): Prevent removeFromDom() from throwingApr 15, 2025
@ryan953
ryan953 merged commit b94062f into developMay 1, 2025
@ryan953
ryan953 deleted the ryan953/fix-feedback-throws branch May 1, 2025 00:12
aviator-appBot added a commit to reisene/HulajDusza-serwis that referenced this pull request May 30, 2025
![reisene](https://badgen.net/badge/icon/reisene/green?label=) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=reisene&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)
<h3>Snyk has created this PR to upgrade @sentry/browser from 9.10.0 to 9.17.0.</h3>
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
<hr/>
- The recommended version is **9 versions** ahead of your current version.
- The recommended version was released **22 days ago**.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>9.17.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.17.0">2025-05-08</a></br><ul>
<li>feat(node): Migrate to <code>@ fastify/otel</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15542" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/15542/hovercard">#15542</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>151.37 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.1</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.1">2025-05-07</a></br><ul>
<li>fix(core): Make sure logs get flushed in server-runtime-client (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16222" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16222/hovercard">#16222</a>)</li>
<li>ref(node): Remove vercel flushing code that does nothing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16217" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16217/hovercard">#16217</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.93 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.0">2025-05-07</a></br><h3>Important changes</h3>
<ul>
<li><strong>feat: Create a Vite plugin that injects sentryConfig into the global config (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16197" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16197/hovercard">#16197</a>)</strong></li>
</ul>
<p>Add a new plugin <code>makeConfigInjectorPlugin</code> within our existing vite plugin that updates the global vite config with sentry options</p>
<ul>
<li><strong>feat(browser): Add option to sample linked traces consistently (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16037/hovercard">#16037</a>)</strong></li>
</ul>
<p>This PR implements consistent sampling across traces as outlined in (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15754" data-hovercard-type="issue" data-hovercard-url="/getsentry/sentry-javascript/issues/15754/hovercard">#15754</a>)</p>
<ul>
<li><strong>feat(cloudflare): Add support for durable objects (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16180" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16180/hovercard">#16180</a>)</strong></li>
</ul>
<p>This PR introduces a new <code>instrumentDurableObjectWithSentry</code> method to the SDK, which instruments durable objects. We capture both traces and errors automatically.</p>
<ul>
<li><strong>feat(node): Add Prisma integration by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16073" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16073/hovercard">#16073</a>)</strong></li>
</ul>
<p><a href="https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/integrations/prisma/" rel="nofollow">Prisma integration</a> is enabled by default, it should work for both ESM and CJS.</p>
<ul>
<li><strong>feat(react-router): Add client-side router instrumentation (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16185" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16185/hovercard">#16185</a>)</strong></li>
</ul>
<p>Adds client-side instrumentation for react router's <code>HydratedRouter</code>. To enable it, simply replace <code>browserTracingIntegration()</code> with <code>reactRouterTracingIntegration()</code> in your client-side init call.</p>
<ul>
<li><strong>fix(node): Avoid double-wrapping http module (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16177" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16177/hovercard">#16177</a>)</strong></li>
</ul>
<p>When running your application in ESM mode, there have been scenarios that resulted in the <code>http</code>/<code>https</code> emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.</p>
<p>In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnostics<em>channel hooks to handle request isolation now.<br>
While this is generally not expected to break anything, there is one tiny change that _may</em> affect you if you have been relying on very specific functionality:</p>
<p>The <code>ignoreOutgoingRequests</code> option of <code>httpIntegration</code> receives the <code>RequestOptions</code> as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that <em>may</em> have existed before may no longer be set:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})"><pre><span class="pl-s1">ignoreOutgoingRequests</span><span class="pl-kos">(</span><span class="pl-s1">url</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">method</span>: <span class="pl-s1">string</span><span class="pl-kos">;</span>
protocol: <span class="pl-s1">string</span><span class="pl-kos">;</span>
host: <span class="pl-s1">string</span><span class="pl-kos">;</span>
hostname: <span class="pl-s1">string</span><span class="pl-kos">;</span> <span class="pl-c">// same as host</span>
path: <span class="pl-s1">string</span><span class="pl-kos">;</span>
headers: <span class="pl-v">OutgoingHttpHeaders</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3>Other changes</h3>
<ul>
<li>feat(cloudflare): Add logs exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16165" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16165/hovercard">#16165</a>)</li>
<li>feat(vercel-edge): Add logs export (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16166" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16166/hovercard">#16166</a>)</li>
<li>feat(cloudflare): Read <code>SENTRY_RELEASE</code> from <code>env</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16201" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16201/hovercard">#16201</a>)</li>
<li>feat(node): Drop <code>http.server</code> spans with 404 status by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16205" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16205/hovercard">#16205</a>)</li>
<li>fix(browser): Respect manually set sentry tracing headers in XHR requests (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16184" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16184/hovercard">#16184</a>)</li>
<li>fix(core): Respect manually set sentry tracing headers in fetch calls (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16183" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16183/hovercard">#16183</a>)</li>
<li>fix(feedback): Prevent <code>removeFromDom()</code> from throwing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16030" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16030/hovercard">#16030</a>)</li>
<li>fix(node): Use class constructor in docstring for winston transport (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16167" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16167/hovercard">#16167</a>)</li>
<li>fix(node): Fix vercel flushing logic &amp; add test for it (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16208" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16208/hovercard">#16208</a>)</li>
<li>fix(node): Fix 404 route handling in express 5 (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16211" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16211/hovercard">#16211</a>)</li>
<li>fix(logs): Ensure logs can be flushed correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16216" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16216/hovercard">#16216</a>)</li>
<li>ref(core): Switch to standardized log envelope (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16133" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16133/hovercard">#16133</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>144.43 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.3 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.66 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.15.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.15.0">2025-04-29</a></br><h3>Important Changes</h3>
<ul>
<li><strong>feat: Export <code>wrapMcpServerWithSentry</code> from server packages (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16127/hovercard">#16127</a>)</strong></li>
</ul>
<p>Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.</p>
<ul>
<li><strong>feat(core): Associate resource/tool/prompt invocations with request span instead of response span (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16126" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16126/hovercard">#16126</a>)</strong></li>
</ul>
<p>Adds a best effort mechanism to associate handler spans for <code>resource</code>, <code>tool</code> and <code>prompt</code> with the incoming message requests instead of the outgoing SSE response.</p>
<h3>Other Changes</h3>
<ul>
<li>fix: Vercel <code>ai</code> ESM patching (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16152" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16152/hovercard">#16152</a>)</li>
<li>fix(node): Update version range for <code>module.register</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16125" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16125/hovercard">#16125</a>)</li>
<li>fix(react-router): Spread <code>unstable_sentryVitePluginOptions</code> correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16156" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16156/hovercard">#16156</a>)</li>
<li>fix(react): Fix Redux integration failing with reducer injection (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16106/hovercard">#16106</a>)</li>
<li>fix(remix): Add ESM-compatible exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16124/hovercard">#16124</a>)</li>
<li>fix(remix): Avoid rewrapping root loader. (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16136" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16136/hovercard">#16136</a>)</li>
</ul>
<p>Work in this release was contributed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntoineDuComptoirDesPharmacies/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AntoineDuComptoirDesPharmacies">@ AntoineDuComptoirDesPharmacies</a>. Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.28 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>36.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>67.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>78.76 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.58 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.68 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.67 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.09 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>38.93 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.5 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>38.69 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.31 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.49 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>36.96 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.3 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.5 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>109.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>220.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>233.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.51 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.41 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.4 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.49 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.81 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.14.0</b> - 2025-04-23
</li>
<li>
<b>9.13.0</b> - 2025-04-16
</li>
<li>
<b>9.12.0</b> - 2025-04-08
</li>
<li>
<b>9.11.0</b> - 2025-04-03
</li>
<li>
<b>9.10.1</b> - 2025-03-28
</li>
<li>
<b>9.10.0</b> - 2025-03-27
</li>
</ul>
from <a href="https://redirect.github.com/getsentry/sentry-javascript/releases">@sentry/browser GitHub release notes</a>
</details>
</details>
---
> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - This PR was automatically created by Snyk using the credentials of a real user.
---
**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._
**For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJiMWMyNmNmNi03NzYxLTRkZDctYjM1Ni1jMWVmNGNhY2FiZmEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImIxYzI2Y2Y2LTc3NjEtNGRkNy1iMzU2LWMxZWY0Y2FjYWJmYSJ9fQ==" width="0" height="0"/>
> - 🧐 [View latest project report](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template)
> - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?pkg&#x3D;@sentry/browser&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)
[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"@sentry/browser","from":"9.10.0","to":"9.17.0"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","prPublicId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","packageManager":"npm","priorityScoreList":[],"projectPublicId":"3b48baaa-833b-4239-b348-16091472ee83","projectUrl":"https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":9,"publishedDate":"2025-05-08T12:44:52.593Z"},"vulns":[]}'
## Podsumowanie od Sourcery
Prace porządkowe:
- Aktualizacja @sentry/browser z wersji 9.10.0 do 9.17.0 w zależnościach i pliku blokady (lockfile)
<details>
<summary>Original summary in English</summary>
## Summary by Sourcery
Chores:
- Bump @sentry/browser from 9.10.0 to 9.17.0 in dependencies and lockfile
</details>
Co-authored-by: Snyk bot <19733683+snyk-bot@users.noreply.github.com>
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.

User Feedback causes page to crash?

3 participants

@ryan953@mydea@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix(feedback): Prevent `removeFromDom()` from throwing by ryan953 · Pull Request #16030 · getsentry/sentry-javascript · GitHub
Skip to content

fix(feedback): Prevent removeFromDom() from throwing - #16030

Merged
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws
May 1, 2025
Merged

fix(feedback): Prevent removeFromDom() from throwing#16030
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws

Conversation

@ryan953

@ryan953ryan953 commented Apr 10, 2025

Copy link
Copy Markdown
Member

An internal user reported seeing "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the replay of their session confirms it: https://sentry.sentry.io/explore/replays/127444034ae84099a84b524458b6dd90/

However, there is no matching JS error to give more clues.

What I think happened is that after interacting with the Feedback SDK the widget got into a state where it was no longer mounted into the page, but we called removeFromDom() anyway.

Looking at the replay i saw the moment when the feedback dom was aded to the page, but it wasn't visible, only this got added at 18:51:
SCR-20250411-lsav

So something prevented it from opening all the way up.

Fixesgetsentry/sentry#89424

@ryan953
ryan953 requested a review from a team as a code ownerApril 10, 2025 22:10
@codecov

codecovBot commented Apr 10, 2025

Copy link
Copy Markdown

❌ We are unable to process any of the uploaded JUnit XML files. Please ensure your files are in the right format.

logger.error(
'[Feedback] Error when trying to remove Actor from the DOM. It is not appended to the DOM yet!',
);
throw new Error('[Feedback] Actor is not appended to DOM, nothing to remove.');

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.

Why do you want to throw this one here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

turns out el.remove() doesn't even throw if there's no parent element. unlike parent.removeChild(child).

So now if people call removeFromDom() we'll basically guarantee that the elements will be removed, and there'll be no errors thrown.

Similar to the appendToDom() call, SDK users can't really tell what state things are currently in, but they can call methods to put things into the state you want to be in.

@ryan953
ryan953 marked this pull request as draft April 11, 2025 15:24
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 7a904c7 to 18c9875CompareApril 14, 2025 20:42
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 96483aa to 0463304CompareApril 14, 2025 21:00
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 0463304 to b85449bCompareApril 14, 2025 21:02
@ryan953
ryan953 marked this pull request as ready for review April 14, 2025 21:05
@ryan953
ryan953 requested review from a team and chargomeApril 14, 2025 21:05
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.28 KB--
@sentry/browser - with treeshaking flags23.12 KB--
@sentry/browser (incl. Tracing)36.99 KB--
@sentry/browser (incl. Tracing, Replay)74.17 KB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.55 KB--
@sentry/browser (incl. Tracing, Replay with Canvas)78.83 KB--
@sentry/browser (incl. Tracing, Replay, Feedback)90.65 KB-0.01%-8 B 🔽
@sentry/browser (incl. Feedback)39.67 KB-0.03%-10 B 🔽
@sentry/browser (incl. sendFeedback)27.9 KB--
@sentry/browser (incl. FeedbackAsync)32.67 KB-0.02%-5 B 🔽
@sentry/react25.09 KB--
@sentry/react (incl. Tracing)38.91 KB--
@sentry/vue27.51 KB--
@sentry/vue (incl. Tracing)38.71 KB--
@sentry/svelte23.32 KB--
CDN Bundle24.51 KB--
CDN Bundle (incl. Tracing)36.98 KB--
CDN Bundle (incl. Tracing, Replay)72.03 KB--
CDN Bundle (incl. Tracing, Replay, Feedback)77.17 KB-0.01%-6 B 🔽
CDN Bundle - uncompressed71.47 KB--
CDN Bundle (incl. Tracing) - uncompressed109.34 KB--
CDN Bundle (incl. Tracing, Replay) - uncompressed220.63 KB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed233.15 KB-0.01%-12 B 🔽
@sentry/nextjs (client)40.53 KB--
@sentry/sveltekit (client)37.44 KB--
@sentry/node143.23 KB--
@sentry/node - without tracing96.47 KB--
@sentry/aws-serverless120.77 KB--

View base workflow run

@ryan953ryan953 changed the title fix(feedback): Fix an issue where, if removeFromDom() is called it might throwfix(feedback): Prevent removeFromDom() from throwingApr 15, 2025
@ryan953
ryan953 merged commit b94062f into developMay 1, 2025
@ryan953
ryan953 deleted the ryan953/fix-feedback-throws branch May 1, 2025 00:12
aviator-appBot added a commit to reisene/HulajDusza-serwis that referenced this pull request May 30, 2025
![reisene](https://badgen.net/badge/icon/reisene/green?label=) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=reisene&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)
<h3>Snyk has created this PR to upgrade @sentry/browser from 9.10.0 to 9.17.0.</h3>
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
<hr/>
- The recommended version is **9 versions** ahead of your current version.
- The recommended version was released **22 days ago**.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>9.17.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.17.0">2025-05-08</a></br><ul>
<li>feat(node): Migrate to <code>@ fastify/otel</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15542" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/15542/hovercard">#15542</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>151.37 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.1</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.1">2025-05-07</a></br><ul>
<li>fix(core): Make sure logs get flushed in server-runtime-client (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16222" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16222/hovercard">#16222</a>)</li>
<li>ref(node): Remove vercel flushing code that does nothing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16217" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16217/hovercard">#16217</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.93 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.0">2025-05-07</a></br><h3>Important changes</h3>
<ul>
<li><strong>feat: Create a Vite plugin that injects sentryConfig into the global config (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16197" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16197/hovercard">#16197</a>)</strong></li>
</ul>
<p>Add a new plugin <code>makeConfigInjectorPlugin</code> within our existing vite plugin that updates the global vite config with sentry options</p>
<ul>
<li><strong>feat(browser): Add option to sample linked traces consistently (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16037/hovercard">#16037</a>)</strong></li>
</ul>
<p>This PR implements consistent sampling across traces as outlined in (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15754" data-hovercard-type="issue" data-hovercard-url="/getsentry/sentry-javascript/issues/15754/hovercard">#15754</a>)</p>
<ul>
<li><strong>feat(cloudflare): Add support for durable objects (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16180" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16180/hovercard">#16180</a>)</strong></li>
</ul>
<p>This PR introduces a new <code>instrumentDurableObjectWithSentry</code> method to the SDK, which instruments durable objects. We capture both traces and errors automatically.</p>
<ul>
<li><strong>feat(node): Add Prisma integration by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16073" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16073/hovercard">#16073</a>)</strong></li>
</ul>
<p><a href="https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/integrations/prisma/" rel="nofollow">Prisma integration</a> is enabled by default, it should work for both ESM and CJS.</p>
<ul>
<li><strong>feat(react-router): Add client-side router instrumentation (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16185" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16185/hovercard">#16185</a>)</strong></li>
</ul>
<p>Adds client-side instrumentation for react router's <code>HydratedRouter</code>. To enable it, simply replace <code>browserTracingIntegration()</code> with <code>reactRouterTracingIntegration()</code> in your client-side init call.</p>
<ul>
<li><strong>fix(node): Avoid double-wrapping http module (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16177" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16177/hovercard">#16177</a>)</strong></li>
</ul>
<p>When running your application in ESM mode, there have been scenarios that resulted in the <code>http</code>/<code>https</code> emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.</p>
<p>In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnostics<em>channel hooks to handle request isolation now.<br>
While this is generally not expected to break anything, there is one tiny change that _may</em> affect you if you have been relying on very specific functionality:</p>
<p>The <code>ignoreOutgoingRequests</code> option of <code>httpIntegration</code> receives the <code>RequestOptions</code> as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that <em>may</em> have existed before may no longer be set:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})"><pre><span class="pl-s1">ignoreOutgoingRequests</span><span class="pl-kos">(</span><span class="pl-s1">url</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">method</span>: <span class="pl-s1">string</span><span class="pl-kos">;</span>
protocol: <span class="pl-s1">string</span><span class="pl-kos">;</span>
host: <span class="pl-s1">string</span><span class="pl-kos">;</span>
hostname: <span class="pl-s1">string</span><span class="pl-kos">;</span> <span class="pl-c">// same as host</span>
path: <span class="pl-s1">string</span><span class="pl-kos">;</span>
headers: <span class="pl-v">OutgoingHttpHeaders</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3>Other changes</h3>
<ul>
<li>feat(cloudflare): Add logs exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16165" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16165/hovercard">#16165</a>)</li>
<li>feat(vercel-edge): Add logs export (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16166" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16166/hovercard">#16166</a>)</li>
<li>feat(cloudflare): Read <code>SENTRY_RELEASE</code> from <code>env</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16201" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16201/hovercard">#16201</a>)</li>
<li>feat(node): Drop <code>http.server</code> spans with 404 status by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16205" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16205/hovercard">#16205</a>)</li>
<li>fix(browser): Respect manually set sentry tracing headers in XHR requests (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16184" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16184/hovercard">#16184</a>)</li>
<li>fix(core): Respect manually set sentry tracing headers in fetch calls (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16183" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16183/hovercard">#16183</a>)</li>
<li>fix(feedback): Prevent <code>removeFromDom()</code> from throwing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16030" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16030/hovercard">#16030</a>)</li>
<li>fix(node): Use class constructor in docstring for winston transport (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16167" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16167/hovercard">#16167</a>)</li>
<li>fix(node): Fix vercel flushing logic &amp; add test for it (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16208" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16208/hovercard">#16208</a>)</li>
<li>fix(node): Fix 404 route handling in express 5 (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16211" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16211/hovercard">#16211</a>)</li>
<li>fix(logs): Ensure logs can be flushed correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16216" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16216/hovercard">#16216</a>)</li>
<li>ref(core): Switch to standardized log envelope (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16133" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16133/hovercard">#16133</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>144.43 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.3 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.66 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.15.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.15.0">2025-04-29</a></br><h3>Important Changes</h3>
<ul>
<li><strong>feat: Export <code>wrapMcpServerWithSentry</code> from server packages (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16127/hovercard">#16127</a>)</strong></li>
</ul>
<p>Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.</p>
<ul>
<li><strong>feat(core): Associate resource/tool/prompt invocations with request span instead of response span (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16126" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16126/hovercard">#16126</a>)</strong></li>
</ul>
<p>Adds a best effort mechanism to associate handler spans for <code>resource</code>, <code>tool</code> and <code>prompt</code> with the incoming message requests instead of the outgoing SSE response.</p>
<h3>Other Changes</h3>
<ul>
<li>fix: Vercel <code>ai</code> ESM patching (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16152" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16152/hovercard">#16152</a>)</li>
<li>fix(node): Update version range for <code>module.register</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16125" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16125/hovercard">#16125</a>)</li>
<li>fix(react-router): Spread <code>unstable_sentryVitePluginOptions</code> correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16156" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16156/hovercard">#16156</a>)</li>
<li>fix(react): Fix Redux integration failing with reducer injection (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16106/hovercard">#16106</a>)</li>
<li>fix(remix): Add ESM-compatible exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16124/hovercard">#16124</a>)</li>
<li>fix(remix): Avoid rewrapping root loader. (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16136" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16136/hovercard">#16136</a>)</li>
</ul>
<p>Work in this release was contributed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntoineDuComptoirDesPharmacies/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AntoineDuComptoirDesPharmacies">@ AntoineDuComptoirDesPharmacies</a>. Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.28 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>36.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>67.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>78.76 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.58 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.68 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.67 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.09 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>38.93 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.5 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>38.69 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.31 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.49 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>36.96 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.3 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.5 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>109.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>220.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>233.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.51 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.41 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.4 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.49 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.81 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.14.0</b> - 2025-04-23
</li>
<li>
<b>9.13.0</b> - 2025-04-16
</li>
<li>
<b>9.12.0</b> - 2025-04-08
</li>
<li>
<b>9.11.0</b> - 2025-04-03
</li>
<li>
<b>9.10.1</b> - 2025-03-28
</li>
<li>
<b>9.10.0</b> - 2025-03-27
</li>
</ul>
from <a href="https://redirect.github.com/getsentry/sentry-javascript/releases">@sentry/browser GitHub release notes</a>
</details>
</details>
---
> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - This PR was automatically created by Snyk using the credentials of a real user.
---
**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._
**For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJiMWMyNmNmNi03NzYxLTRkZDctYjM1Ni1jMWVmNGNhY2FiZmEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImIxYzI2Y2Y2LTc3NjEtNGRkNy1iMzU2LWMxZWY0Y2FjYWJmYSJ9fQ==" width="0" height="0"/>
> - 🧐 [View latest project report](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template)
> - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?pkg&#x3D;@sentry/browser&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)
[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"@sentry/browser","from":"9.10.0","to":"9.17.0"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","prPublicId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","packageManager":"npm","priorityScoreList":[],"projectPublicId":"3b48baaa-833b-4239-b348-16091472ee83","projectUrl":"https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":9,"publishedDate":"2025-05-08T12:44:52.593Z"},"vulns":[]}'
## Podsumowanie od Sourcery
Prace porządkowe:
- Aktualizacja @sentry/browser z wersji 9.10.0 do 9.17.0 w zależnościach i pliku blokady (lockfile)
<details>
<summary>Original summary in English</summary>
## Summary by Sourcery
Chores:
- Bump @sentry/browser from 9.10.0 to 9.17.0 in dependencies and lockfile
</details>
Co-authored-by: Snyk bot <19733683+snyk-bot@users.noreply.github.com>
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.

User Feedback causes page to crash?

3 participants

@ryan953@mydea@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(feedback): Prevent `removeFromDom()` from throwing by ryan953 · Pull Request #16030 · getsentry/sentry-javascript · GitHub
Skip to content

fix(feedback): Prevent removeFromDom() from throwing - #16030

Merged
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws
May 1, 2025
Merged

fix(feedback): Prevent removeFromDom() from throwing#16030
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws

Conversation

@ryan953

@ryan953ryan953 commented Apr 10, 2025

Copy link
Copy Markdown
Member

An internal user reported seeing "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the replay of their session confirms it: https://sentry.sentry.io/explore/replays/127444034ae84099a84b524458b6dd90/

However, there is no matching JS error to give more clues.

What I think happened is that after interacting with the Feedback SDK the widget got into a state where it was no longer mounted into the page, but we called removeFromDom() anyway.

Looking at the replay i saw the moment when the feedback dom was aded to the page, but it wasn't visible, only this got added at 18:51:
SCR-20250411-lsav

So something prevented it from opening all the way up.

Fixesgetsentry/sentry#89424

@ryan953
ryan953 requested a review from a team as a code ownerApril 10, 2025 22:10
@codecov

codecovBot commented Apr 10, 2025

Copy link
Copy Markdown

❌ We are unable to process any of the uploaded JUnit XML files. Please ensure your files are in the right format.

logger.error(
'[Feedback] Error when trying to remove Actor from the DOM. It is not appended to the DOM yet!',
);
throw new Error('[Feedback] Actor is not appended to DOM, nothing to remove.');

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.

Why do you want to throw this one here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

turns out el.remove() doesn't even throw if there's no parent element. unlike parent.removeChild(child).

So now if people call removeFromDom() we'll basically guarantee that the elements will be removed, and there'll be no errors thrown.

Similar to the appendToDom() call, SDK users can't really tell what state things are currently in, but they can call methods to put things into the state you want to be in.

@ryan953
ryan953 marked this pull request as draft April 11, 2025 15:24
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 7a904c7 to 18c9875CompareApril 14, 2025 20:42
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 96483aa to 0463304CompareApril 14, 2025 21:00
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 0463304 to b85449bCompareApril 14, 2025 21:02
@ryan953
ryan953 marked this pull request as ready for review April 14, 2025 21:05
@ryan953
ryan953 requested review from a team and chargomeApril 14, 2025 21:05
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.28 KB--
@sentry/browser - with treeshaking flags23.12 KB--
@sentry/browser (incl. Tracing)36.99 KB--
@sentry/browser (incl. Tracing, Replay)74.17 KB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.55 KB--
@sentry/browser (incl. Tracing, Replay with Canvas)78.83 KB--
@sentry/browser (incl. Tracing, Replay, Feedback)90.65 KB-0.01%-8 B 🔽
@sentry/browser (incl. Feedback)39.67 KB-0.03%-10 B 🔽
@sentry/browser (incl. sendFeedback)27.9 KB--
@sentry/browser (incl. FeedbackAsync)32.67 KB-0.02%-5 B 🔽
@sentry/react25.09 KB--
@sentry/react (incl. Tracing)38.91 KB--
@sentry/vue27.51 KB--
@sentry/vue (incl. Tracing)38.71 KB--
@sentry/svelte23.32 KB--
CDN Bundle24.51 KB--
CDN Bundle (incl. Tracing)36.98 KB--
CDN Bundle (incl. Tracing, Replay)72.03 KB--
CDN Bundle (incl. Tracing, Replay, Feedback)77.17 KB-0.01%-6 B 🔽
CDN Bundle - uncompressed71.47 KB--
CDN Bundle (incl. Tracing) - uncompressed109.34 KB--
CDN Bundle (incl. Tracing, Replay) - uncompressed220.63 KB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed233.15 KB-0.01%-12 B 🔽
@sentry/nextjs (client)40.53 KB--
@sentry/sveltekit (client)37.44 KB--
@sentry/node143.23 KB--
@sentry/node - without tracing96.47 KB--
@sentry/aws-serverless120.77 KB--

View base workflow run

@ryan953ryan953 changed the title fix(feedback): Fix an issue where, if removeFromDom() is called it might throwfix(feedback): Prevent removeFromDom() from throwingApr 15, 2025
@ryan953
ryan953 merged commit b94062f into developMay 1, 2025
@ryan953
ryan953 deleted the ryan953/fix-feedback-throws branch May 1, 2025 00:12
aviator-appBot added a commit to reisene/HulajDusza-serwis that referenced this pull request May 30, 2025
![reisene](https://badgen.net/badge/icon/reisene/green?label=) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=reisene&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)
<h3>Snyk has created this PR to upgrade @sentry/browser from 9.10.0 to 9.17.0.</h3>
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
<hr/>
- The recommended version is **9 versions** ahead of your current version.
- The recommended version was released **22 days ago**.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>9.17.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.17.0">2025-05-08</a></br><ul>
<li>feat(node): Migrate to <code>@ fastify/otel</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15542" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/15542/hovercard">#15542</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>151.37 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.1</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.1">2025-05-07</a></br><ul>
<li>fix(core): Make sure logs get flushed in server-runtime-client (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16222" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16222/hovercard">#16222</a>)</li>
<li>ref(node): Remove vercel flushing code that does nothing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16217" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16217/hovercard">#16217</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.93 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.0">2025-05-07</a></br><h3>Important changes</h3>
<ul>
<li><strong>feat: Create a Vite plugin that injects sentryConfig into the global config (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16197" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16197/hovercard">#16197</a>)</strong></li>
</ul>
<p>Add a new plugin <code>makeConfigInjectorPlugin</code> within our existing vite plugin that updates the global vite config with sentry options</p>
<ul>
<li><strong>feat(browser): Add option to sample linked traces consistently (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16037/hovercard">#16037</a>)</strong></li>
</ul>
<p>This PR implements consistent sampling across traces as outlined in (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15754" data-hovercard-type="issue" data-hovercard-url="/getsentry/sentry-javascript/issues/15754/hovercard">#15754</a>)</p>
<ul>
<li><strong>feat(cloudflare): Add support for durable objects (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16180" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16180/hovercard">#16180</a>)</strong></li>
</ul>
<p>This PR introduces a new <code>instrumentDurableObjectWithSentry</code> method to the SDK, which instruments durable objects. We capture both traces and errors automatically.</p>
<ul>
<li><strong>feat(node): Add Prisma integration by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16073" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16073/hovercard">#16073</a>)</strong></li>
</ul>
<p><a href="https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/integrations/prisma/" rel="nofollow">Prisma integration</a> is enabled by default, it should work for both ESM and CJS.</p>
<ul>
<li><strong>feat(react-router): Add client-side router instrumentation (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16185" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16185/hovercard">#16185</a>)</strong></li>
</ul>
<p>Adds client-side instrumentation for react router's <code>HydratedRouter</code>. To enable it, simply replace <code>browserTracingIntegration()</code> with <code>reactRouterTracingIntegration()</code> in your client-side init call.</p>
<ul>
<li><strong>fix(node): Avoid double-wrapping http module (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16177" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16177/hovercard">#16177</a>)</strong></li>
</ul>
<p>When running your application in ESM mode, there have been scenarios that resulted in the <code>http</code>/<code>https</code> emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.</p>
<p>In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnostics<em>channel hooks to handle request isolation now.<br>
While this is generally not expected to break anything, there is one tiny change that _may</em> affect you if you have been relying on very specific functionality:</p>
<p>The <code>ignoreOutgoingRequests</code> option of <code>httpIntegration</code> receives the <code>RequestOptions</code> as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that <em>may</em> have existed before may no longer be set:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})"><pre><span class="pl-s1">ignoreOutgoingRequests</span><span class="pl-kos">(</span><span class="pl-s1">url</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">method</span>: <span class="pl-s1">string</span><span class="pl-kos">;</span>
protocol: <span class="pl-s1">string</span><span class="pl-kos">;</span>
host: <span class="pl-s1">string</span><span class="pl-kos">;</span>
hostname: <span class="pl-s1">string</span><span class="pl-kos">;</span> <span class="pl-c">// same as host</span>
path: <span class="pl-s1">string</span><span class="pl-kos">;</span>
headers: <span class="pl-v">OutgoingHttpHeaders</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3>Other changes</h3>
<ul>
<li>feat(cloudflare): Add logs exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16165" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16165/hovercard">#16165</a>)</li>
<li>feat(vercel-edge): Add logs export (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16166" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16166/hovercard">#16166</a>)</li>
<li>feat(cloudflare): Read <code>SENTRY_RELEASE</code> from <code>env</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16201" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16201/hovercard">#16201</a>)</li>
<li>feat(node): Drop <code>http.server</code> spans with 404 status by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16205" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16205/hovercard">#16205</a>)</li>
<li>fix(browser): Respect manually set sentry tracing headers in XHR requests (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16184" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16184/hovercard">#16184</a>)</li>
<li>fix(core): Respect manually set sentry tracing headers in fetch calls (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16183" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16183/hovercard">#16183</a>)</li>
<li>fix(feedback): Prevent <code>removeFromDom()</code> from throwing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16030" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16030/hovercard">#16030</a>)</li>
<li>fix(node): Use class constructor in docstring for winston transport (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16167" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16167/hovercard">#16167</a>)</li>
<li>fix(node): Fix vercel flushing logic &amp; add test for it (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16208" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16208/hovercard">#16208</a>)</li>
<li>fix(node): Fix 404 route handling in express 5 (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16211" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16211/hovercard">#16211</a>)</li>
<li>fix(logs): Ensure logs can be flushed correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16216" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16216/hovercard">#16216</a>)</li>
<li>ref(core): Switch to standardized log envelope (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16133" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16133/hovercard">#16133</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>144.43 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.3 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.66 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.15.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.15.0">2025-04-29</a></br><h3>Important Changes</h3>
<ul>
<li><strong>feat: Export <code>wrapMcpServerWithSentry</code> from server packages (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16127/hovercard">#16127</a>)</strong></li>
</ul>
<p>Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.</p>
<ul>
<li><strong>feat(core): Associate resource/tool/prompt invocations with request span instead of response span (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16126" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16126/hovercard">#16126</a>)</strong></li>
</ul>
<p>Adds a best effort mechanism to associate handler spans for <code>resource</code>, <code>tool</code> and <code>prompt</code> with the incoming message requests instead of the outgoing SSE response.</p>
<h3>Other Changes</h3>
<ul>
<li>fix: Vercel <code>ai</code> ESM patching (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16152" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16152/hovercard">#16152</a>)</li>
<li>fix(node): Update version range for <code>module.register</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16125" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16125/hovercard">#16125</a>)</li>
<li>fix(react-router): Spread <code>unstable_sentryVitePluginOptions</code> correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16156" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16156/hovercard">#16156</a>)</li>
<li>fix(react): Fix Redux integration failing with reducer injection (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16106/hovercard">#16106</a>)</li>
<li>fix(remix): Add ESM-compatible exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16124/hovercard">#16124</a>)</li>
<li>fix(remix): Avoid rewrapping root loader. (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16136" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16136/hovercard">#16136</a>)</li>
</ul>
<p>Work in this release was contributed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntoineDuComptoirDesPharmacies/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AntoineDuComptoirDesPharmacies">@ AntoineDuComptoirDesPharmacies</a>. Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.28 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>36.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>67.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>78.76 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.58 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.68 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.67 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.09 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>38.93 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.5 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>38.69 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.31 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.49 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>36.96 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.3 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.5 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>109.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>220.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>233.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.51 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.41 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.4 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.49 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.81 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.14.0</b> - 2025-04-23
</li>
<li>
<b>9.13.0</b> - 2025-04-16
</li>
<li>
<b>9.12.0</b> - 2025-04-08
</li>
<li>
<b>9.11.0</b> - 2025-04-03
</li>
<li>
<b>9.10.1</b> - 2025-03-28
</li>
<li>
<b>9.10.0</b> - 2025-03-27
</li>
</ul>
from <a href="https://redirect.github.com/getsentry/sentry-javascript/releases">@sentry/browser GitHub release notes</a>
</details>
</details>
---
> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - This PR was automatically created by Snyk using the credentials of a real user.
---
**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._
**For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJiMWMyNmNmNi03NzYxLTRkZDctYjM1Ni1jMWVmNGNhY2FiZmEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImIxYzI2Y2Y2LTc3NjEtNGRkNy1iMzU2LWMxZWY0Y2FjYWJmYSJ9fQ==" width="0" height="0"/>
> - 🧐 [View latest project report](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template)
> - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?pkg&#x3D;@sentry/browser&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)
[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"@sentry/browser","from":"9.10.0","to":"9.17.0"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","prPublicId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","packageManager":"npm","priorityScoreList":[],"projectPublicId":"3b48baaa-833b-4239-b348-16091472ee83","projectUrl":"https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":9,"publishedDate":"2025-05-08T12:44:52.593Z"},"vulns":[]}'
## Podsumowanie od Sourcery
Prace porządkowe:
- Aktualizacja @sentry/browser z wersji 9.10.0 do 9.17.0 w zależnościach i pliku blokady (lockfile)
<details>
<summary>Original summary in English</summary>
## Summary by Sourcery
Chores:
- Bump @sentry/browser from 9.10.0 to 9.17.0 in dependencies and lockfile
</details>
Co-authored-by: Snyk bot <19733683+snyk-bot@users.noreply.github.com>
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.

User Feedback causes page to crash?

3 participants

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

fix(feedback): Prevent removeFromDom() from throwing - #16030

Merged
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws
May 1, 2025
Merged

fix(feedback): Prevent removeFromDom() from throwing#16030
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws

Conversation

@ryan953

@ryan953ryan953 commented Apr 10, 2025

Copy link
Copy Markdown
Member

An internal user reported seeing "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the replay of their session confirms it: https://sentry.sentry.io/explore/replays/127444034ae84099a84b524458b6dd90/

However, there is no matching JS error to give more clues.

What I think happened is that after interacting with the Feedback SDK the widget got into a state where it was no longer mounted into the page, but we called removeFromDom() anyway.

Looking at the replay i saw the moment when the feedback dom was aded to the page, but it wasn't visible, only this got added at 18:51:
SCR-20250411-lsav

So something prevented it from opening all the way up.

Fixesgetsentry/sentry#89424

@ryan953
ryan953 requested a review from a team as a code ownerApril 10, 2025 22:10
@codecov

codecovBot commented Apr 10, 2025

Copy link
Copy Markdown

❌ We are unable to process any of the uploaded JUnit XML files. Please ensure your files are in the right format.

logger.error(
'[Feedback] Error when trying to remove Actor from the DOM. It is not appended to the DOM yet!',
);
throw new Error('[Feedback] Actor is not appended to DOM, nothing to remove.');

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.

Why do you want to throw this one here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

turns out el.remove() doesn't even throw if there's no parent element. unlike parent.removeChild(child).

So now if people call removeFromDom() we'll basically guarantee that the elements will be removed, and there'll be no errors thrown.

Similar to the appendToDom() call, SDK users can't really tell what state things are currently in, but they can call methods to put things into the state you want to be in.

@ryan953
ryan953 marked this pull request as draft April 11, 2025 15:24
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 7a904c7 to 18c9875CompareApril 14, 2025 20:42
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 96483aa to 0463304CompareApril 14, 2025 21:00
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 0463304 to b85449bCompareApril 14, 2025 21:02
@ryan953
ryan953 marked this pull request as ready for review April 14, 2025 21:05
@ryan953
ryan953 requested review from a team and chargomeApril 14, 2025 21:05
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.28 KB--
@sentry/browser - with treeshaking flags23.12 KB--
@sentry/browser (incl. Tracing)36.99 KB--
@sentry/browser (incl. Tracing, Replay)74.17 KB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.55 KB--
@sentry/browser (incl. Tracing, Replay with Canvas)78.83 KB--
@sentry/browser (incl. Tracing, Replay, Feedback)90.65 KB-0.01%-8 B 🔽
@sentry/browser (incl. Feedback)39.67 KB-0.03%-10 B 🔽
@sentry/browser (incl. sendFeedback)27.9 KB--
@sentry/browser (incl. FeedbackAsync)32.67 KB-0.02%-5 B 🔽
@sentry/react25.09 KB--
@sentry/react (incl. Tracing)38.91 KB--
@sentry/vue27.51 KB--
@sentry/vue (incl. Tracing)38.71 KB--
@sentry/svelte23.32 KB--
CDN Bundle24.51 KB--
CDN Bundle (incl. Tracing)36.98 KB--
CDN Bundle (incl. Tracing, Replay)72.03 KB--
CDN Bundle (incl. Tracing, Replay, Feedback)77.17 KB-0.01%-6 B 🔽
CDN Bundle - uncompressed71.47 KB--
CDN Bundle (incl. Tracing) - uncompressed109.34 KB--
CDN Bundle (incl. Tracing, Replay) - uncompressed220.63 KB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed233.15 KB-0.01%-12 B 🔽
@sentry/nextjs (client)40.53 KB--
@sentry/sveltekit (client)37.44 KB--
@sentry/node143.23 KB--
@sentry/node - without tracing96.47 KB--
@sentry/aws-serverless120.77 KB--

View base workflow run

@ryan953ryan953 changed the title fix(feedback): Fix an issue where, if removeFromDom() is called it might throwfix(feedback): Prevent removeFromDom() from throwingApr 15, 2025
@ryan953
ryan953 merged commit b94062f into developMay 1, 2025
@ryan953
ryan953 deleted the ryan953/fix-feedback-throws branch May 1, 2025 00:12
aviator-appBot added a commit to reisene/HulajDusza-serwis that referenced this pull request May 30, 2025
![reisene](https://badgen.net/badge/icon/reisene/green?label=) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=reisene&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)
<h3>Snyk has created this PR to upgrade @sentry/browser from 9.10.0 to 9.17.0.</h3>
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
<hr/>
- The recommended version is **9 versions** ahead of your current version.
- The recommended version was released **22 days ago**.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>9.17.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.17.0">2025-05-08</a></br><ul>
<li>feat(node): Migrate to <code>@ fastify/otel</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15542" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/15542/hovercard">#15542</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>151.37 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.1</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.1">2025-05-07</a></br><ul>
<li>fix(core): Make sure logs get flushed in server-runtime-client (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16222" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16222/hovercard">#16222</a>)</li>
<li>ref(node): Remove vercel flushing code that does nothing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16217" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16217/hovercard">#16217</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.93 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.0">2025-05-07</a></br><h3>Important changes</h3>
<ul>
<li><strong>feat: Create a Vite plugin that injects sentryConfig into the global config (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16197" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16197/hovercard">#16197</a>)</strong></li>
</ul>
<p>Add a new plugin <code>makeConfigInjectorPlugin</code> within our existing vite plugin that updates the global vite config with sentry options</p>
<ul>
<li><strong>feat(browser): Add option to sample linked traces consistently (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16037/hovercard">#16037</a>)</strong></li>
</ul>
<p>This PR implements consistent sampling across traces as outlined in (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15754" data-hovercard-type="issue" data-hovercard-url="/getsentry/sentry-javascript/issues/15754/hovercard">#15754</a>)</p>
<ul>
<li><strong>feat(cloudflare): Add support for durable objects (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16180" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16180/hovercard">#16180</a>)</strong></li>
</ul>
<p>This PR introduces a new <code>instrumentDurableObjectWithSentry</code> method to the SDK, which instruments durable objects. We capture both traces and errors automatically.</p>
<ul>
<li><strong>feat(node): Add Prisma integration by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16073" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16073/hovercard">#16073</a>)</strong></li>
</ul>
<p><a href="https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/integrations/prisma/" rel="nofollow">Prisma integration</a> is enabled by default, it should work for both ESM and CJS.</p>
<ul>
<li><strong>feat(react-router): Add client-side router instrumentation (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16185" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16185/hovercard">#16185</a>)</strong></li>
</ul>
<p>Adds client-side instrumentation for react router's <code>HydratedRouter</code>. To enable it, simply replace <code>browserTracingIntegration()</code> with <code>reactRouterTracingIntegration()</code> in your client-side init call.</p>
<ul>
<li><strong>fix(node): Avoid double-wrapping http module (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16177" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16177/hovercard">#16177</a>)</strong></li>
</ul>
<p>When running your application in ESM mode, there have been scenarios that resulted in the <code>http</code>/<code>https</code> emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.</p>
<p>In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnostics<em>channel hooks to handle request isolation now.<br>
While this is generally not expected to break anything, there is one tiny change that _may</em> affect you if you have been relying on very specific functionality:</p>
<p>The <code>ignoreOutgoingRequests</code> option of <code>httpIntegration</code> receives the <code>RequestOptions</code> as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that <em>may</em> have existed before may no longer be set:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})"><pre><span class="pl-s1">ignoreOutgoingRequests</span><span class="pl-kos">(</span><span class="pl-s1">url</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">method</span>: <span class="pl-s1">string</span><span class="pl-kos">;</span>
protocol: <span class="pl-s1">string</span><span class="pl-kos">;</span>
host: <span class="pl-s1">string</span><span class="pl-kos">;</span>
hostname: <span class="pl-s1">string</span><span class="pl-kos">;</span> <span class="pl-c">// same as host</span>
path: <span class="pl-s1">string</span><span class="pl-kos">;</span>
headers: <span class="pl-v">OutgoingHttpHeaders</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3>Other changes</h3>
<ul>
<li>feat(cloudflare): Add logs exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16165" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16165/hovercard">#16165</a>)</li>
<li>feat(vercel-edge): Add logs export (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16166" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16166/hovercard">#16166</a>)</li>
<li>feat(cloudflare): Read <code>SENTRY_RELEASE</code> from <code>env</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16201" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16201/hovercard">#16201</a>)</li>
<li>feat(node): Drop <code>http.server</code> spans with 404 status by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16205" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16205/hovercard">#16205</a>)</li>
<li>fix(browser): Respect manually set sentry tracing headers in XHR requests (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16184" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16184/hovercard">#16184</a>)</li>
<li>fix(core): Respect manually set sentry tracing headers in fetch calls (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16183" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16183/hovercard">#16183</a>)</li>
<li>fix(feedback): Prevent <code>removeFromDom()</code> from throwing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16030" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16030/hovercard">#16030</a>)</li>
<li>fix(node): Use class constructor in docstring for winston transport (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16167" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16167/hovercard">#16167</a>)</li>
<li>fix(node): Fix vercel flushing logic &amp; add test for it (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16208" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16208/hovercard">#16208</a>)</li>
<li>fix(node): Fix 404 route handling in express 5 (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16211" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16211/hovercard">#16211</a>)</li>
<li>fix(logs): Ensure logs can be flushed correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16216" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16216/hovercard">#16216</a>)</li>
<li>ref(core): Switch to standardized log envelope (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16133" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16133/hovercard">#16133</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>144.43 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.3 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.66 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.15.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.15.0">2025-04-29</a></br><h3>Important Changes</h3>
<ul>
<li><strong>feat: Export <code>wrapMcpServerWithSentry</code> from server packages (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16127/hovercard">#16127</a>)</strong></li>
</ul>
<p>Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.</p>
<ul>
<li><strong>feat(core): Associate resource/tool/prompt invocations with request span instead of response span (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16126" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16126/hovercard">#16126</a>)</strong></li>
</ul>
<p>Adds a best effort mechanism to associate handler spans for <code>resource</code>, <code>tool</code> and <code>prompt</code> with the incoming message requests instead of the outgoing SSE response.</p>
<h3>Other Changes</h3>
<ul>
<li>fix: Vercel <code>ai</code> ESM patching (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16152" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16152/hovercard">#16152</a>)</li>
<li>fix(node): Update version range for <code>module.register</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16125" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16125/hovercard">#16125</a>)</li>
<li>fix(react-router): Spread <code>unstable_sentryVitePluginOptions</code> correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16156" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16156/hovercard">#16156</a>)</li>
<li>fix(react): Fix Redux integration failing with reducer injection (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16106/hovercard">#16106</a>)</li>
<li>fix(remix): Add ESM-compatible exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16124/hovercard">#16124</a>)</li>
<li>fix(remix): Avoid rewrapping root loader. (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16136" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16136/hovercard">#16136</a>)</li>
</ul>
<p>Work in this release was contributed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntoineDuComptoirDesPharmacies/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AntoineDuComptoirDesPharmacies">@ AntoineDuComptoirDesPharmacies</a>. Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.28 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>36.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>67.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>78.76 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.58 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.68 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.67 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.09 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>38.93 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.5 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>38.69 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.31 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.49 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>36.96 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.3 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.5 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>109.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>220.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>233.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.51 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.41 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.4 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.49 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.81 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.14.0</b> - 2025-04-23
</li>
<li>
<b>9.13.0</b> - 2025-04-16
</li>
<li>
<b>9.12.0</b> - 2025-04-08
</li>
<li>
<b>9.11.0</b> - 2025-04-03
</li>
<li>
<b>9.10.1</b> - 2025-03-28
</li>
<li>
<b>9.10.0</b> - 2025-03-27
</li>
</ul>
from <a href="https://redirect.github.com/getsentry/sentry-javascript/releases">@sentry/browser GitHub release notes</a>
</details>
</details>
---
> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - This PR was automatically created by Snyk using the credentials of a real user.
---
**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._
**For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJiMWMyNmNmNi03NzYxLTRkZDctYjM1Ni1jMWVmNGNhY2FiZmEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImIxYzI2Y2Y2LTc3NjEtNGRkNy1iMzU2LWMxZWY0Y2FjYWJmYSJ9fQ==" width="0" height="0"/>
> - 🧐 [View latest project report](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template)
> - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?pkg&#x3D;@sentry/browser&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)
[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"@sentry/browser","from":"9.10.0","to":"9.17.0"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","prPublicId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","packageManager":"npm","priorityScoreList":[],"projectPublicId":"3b48baaa-833b-4239-b348-16091472ee83","projectUrl":"https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":9,"publishedDate":"2025-05-08T12:44:52.593Z"},"vulns":[]}'
## Podsumowanie od Sourcery
Prace porządkowe:
- Aktualizacja @sentry/browser z wersji 9.10.0 do 9.17.0 w zależnościach i pliku blokady (lockfile)
<details>
<summary>Original summary in English</summary>
## Summary by Sourcery
Chores:
- Bump @sentry/browser from 9.10.0 to 9.17.0 in dependencies and lockfile
</details>
Co-authored-by: Snyk bot <19733683+snyk-bot@users.noreply.github.com>
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.

User Feedback causes page to crash?

3 participants

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

fix(feedback): Prevent removeFromDom() from throwing - #16030

Merged
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws
May 1, 2025
Merged

fix(feedback): Prevent removeFromDom() from throwing#16030
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws

Conversation

@ryan953

@ryan953ryan953 commented Apr 10, 2025

Copy link
Copy Markdown
Member

An internal user reported seeing "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the replay of their session confirms it: https://sentry.sentry.io/explore/replays/127444034ae84099a84b524458b6dd90/

However, there is no matching JS error to give more clues.

What I think happened is that after interacting with the Feedback SDK the widget got into a state where it was no longer mounted into the page, but we called removeFromDom() anyway.

Looking at the replay i saw the moment when the feedback dom was aded to the page, but it wasn't visible, only this got added at 18:51:
SCR-20250411-lsav

So something prevented it from opening all the way up.

Fixesgetsentry/sentry#89424

@ryan953
ryan953 requested a review from a team as a code ownerApril 10, 2025 22:10
@codecov

codecovBot commented Apr 10, 2025

Copy link
Copy Markdown

❌ We are unable to process any of the uploaded JUnit XML files. Please ensure your files are in the right format.

logger.error(
'[Feedback] Error when trying to remove Actor from the DOM. It is not appended to the DOM yet!',
);
throw new Error('[Feedback] Actor is not appended to DOM, nothing to remove.');

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.

Why do you want to throw this one here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

turns out el.remove() doesn't even throw if there's no parent element. unlike parent.removeChild(child).

So now if people call removeFromDom() we'll basically guarantee that the elements will be removed, and there'll be no errors thrown.

Similar to the appendToDom() call, SDK users can't really tell what state things are currently in, but they can call methods to put things into the state you want to be in.

@ryan953
ryan953 marked this pull request as draft April 11, 2025 15:24
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 7a904c7 to 18c9875CompareApril 14, 2025 20:42
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 96483aa to 0463304CompareApril 14, 2025 21:00
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 0463304 to b85449bCompareApril 14, 2025 21:02
@ryan953
ryan953 marked this pull request as ready for review April 14, 2025 21:05
@ryan953
ryan953 requested review from a team and chargomeApril 14, 2025 21:05
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.28 KB--
@sentry/browser - with treeshaking flags23.12 KB--
@sentry/browser (incl. Tracing)36.99 KB--
@sentry/browser (incl. Tracing, Replay)74.17 KB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.55 KB--
@sentry/browser (incl. Tracing, Replay with Canvas)78.83 KB--
@sentry/browser (incl. Tracing, Replay, Feedback)90.65 KB-0.01%-8 B 🔽
@sentry/browser (incl. Feedback)39.67 KB-0.03%-10 B 🔽
@sentry/browser (incl. sendFeedback)27.9 KB--
@sentry/browser (incl. FeedbackAsync)32.67 KB-0.02%-5 B 🔽
@sentry/react25.09 KB--
@sentry/react (incl. Tracing)38.91 KB--
@sentry/vue27.51 KB--
@sentry/vue (incl. Tracing)38.71 KB--
@sentry/svelte23.32 KB--
CDN Bundle24.51 KB--
CDN Bundle (incl. Tracing)36.98 KB--
CDN Bundle (incl. Tracing, Replay)72.03 KB--
CDN Bundle (incl. Tracing, Replay, Feedback)77.17 KB-0.01%-6 B 🔽
CDN Bundle - uncompressed71.47 KB--
CDN Bundle (incl. Tracing) - uncompressed109.34 KB--
CDN Bundle (incl. Tracing, Replay) - uncompressed220.63 KB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed233.15 KB-0.01%-12 B 🔽
@sentry/nextjs (client)40.53 KB--
@sentry/sveltekit (client)37.44 KB--
@sentry/node143.23 KB--
@sentry/node - without tracing96.47 KB--
@sentry/aws-serverless120.77 KB--

View base workflow run

@ryan953ryan953 changed the title fix(feedback): Fix an issue where, if removeFromDom() is called it might throwfix(feedback): Prevent removeFromDom() from throwingApr 15, 2025
@ryan953
ryan953 merged commit b94062f into developMay 1, 2025
@ryan953
ryan953 deleted the ryan953/fix-feedback-throws branch May 1, 2025 00:12
aviator-appBot added a commit to reisene/HulajDusza-serwis that referenced this pull request May 30, 2025
![reisene](https://badgen.net/badge/icon/reisene/green?label=) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=reisene&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)
<h3>Snyk has created this PR to upgrade @sentry/browser from 9.10.0 to 9.17.0.</h3>
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
<hr/>
- The recommended version is **9 versions** ahead of your current version.
- The recommended version was released **22 days ago**.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>9.17.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.17.0">2025-05-08</a></br><ul>
<li>feat(node): Migrate to <code>@ fastify/otel</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15542" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/15542/hovercard">#15542</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>151.37 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.1</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.1">2025-05-07</a></br><ul>
<li>fix(core): Make sure logs get flushed in server-runtime-client (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16222" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16222/hovercard">#16222</a>)</li>
<li>ref(node): Remove vercel flushing code that does nothing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16217" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16217/hovercard">#16217</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.93 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.0">2025-05-07</a></br><h3>Important changes</h3>
<ul>
<li><strong>feat: Create a Vite plugin that injects sentryConfig into the global config (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16197" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16197/hovercard">#16197</a>)</strong></li>
</ul>
<p>Add a new plugin <code>makeConfigInjectorPlugin</code> within our existing vite plugin that updates the global vite config with sentry options</p>
<ul>
<li><strong>feat(browser): Add option to sample linked traces consistently (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16037/hovercard">#16037</a>)</strong></li>
</ul>
<p>This PR implements consistent sampling across traces as outlined in (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15754" data-hovercard-type="issue" data-hovercard-url="/getsentry/sentry-javascript/issues/15754/hovercard">#15754</a>)</p>
<ul>
<li><strong>feat(cloudflare): Add support for durable objects (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16180" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16180/hovercard">#16180</a>)</strong></li>
</ul>
<p>This PR introduces a new <code>instrumentDurableObjectWithSentry</code> method to the SDK, which instruments durable objects. We capture both traces and errors automatically.</p>
<ul>
<li><strong>feat(node): Add Prisma integration by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16073" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16073/hovercard">#16073</a>)</strong></li>
</ul>
<p><a href="https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/integrations/prisma/" rel="nofollow">Prisma integration</a> is enabled by default, it should work for both ESM and CJS.</p>
<ul>
<li><strong>feat(react-router): Add client-side router instrumentation (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16185" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16185/hovercard">#16185</a>)</strong></li>
</ul>
<p>Adds client-side instrumentation for react router's <code>HydratedRouter</code>. To enable it, simply replace <code>browserTracingIntegration()</code> with <code>reactRouterTracingIntegration()</code> in your client-side init call.</p>
<ul>
<li><strong>fix(node): Avoid double-wrapping http module (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16177" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16177/hovercard">#16177</a>)</strong></li>
</ul>
<p>When running your application in ESM mode, there have been scenarios that resulted in the <code>http</code>/<code>https</code> emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.</p>
<p>In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnostics<em>channel hooks to handle request isolation now.<br>
While this is generally not expected to break anything, there is one tiny change that _may</em> affect you if you have been relying on very specific functionality:</p>
<p>The <code>ignoreOutgoingRequests</code> option of <code>httpIntegration</code> receives the <code>RequestOptions</code> as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that <em>may</em> have existed before may no longer be set:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})"><pre><span class="pl-s1">ignoreOutgoingRequests</span><span class="pl-kos">(</span><span class="pl-s1">url</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">method</span>: <span class="pl-s1">string</span><span class="pl-kos">;</span>
protocol: <span class="pl-s1">string</span><span class="pl-kos">;</span>
host: <span class="pl-s1">string</span><span class="pl-kos">;</span>
hostname: <span class="pl-s1">string</span><span class="pl-kos">;</span> <span class="pl-c">// same as host</span>
path: <span class="pl-s1">string</span><span class="pl-kos">;</span>
headers: <span class="pl-v">OutgoingHttpHeaders</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3>Other changes</h3>
<ul>
<li>feat(cloudflare): Add logs exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16165" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16165/hovercard">#16165</a>)</li>
<li>feat(vercel-edge): Add logs export (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16166" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16166/hovercard">#16166</a>)</li>
<li>feat(cloudflare): Read <code>SENTRY_RELEASE</code> from <code>env</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16201" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16201/hovercard">#16201</a>)</li>
<li>feat(node): Drop <code>http.server</code> spans with 404 status by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16205" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16205/hovercard">#16205</a>)</li>
<li>fix(browser): Respect manually set sentry tracing headers in XHR requests (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16184" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16184/hovercard">#16184</a>)</li>
<li>fix(core): Respect manually set sentry tracing headers in fetch calls (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16183" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16183/hovercard">#16183</a>)</li>
<li>fix(feedback): Prevent <code>removeFromDom()</code> from throwing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16030" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16030/hovercard">#16030</a>)</li>
<li>fix(node): Use class constructor in docstring for winston transport (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16167" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16167/hovercard">#16167</a>)</li>
<li>fix(node): Fix vercel flushing logic &amp; add test for it (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16208" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16208/hovercard">#16208</a>)</li>
<li>fix(node): Fix 404 route handling in express 5 (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16211" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16211/hovercard">#16211</a>)</li>
<li>fix(logs): Ensure logs can be flushed correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16216" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16216/hovercard">#16216</a>)</li>
<li>ref(core): Switch to standardized log envelope (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16133" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16133/hovercard">#16133</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>144.43 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.3 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.66 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.15.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.15.0">2025-04-29</a></br><h3>Important Changes</h3>
<ul>
<li><strong>feat: Export <code>wrapMcpServerWithSentry</code> from server packages (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16127/hovercard">#16127</a>)</strong></li>
</ul>
<p>Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.</p>
<ul>
<li><strong>feat(core): Associate resource/tool/prompt invocations with request span instead of response span (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16126" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16126/hovercard">#16126</a>)</strong></li>
</ul>
<p>Adds a best effort mechanism to associate handler spans for <code>resource</code>, <code>tool</code> and <code>prompt</code> with the incoming message requests instead of the outgoing SSE response.</p>
<h3>Other Changes</h3>
<ul>
<li>fix: Vercel <code>ai</code> ESM patching (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16152" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16152/hovercard">#16152</a>)</li>
<li>fix(node): Update version range for <code>module.register</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16125" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16125/hovercard">#16125</a>)</li>
<li>fix(react-router): Spread <code>unstable_sentryVitePluginOptions</code> correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16156" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16156/hovercard">#16156</a>)</li>
<li>fix(react): Fix Redux integration failing with reducer injection (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16106/hovercard">#16106</a>)</li>
<li>fix(remix): Add ESM-compatible exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16124/hovercard">#16124</a>)</li>
<li>fix(remix): Avoid rewrapping root loader. (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16136" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16136/hovercard">#16136</a>)</li>
</ul>
<p>Work in this release was contributed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntoineDuComptoirDesPharmacies/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AntoineDuComptoirDesPharmacies">@ AntoineDuComptoirDesPharmacies</a>. Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.28 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>36.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>67.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>78.76 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.58 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.68 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.67 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.09 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>38.93 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.5 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>38.69 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.31 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.49 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>36.96 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.3 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.5 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>109.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>220.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>233.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.51 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.41 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.4 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.49 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.81 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.14.0</b> - 2025-04-23
</li>
<li>
<b>9.13.0</b> - 2025-04-16
</li>
<li>
<b>9.12.0</b> - 2025-04-08
</li>
<li>
<b>9.11.0</b> - 2025-04-03
</li>
<li>
<b>9.10.1</b> - 2025-03-28
</li>
<li>
<b>9.10.0</b> - 2025-03-27
</li>
</ul>
from <a href="https://redirect.github.com/getsentry/sentry-javascript/releases">@sentry/browser GitHub release notes</a>
</details>
</details>
---
> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - This PR was automatically created by Snyk using the credentials of a real user.
---
**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._
**For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJiMWMyNmNmNi03NzYxLTRkZDctYjM1Ni1jMWVmNGNhY2FiZmEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImIxYzI2Y2Y2LTc3NjEtNGRkNy1iMzU2LWMxZWY0Y2FjYWJmYSJ9fQ==" width="0" height="0"/>
> - 🧐 [View latest project report](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template)
> - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?pkg&#x3D;@sentry/browser&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)
[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"@sentry/browser","from":"9.10.0","to":"9.17.0"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","prPublicId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","packageManager":"npm","priorityScoreList":[],"projectPublicId":"3b48baaa-833b-4239-b348-16091472ee83","projectUrl":"https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":9,"publishedDate":"2025-05-08T12:44:52.593Z"},"vulns":[]}'
## Podsumowanie od Sourcery
Prace porządkowe:
- Aktualizacja @sentry/browser z wersji 9.10.0 do 9.17.0 w zależnościach i pliku blokady (lockfile)
<details>
<summary>Original summary in English</summary>
## Summary by Sourcery
Chores:
- Bump @sentry/browser from 9.10.0 to 9.17.0 in dependencies and lockfile
</details>
Co-authored-by: Snyk bot <19733683+snyk-bot@users.noreply.github.com>
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.

User Feedback causes page to crash?

3 participants

@ryan953@mydea@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(feedback): Prevent `removeFromDom()` from throwing by ryan953 · Pull Request #16030 · getsentry/sentry-javascript · GitHub
Skip to content

fix(feedback): Prevent removeFromDom() from throwing - #16030

Merged
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws
May 1, 2025
Merged

fix(feedback): Prevent removeFromDom() from throwing#16030
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws

Conversation

@ryan953

@ryan953ryan953 commented Apr 10, 2025

Copy link
Copy Markdown
Member

An internal user reported seeing "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the replay of their session confirms it: https://sentry.sentry.io/explore/replays/127444034ae84099a84b524458b6dd90/

However, there is no matching JS error to give more clues.

What I think happened is that after interacting with the Feedback SDK the widget got into a state where it was no longer mounted into the page, but we called removeFromDom() anyway.

Looking at the replay i saw the moment when the feedback dom was aded to the page, but it wasn't visible, only this got added at 18:51:
SCR-20250411-lsav

So something prevented it from opening all the way up.

Fixesgetsentry/sentry#89424

@ryan953
ryan953 requested a review from a team as a code ownerApril 10, 2025 22:10
@codecov

codecovBot commented Apr 10, 2025

Copy link
Copy Markdown

❌ We are unable to process any of the uploaded JUnit XML files. Please ensure your files are in the right format.

logger.error(
'[Feedback] Error when trying to remove Actor from the DOM. It is not appended to the DOM yet!',
);
throw new Error('[Feedback] Actor is not appended to DOM, nothing to remove.');

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.

Why do you want to throw this one here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

turns out el.remove() doesn't even throw if there's no parent element. unlike parent.removeChild(child).

So now if people call removeFromDom() we'll basically guarantee that the elements will be removed, and there'll be no errors thrown.

Similar to the appendToDom() call, SDK users can't really tell what state things are currently in, but they can call methods to put things into the state you want to be in.

@ryan953
ryan953 marked this pull request as draft April 11, 2025 15:24
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 7a904c7 to 18c9875CompareApril 14, 2025 20:42
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 96483aa to 0463304CompareApril 14, 2025 21:00
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 0463304 to b85449bCompareApril 14, 2025 21:02
@ryan953
ryan953 marked this pull request as ready for review April 14, 2025 21:05
@ryan953
ryan953 requested review from a team and chargomeApril 14, 2025 21:05
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.28 KB--
@sentry/browser - with treeshaking flags23.12 KB--
@sentry/browser (incl. Tracing)36.99 KB--
@sentry/browser (incl. Tracing, Replay)74.17 KB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.55 KB--
@sentry/browser (incl. Tracing, Replay with Canvas)78.83 KB--
@sentry/browser (incl. Tracing, Replay, Feedback)90.65 KB-0.01%-8 B 🔽
@sentry/browser (incl. Feedback)39.67 KB-0.03%-10 B 🔽
@sentry/browser (incl. sendFeedback)27.9 KB--
@sentry/browser (incl. FeedbackAsync)32.67 KB-0.02%-5 B 🔽
@sentry/react25.09 KB--
@sentry/react (incl. Tracing)38.91 KB--
@sentry/vue27.51 KB--
@sentry/vue (incl. Tracing)38.71 KB--
@sentry/svelte23.32 KB--
CDN Bundle24.51 KB--
CDN Bundle (incl. Tracing)36.98 KB--
CDN Bundle (incl. Tracing, Replay)72.03 KB--
CDN Bundle (incl. Tracing, Replay, Feedback)77.17 KB-0.01%-6 B 🔽
CDN Bundle - uncompressed71.47 KB--
CDN Bundle (incl. Tracing) - uncompressed109.34 KB--
CDN Bundle (incl. Tracing, Replay) - uncompressed220.63 KB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed233.15 KB-0.01%-12 B 🔽
@sentry/nextjs (client)40.53 KB--
@sentry/sveltekit (client)37.44 KB--
@sentry/node143.23 KB--
@sentry/node - without tracing96.47 KB--
@sentry/aws-serverless120.77 KB--

View base workflow run

@ryan953ryan953 changed the title fix(feedback): Fix an issue where, if removeFromDom() is called it might throwfix(feedback): Prevent removeFromDom() from throwingApr 15, 2025
@ryan953
ryan953 merged commit b94062f into developMay 1, 2025
@ryan953
ryan953 deleted the ryan953/fix-feedback-throws branch May 1, 2025 00:12
aviator-appBot added a commit to reisene/HulajDusza-serwis that referenced this pull request May 30, 2025
![reisene](https://badgen.net/badge/icon/reisene/green?label=) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=reisene&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)
<h3>Snyk has created this PR to upgrade @sentry/browser from 9.10.0 to 9.17.0.</h3>
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
<hr/>
- The recommended version is **9 versions** ahead of your current version.
- The recommended version was released **22 days ago**.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>9.17.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.17.0">2025-05-08</a></br><ul>
<li>feat(node): Migrate to <code>@ fastify/otel</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15542" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/15542/hovercard">#15542</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>151.37 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.1</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.1">2025-05-07</a></br><ul>
<li>fix(core): Make sure logs get flushed in server-runtime-client (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16222" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16222/hovercard">#16222</a>)</li>
<li>ref(node): Remove vercel flushing code that does nothing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16217" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16217/hovercard">#16217</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.93 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.0">2025-05-07</a></br><h3>Important changes</h3>
<ul>
<li><strong>feat: Create a Vite plugin that injects sentryConfig into the global config (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16197" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16197/hovercard">#16197</a>)</strong></li>
</ul>
<p>Add a new plugin <code>makeConfigInjectorPlugin</code> within our existing vite plugin that updates the global vite config with sentry options</p>
<ul>
<li><strong>feat(browser): Add option to sample linked traces consistently (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16037/hovercard">#16037</a>)</strong></li>
</ul>
<p>This PR implements consistent sampling across traces as outlined in (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15754" data-hovercard-type="issue" data-hovercard-url="/getsentry/sentry-javascript/issues/15754/hovercard">#15754</a>)</p>
<ul>
<li><strong>feat(cloudflare): Add support for durable objects (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16180" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16180/hovercard">#16180</a>)</strong></li>
</ul>
<p>This PR introduces a new <code>instrumentDurableObjectWithSentry</code> method to the SDK, which instruments durable objects. We capture both traces and errors automatically.</p>
<ul>
<li><strong>feat(node): Add Prisma integration by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16073" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16073/hovercard">#16073</a>)</strong></li>
</ul>
<p><a href="https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/integrations/prisma/" rel="nofollow">Prisma integration</a> is enabled by default, it should work for both ESM and CJS.</p>
<ul>
<li><strong>feat(react-router): Add client-side router instrumentation (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16185" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16185/hovercard">#16185</a>)</strong></li>
</ul>
<p>Adds client-side instrumentation for react router's <code>HydratedRouter</code>. To enable it, simply replace <code>browserTracingIntegration()</code> with <code>reactRouterTracingIntegration()</code> in your client-side init call.</p>
<ul>
<li><strong>fix(node): Avoid double-wrapping http module (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16177" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16177/hovercard">#16177</a>)</strong></li>
</ul>
<p>When running your application in ESM mode, there have been scenarios that resulted in the <code>http</code>/<code>https</code> emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.</p>
<p>In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnostics<em>channel hooks to handle request isolation now.<br>
While this is generally not expected to break anything, there is one tiny change that _may</em> affect you if you have been relying on very specific functionality:</p>
<p>The <code>ignoreOutgoingRequests</code> option of <code>httpIntegration</code> receives the <code>RequestOptions</code> as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that <em>may</em> have existed before may no longer be set:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})"><pre><span class="pl-s1">ignoreOutgoingRequests</span><span class="pl-kos">(</span><span class="pl-s1">url</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">method</span>: <span class="pl-s1">string</span><span class="pl-kos">;</span>
protocol: <span class="pl-s1">string</span><span class="pl-kos">;</span>
host: <span class="pl-s1">string</span><span class="pl-kos">;</span>
hostname: <span class="pl-s1">string</span><span class="pl-kos">;</span> <span class="pl-c">// same as host</span>
path: <span class="pl-s1">string</span><span class="pl-kos">;</span>
headers: <span class="pl-v">OutgoingHttpHeaders</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3>Other changes</h3>
<ul>
<li>feat(cloudflare): Add logs exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16165" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16165/hovercard">#16165</a>)</li>
<li>feat(vercel-edge): Add logs export (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16166" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16166/hovercard">#16166</a>)</li>
<li>feat(cloudflare): Read <code>SENTRY_RELEASE</code> from <code>env</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16201" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16201/hovercard">#16201</a>)</li>
<li>feat(node): Drop <code>http.server</code> spans with 404 status by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16205" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16205/hovercard">#16205</a>)</li>
<li>fix(browser): Respect manually set sentry tracing headers in XHR requests (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16184" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16184/hovercard">#16184</a>)</li>
<li>fix(core): Respect manually set sentry tracing headers in fetch calls (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16183" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16183/hovercard">#16183</a>)</li>
<li>fix(feedback): Prevent <code>removeFromDom()</code> from throwing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16030" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16030/hovercard">#16030</a>)</li>
<li>fix(node): Use class constructor in docstring for winston transport (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16167" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16167/hovercard">#16167</a>)</li>
<li>fix(node): Fix vercel flushing logic &amp; add test for it (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16208" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16208/hovercard">#16208</a>)</li>
<li>fix(node): Fix 404 route handling in express 5 (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16211" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16211/hovercard">#16211</a>)</li>
<li>fix(logs): Ensure logs can be flushed correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16216" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16216/hovercard">#16216</a>)</li>
<li>ref(core): Switch to standardized log envelope (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16133" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16133/hovercard">#16133</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>144.43 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.3 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.66 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.15.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.15.0">2025-04-29</a></br><h3>Important Changes</h3>
<ul>
<li><strong>feat: Export <code>wrapMcpServerWithSentry</code> from server packages (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16127/hovercard">#16127</a>)</strong></li>
</ul>
<p>Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.</p>
<ul>
<li><strong>feat(core): Associate resource/tool/prompt invocations with request span instead of response span (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16126" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16126/hovercard">#16126</a>)</strong></li>
</ul>
<p>Adds a best effort mechanism to associate handler spans for <code>resource</code>, <code>tool</code> and <code>prompt</code> with the incoming message requests instead of the outgoing SSE response.</p>
<h3>Other Changes</h3>
<ul>
<li>fix: Vercel <code>ai</code> ESM patching (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16152" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16152/hovercard">#16152</a>)</li>
<li>fix(node): Update version range for <code>module.register</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16125" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16125/hovercard">#16125</a>)</li>
<li>fix(react-router): Spread <code>unstable_sentryVitePluginOptions</code> correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16156" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16156/hovercard">#16156</a>)</li>
<li>fix(react): Fix Redux integration failing with reducer injection (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16106/hovercard">#16106</a>)</li>
<li>fix(remix): Add ESM-compatible exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16124/hovercard">#16124</a>)</li>
<li>fix(remix): Avoid rewrapping root loader. (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16136" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16136/hovercard">#16136</a>)</li>
</ul>
<p>Work in this release was contributed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntoineDuComptoirDesPharmacies/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AntoineDuComptoirDesPharmacies">@ AntoineDuComptoirDesPharmacies</a>. Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.28 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>36.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>67.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>78.76 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.58 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.68 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.67 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.09 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>38.93 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.5 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>38.69 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.31 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.49 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>36.96 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.3 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.5 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>109.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>220.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>233.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.51 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.41 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.4 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.49 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.81 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.14.0</b> - 2025-04-23
</li>
<li>
<b>9.13.0</b> - 2025-04-16
</li>
<li>
<b>9.12.0</b> - 2025-04-08
</li>
<li>
<b>9.11.0</b> - 2025-04-03
</li>
<li>
<b>9.10.1</b> - 2025-03-28
</li>
<li>
<b>9.10.0</b> - 2025-03-27
</li>
</ul>
from <a href="https://redirect.github.com/getsentry/sentry-javascript/releases">@sentry/browser GitHub release notes</a>
</details>
</details>
---
> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - This PR was automatically created by Snyk using the credentials of a real user.
---
**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._
**For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJiMWMyNmNmNi03NzYxLTRkZDctYjM1Ni1jMWVmNGNhY2FiZmEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImIxYzI2Y2Y2LTc3NjEtNGRkNy1iMzU2LWMxZWY0Y2FjYWJmYSJ9fQ==" width="0" height="0"/>
> - 🧐 [View latest project report](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template)
> - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?pkg&#x3D;@sentry/browser&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)
[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"@sentry/browser","from":"9.10.0","to":"9.17.0"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","prPublicId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","packageManager":"npm","priorityScoreList":[],"projectPublicId":"3b48baaa-833b-4239-b348-16091472ee83","projectUrl":"https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":9,"publishedDate":"2025-05-08T12:44:52.593Z"},"vulns":[]}'
## Podsumowanie od Sourcery
Prace porządkowe:
- Aktualizacja @sentry/browser z wersji 9.10.0 do 9.17.0 w zależnościach i pliku blokady (lockfile)
<details>
<summary>Original summary in English</summary>
## Summary by Sourcery
Chores:
- Bump @sentry/browser from 9.10.0 to 9.17.0 in dependencies and lockfile
</details>
Co-authored-by: Snyk bot <19733683+snyk-bot@users.noreply.github.com>
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.

User Feedback causes page to crash?

3 participants

@ryan953@mydea@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); fix(feedback): Prevent `removeFromDom()` from throwing by ryan953 · Pull Request #16030 · getsentry/sentry-javascript · GitHub
Skip to content

fix(feedback): Prevent removeFromDom() from throwing - #16030

Merged
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws
May 1, 2025
Merged

fix(feedback): Prevent removeFromDom() from throwing#16030
ryan953 merged 5 commits into
developfrom
ryan953/fix-feedback-throws

Conversation

@ryan953

@ryan953ryan953 commented Apr 10, 2025

Copy link
Copy Markdown
Member

An internal user reported seeing "NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node." and the replay of their session confirms it: https://sentry.sentry.io/explore/replays/127444034ae84099a84b524458b6dd90/

However, there is no matching JS error to give more clues.

What I think happened is that after interacting with the Feedback SDK the widget got into a state where it was no longer mounted into the page, but we called removeFromDom() anyway.

Looking at the replay i saw the moment when the feedback dom was aded to the page, but it wasn't visible, only this got added at 18:51:
SCR-20250411-lsav

So something prevented it from opening all the way up.

Fixesgetsentry/sentry#89424

@ryan953
ryan953 requested a review from a team as a code ownerApril 10, 2025 22:10
@codecov

codecovBot commented Apr 10, 2025

Copy link
Copy Markdown

❌ We are unable to process any of the uploaded JUnit XML files. Please ensure your files are in the right format.

logger.error(
'[Feedback] Error when trying to remove Actor from the DOM. It is not appended to the DOM yet!',
);
throw new Error('[Feedback] Actor is not appended to DOM, nothing to remove.');

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.

Why do you want to throw this one here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

turns out el.remove() doesn't even throw if there's no parent element. unlike parent.removeChild(child).

So now if people call removeFromDom() we'll basically guarantee that the elements will be removed, and there'll be no errors thrown.

Similar to the appendToDom() call, SDK users can't really tell what state things are currently in, but they can call methods to put things into the state you want to be in.

@ryan953
ryan953 marked this pull request as draft April 11, 2025 15:24
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 7a904c7 to 18c9875CompareApril 14, 2025 20:42
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 96483aa to 0463304CompareApril 14, 2025 21:00
@ryan953
ryan953force-pushed the ryan953/fix-feedback-throws branch from 0463304 to b85449bCompareApril 14, 2025 21:02
@ryan953
ryan953 marked this pull request as ready for review April 14, 2025 21:05
@ryan953
ryan953 requested review from a team and chargomeApril 14, 2025 21:05
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.28 KB--
@sentry/browser - with treeshaking flags23.12 KB--
@sentry/browser (incl. Tracing)36.99 KB--
@sentry/browser (incl. Tracing, Replay)74.17 KB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.55 KB--
@sentry/browser (incl. Tracing, Replay with Canvas)78.83 KB--
@sentry/browser (incl. Tracing, Replay, Feedback)90.65 KB-0.01%-8 B 🔽
@sentry/browser (incl. Feedback)39.67 KB-0.03%-10 B 🔽
@sentry/browser (incl. sendFeedback)27.9 KB--
@sentry/browser (incl. FeedbackAsync)32.67 KB-0.02%-5 B 🔽
@sentry/react25.09 KB--
@sentry/react (incl. Tracing)38.91 KB--
@sentry/vue27.51 KB--
@sentry/vue (incl. Tracing)38.71 KB--
@sentry/svelte23.32 KB--
CDN Bundle24.51 KB--
CDN Bundle (incl. Tracing)36.98 KB--
CDN Bundle (incl. Tracing, Replay)72.03 KB--
CDN Bundle (incl. Tracing, Replay, Feedback)77.17 KB-0.01%-6 B 🔽
CDN Bundle - uncompressed71.47 KB--
CDN Bundle (incl. Tracing) - uncompressed109.34 KB--
CDN Bundle (incl. Tracing, Replay) - uncompressed220.63 KB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed233.15 KB-0.01%-12 B 🔽
@sentry/nextjs (client)40.53 KB--
@sentry/sveltekit (client)37.44 KB--
@sentry/node143.23 KB--
@sentry/node - without tracing96.47 KB--
@sentry/aws-serverless120.77 KB--

View base workflow run

@ryan953ryan953 changed the title fix(feedback): Fix an issue where, if removeFromDom() is called it might throwfix(feedback): Prevent removeFromDom() from throwingApr 15, 2025
@ryan953
ryan953 merged commit b94062f into developMay 1, 2025
@ryan953
ryan953 deleted the ryan953/fix-feedback-throws branch May 1, 2025 00:12
aviator-appBot added a commit to reisene/HulajDusza-serwis that referenced this pull request May 30, 2025
![reisene](https://badgen.net/badge/icon/reisene/green?label=) [<img width="16" alt="Powered by Pull Request Badge" src="https://user-images.githubusercontent.com/1393946/111216524-d2bb8e00-85d4-11eb-821b-ed4c00989c02.png">](https://pullrequestbadge.com/?utm_medium=github&utm_source=reisene&utm_campaign=badge_info)<!-- PR-BADGE: PLEASE DO NOT REMOVE THIS COMMENT -->
![snyk-top-banner](https://res.cloudinary.com/snyk/image/upload/r-d/scm-platform/snyk-pull-requests/pr-banner-default.svg)
<h3>Snyk has created this PR to upgrade @sentry/browser from 9.10.0 to 9.17.0.</h3>
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.
<hr/>
- The recommended version is **9 versions** ahead of your current version.
- The recommended version was released **22 days ago**.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>9.17.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.17.0">2025-05-08</a></br><ul>
<li>feat(node): Migrate to <code>@ fastify/otel</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15542" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/15542/hovercard">#15542</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>151.37 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.1</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.1">2025-05-07</a></br><ul>
<li>fix(core): Make sure logs get flushed in server-runtime-client (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16222" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16222/hovercard">#16222</a>)</li>
<li>ref(node): Remove vercel flushing code that does nothing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16217" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16217/hovercard">#16217</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.93 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>95.77 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.16 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.16.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.16.0">2025-05-07</a></br><h3>Important changes</h3>
<ul>
<li><strong>feat: Create a Vite plugin that injects sentryConfig into the global config (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16197" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16197/hovercard">#16197</a>)</strong></li>
</ul>
<p>Add a new plugin <code>makeConfigInjectorPlugin</code> within our existing vite plugin that updates the global vite config with sentry options</p>
<ul>
<li><strong>feat(browser): Add option to sample linked traces consistently (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16037" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16037/hovercard">#16037</a>)</strong></li>
</ul>
<p>This PR implements consistent sampling across traces as outlined in (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/15754" data-hovercard-type="issue" data-hovercard-url="/getsentry/sentry-javascript/issues/15754/hovercard">#15754</a>)</p>
<ul>
<li><strong>feat(cloudflare): Add support for durable objects (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16180" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16180/hovercard">#16180</a>)</strong></li>
</ul>
<p>This PR introduces a new <code>instrumentDurableObjectWithSentry</code> method to the SDK, which instruments durable objects. We capture both traces and errors automatically.</p>
<ul>
<li><strong>feat(node): Add Prisma integration by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16073" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16073/hovercard">#16073</a>)</strong></li>
</ul>
<p><a href="https://docs.sentry.io/platforms/javascript/guides/nextjs/configuration/integrations/prisma/" rel="nofollow">Prisma integration</a> is enabled by default, it should work for both ESM and CJS.</p>
<ul>
<li><strong>feat(react-router): Add client-side router instrumentation (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16185" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16185/hovercard">#16185</a>)</strong></li>
</ul>
<p>Adds client-side instrumentation for react router's <code>HydratedRouter</code>. To enable it, simply replace <code>browserTracingIntegration()</code> with <code>reactRouterTracingIntegration()</code> in your client-side init call.</p>
<ul>
<li><strong>fix(node): Avoid double-wrapping http module (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16177" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16177/hovercard">#16177</a>)</strong></li>
</ul>
<p>When running your application in ESM mode, there have been scenarios that resulted in the <code>http</code>/<code>https</code> emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.</p>
<p>In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnostics<em>channel hooks to handle request isolation now.<br>
While this is generally not expected to break anything, there is one tiny change that _may</em> affect you if you have been relying on very specific functionality:</p>
<p>The <code>ignoreOutgoingRequests</code> option of <code>httpIntegration</code> receives the <code>RequestOptions</code> as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that <em>may</em> have existed before may no longer be set:</p>
<div class="highlight highlight-source-ts notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})"><pre><span class="pl-s1">ignoreOutgoingRequests</span><span class="pl-kos">(</span><span class="pl-s1">url</span>: <span class="pl-s1">string</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">method</span>: <span class="pl-s1">string</span><span class="pl-kos">;</span>
protocol: <span class="pl-s1">string</span><span class="pl-kos">;</span>
host: <span class="pl-s1">string</span><span class="pl-kos">;</span>
hostname: <span class="pl-s1">string</span><span class="pl-kos">;</span> <span class="pl-c">// same as host</span>
path: <span class="pl-s1">string</span><span class="pl-kos">;</span>
headers: <span class="pl-v">OutgoingHttpHeaders</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span></pre></div>
<h3>Other changes</h3>
<ul>
<li>feat(cloudflare): Add logs exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16165" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16165/hovercard">#16165</a>)</li>
<li>feat(vercel-edge): Add logs export (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16166" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16166/hovercard">#16166</a>)</li>
<li>feat(cloudflare): Read <code>SENTRY_RELEASE</code> from <code>env</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16201" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16201/hovercard">#16201</a>)</li>
<li>feat(node): Drop <code>http.server</code> spans with 404 status by default (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16205" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16205/hovercard">#16205</a>)</li>
<li>fix(browser): Respect manually set sentry tracing headers in XHR requests (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16184" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16184/hovercard">#16184</a>)</li>
<li>fix(core): Respect manually set sentry tracing headers in fetch calls (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16183" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16183/hovercard">#16183</a>)</li>
<li>fix(feedback): Prevent <code>removeFromDom()</code> from throwing (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16030" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16030/hovercard">#16030</a>)</li>
<li>fix(node): Use class constructor in docstring for winston transport (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16167" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16167/hovercard">#16167</a>)</li>
<li>fix(node): Fix vercel flushing logic &amp; add test for it (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16208" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16208/hovercard">#16208</a>)</li>
<li>fix(node): Fix 404 route handling in express 5 (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16211" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16211/hovercard">#16211</a>)</li>
<li>fix(logs): Ensure logs can be flushed correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16216" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16216/hovercard">#16216</a>)</li>
<li>ref(core): Switch to standardized log envelope (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16133" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16133/hovercard">#16133</a>)</li>
</ul>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.35 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.19 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>37.25 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>68.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>79.12 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.75 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.98 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.74 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.16 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>39.24 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.63 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>39.01 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.38 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.55 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>37.29 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.64 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>110.34 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>221.63 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>234.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.84 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.73 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>144.43 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.3 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.66 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.15.0</b> - <a href="https://redirect.github.com/getsentry/sentry-javascript/releases/tag/9.15.0">2025-04-29</a></br><h3>Important Changes</h3>
<ul>
<li><strong>feat: Export <code>wrapMcpServerWithSentry</code> from server packages (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16127" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16127/hovercard">#16127</a>)</strong></li>
</ul>
<p>Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.</p>
<ul>
<li><strong>feat(core): Associate resource/tool/prompt invocations with request span instead of response span (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16126" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16126/hovercard">#16126</a>)</strong></li>
</ul>
<p>Adds a best effort mechanism to associate handler spans for <code>resource</code>, <code>tool</code> and <code>prompt</code> with the incoming message requests instead of the outgoing SSE response.</p>
<h3>Other Changes</h3>
<ul>
<li>fix: Vercel <code>ai</code> ESM patching (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16152" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16152/hovercard">#16152</a>)</li>
<li>fix(node): Update version range for <code>module.register</code> (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16125" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16125/hovercard">#16125</a>)</li>
<li>fix(react-router): Spread <code>unstable_sentryVitePluginOptions</code> correctly (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16156" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16156/hovercard">#16156</a>)</li>
<li>fix(react): Fix Redux integration failing with reducer injection (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16106" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16106/hovercard">#16106</a>)</li>
<li>fix(remix): Add ESM-compatible exports (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16124" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16124/hovercard">#16124</a>)</li>
<li>fix(remix): Avoid rewrapping root loader. (<a href="https://redirect.github.com/getsentry/sentry-javascript/pull/16136" data-hovercard-type="pull_request" data-hovercard-url="/getsentry/sentry-javascript/pull/16136/hovercard">#16136</a>)</li>
</ul>
<p>Work in this release was contributed by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AntoineDuComptoirDesPharmacies/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://redirect.github.com/AntoineDuComptoirDesPharmacies">@ AntoineDuComptoirDesPharmacies</a>. Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser</td>
<td>23.28 KB</td>
</tr>
<tr>
<td>@ sentry/browser - with treeshaking flags</td>
<td>23.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing)</td>
<td>36.93 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay)</td>
<td>74.1 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay) - with treeshaking flags</td>
<td>67.47 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay with Canvas)</td>
<td>78.76 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Tracing, Replay, Feedback)</td>
<td>90.58 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. Feedback)</td>
<td>39.68 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. sendFeedback)</td>
<td>27.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser (incl. FeedbackAsync)</td>
<td>32.67 KB</td>
</tr>
<tr>
<td>@ sentry/react</td>
<td>25.09 KB</td>
</tr>
<tr>
<td>@ sentry/react (incl. Tracing)</td>
<td>38.93 KB</td>
</tr>
<tr>
<td>@ sentry/vue</td>
<td>27.5 KB</td>
</tr>
<tr>
<td>@ sentry/vue (incl. Tracing)</td>
<td>38.69 KB</td>
</tr>
<tr>
<td>@ sentry/svelte</td>
<td>23.31 KB</td>
</tr>
<tr>
<td>CDN Bundle</td>
<td>24.49 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing)</td>
<td>36.96 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay)</td>
<td>72 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback)</td>
<td>77.3 KB</td>
</tr>
<tr>
<td>CDN Bundle - uncompressed</td>
<td>71.5 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing) - uncompressed</td>
<td>109.33 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay) - uncompressed</td>
<td>220.62 KB</td>
</tr>
<tr>
<td>CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed</td>
<td>233.15 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs (client)</td>
<td>40.51 KB</td>
</tr>
<tr>
<td>@ sentry/sveltekit (client)</td>
<td>37.41 KB</td>
</tr>
<tr>
<td>@ sentry/node</td>
<td>143.4 KB</td>
</tr>
<tr>
<td>@ sentry/node - without tracing</td>
<td>96.49 KB</td>
</tr>
<tr>
<td>@ sentry/aws-serverless</td>
<td>120.81 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>9.14.0</b> - 2025-04-23
</li>
<li>
<b>9.13.0</b> - 2025-04-16
</li>
<li>
<b>9.12.0</b> - 2025-04-08
</li>
<li>
<b>9.11.0</b> - 2025-04-03
</li>
<li>
<b>9.10.1</b> - 2025-03-28
</li>
<li>
<b>9.10.0</b> - 2025-03-27
</li>
</ul>
from <a href="https://redirect.github.com/getsentry/sentry-javascript/releases">@sentry/browser GitHub release notes</a>
</details>
</details>
---
> [!IMPORTANT]
>
> - Check the changes in this PR to ensure they won't cause issues with your project.
> - This PR was automatically created by Snyk using the credentials of a real user.
---
**Note:** _You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs._
**For more information:** <img src="https://api.segment.io/v1/pixel/track?data=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiJiMWMyNmNmNi03NzYxLTRkZDctYjM1Ni1jMWVmNGNhY2FiZmEiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6ImIxYzI2Y2Y2LTc3NjEtNGRkNy1iMzU2LWMxZWY0Y2FjYWJmYSJ9fQ==" width="0" height="0"/>
> - 🧐 [View latest project report](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 📜 [Customise PR templates](https://docs.snyk.io/scan-using-snyk/pull-requests/snyk-fix-pull-or-merge-requests/customize-pr-templates?utm_source=&utm_content=fix-pr-template)
> - 🛠 [Adjust upgrade PR settings](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr)
> - 🔕 [Ignore this dependency or unsubscribe from future upgrade PRs](https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83/settings/integration?pkg&#x3D;@sentry/browser&amp;utm_source&#x3D;github&amp;utm_medium&#x3D;referral&amp;page&#x3D;upgrade-pr#auto-dep-upgrades)
[//]: # 'snyk:metadata:{"customTemplate":{"variablesUsed":[],"fieldsUsed":[]},"dependencies":[{"name":"@sentry/browser","from":"9.10.0","to":"9.17.0"}],"env":"prod","hasFixes":false,"isBreakingChange":false,"isMajorUpgrade":false,"issuesToFix":[],"prId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","prPublicId":"b1c26cf6-7761-4dd7-b356-c1ef4cacabfa","packageManager":"npm","priorityScoreList":[],"projectPublicId":"3b48baaa-833b-4239-b348-16091472ee83","projectUrl":"https://app.snyk.io/org/reisene/project/3b48baaa-833b-4239-b348-16091472ee83?utm_source=github&utm_medium=referral&page=upgrade-pr","prType":"upgrade","templateFieldSources":{"branchName":"default","commitMessage":"default","description":"default","title":"default"},"templateVariants":[],"type":"auto","upgrade":[],"upgradeInfo":{"versionsDiff":9,"publishedDate":"2025-05-08T12:44:52.593Z"},"vulns":[]}'
## Podsumowanie od Sourcery
Prace porządkowe:
- Aktualizacja @sentry/browser z wersji 9.10.0 do 9.17.0 w zależnościach i pliku blokady (lockfile)
<details>
<summary>Original summary in English</summary>
## Summary by Sourcery
Chores:
- Bump @sentry/browser from 9.10.0 to 9.17.0 in dependencies and lockfile
</details>
Co-authored-by: Snyk bot <19733683+snyk-bot@users.noreply.github.com>
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.

User Feedback causes page to crash?

3 participants

@ryan953@mydea@chargome