-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
feat(browser): Better event name handling for non-Error objects #8374
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
size-limit report 📦
|
88bc0a7 to
9e08fb6
Compare
| function getObjectClassName(obj: unknown): string | undefined | void { | ||
| try { | ||
| const prototype: Prototype | null = Object.getPrototypeOf(obj); | ||
| return prototype ? prototype.constructor.name : undefined; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am worried about this for similar reasons outlined in: #8161 (comment)
If people throw an object of a custom class and their code is minified, prototype.constructor.name will contain the minified name. Minified symbols may change across deploys and grouping may therefore break across deploys.
The current implementation doesn't have this issue as object keys are generally not minified.
I don't know yet how I would proceeed here though 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, this is true (tried it in a test app). What about the following - slightly hacky but maybe OK - solution:
if (className.length === 1) {
// this is most likely minified/mangled, so just use "Object"
return "Object"
}? This will not capture everything (you may have mangled class names with more than one char), but usually mangling will reduce to one character as it is the smallest, and you rarely have more than 26 entities in the same scope 🤔 Or possibly we could even do className.length < 3 or so, as it is not necessarily a problem if we don't capture one or the other "real" class name, I guess.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wouldn't do that. That seems a bit silly.
The more I think about this, the more I wouldn't change anything. We're just introducing new complexity that doesn't solve any particular issue.
The one thing I would consider is either updating the Error message to be a bit more clear what is happening or removing the "with keys ..." part and using scope.setFingerprint() to keep the grouping intact.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would shy away from using the fingerprint because it make it harder for users to understand how to filter the events out and understand how they are being grouped.
How about let's just not differentiate between class instances and plain js object?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, for simplicity I will just go with Object for everything except events then? That should already be better than what we have right now and we can still tweak/further improve this later. (FWIW, I still think it would be helpful to get the class name, but we can think this over some more)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yup sounds good to me - I think we can keep iterating
889259a to
519d4b9
Compare
lforst
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good change!
| if (browserName === 'firefox') { | ||
| sentryTest.skip(); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we just want to add the FF behaviour to this test?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FF has a completely different behavior, the error does not go into the eventFromPlainObject path. So the whole test assertion would be different 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I leave it up to you. If you think it's valuable we can add a test - otherwise it's fine too.
| expect(eventData.exception?.values?.[0]).toMatchObject({ | ||
| type: 'Error', | ||
| value: 'Non-Error exception captured with keys: [object has no keys]', | ||
| value: 'Object captured as exception with keys: [object has no keys]', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wondering if this should just read 'Object captured as exception'. Probably fine to save bundle.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I originally wanted to do that as well, but the [object has no keys] part comes from the existing extractExceptionKeysForMessage which is used in multiple places, so I figured we can just keep it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea let's keep it. I trust people to understand what's going on here.
lforst
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good change!
<p>This PR was automatically created by Snyk using the credentials of a
real user.</p><br /><h3>Snyk has created this PR to upgrade
@sentry/browser from 7.56.0 to 7.57.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 **2 versions** ahead of your current
version.
- The recommended version was released **23 days ago**, on 2023-06-28.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/browser</b></summary>
<ul>
<li>
<b>7.57.0</b> - <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/releases/tag/7.57.0">2023-06-28</a></br><h3>Important
Changes</h3>
<ul>
<li><strong>build: Update typescript from 3.8.3 to 4.9.5 (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1732343050" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8255"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8255/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8255">#8255</a>)</strong></li>
</ul>
<p>This release version <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8255"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8255/hovercard">bumps
the internally used typescript version from 3.8.x to 4.9.x</a>.<br>
We use ds-downlevel to generate two versions of our types, one for
>=3.8, one for >=4.9.<br>
This means that this change should be fully backwards compatible and not
have any noticable user impact,<br>
but if you still encounter issues please let us know.</p>
<ul>
<li><strong>feat(types): Add tracePropagationTargets to top level
options (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1771501713" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8395"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8395/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8395">#8395</a>)</strong></li>
</ul>
<p>Instead of passing <code>tracePropagationTargets</code> to the
<code>BrowserTracing</code> integration, you can now define them on the
top level:</p>
<div class="highlight highlight-source-js notranslate position-relative
overflow-auto" data-snippet-clipboard-copy-content="Sentry.init({
tracePropagationTargets: ['api.site.com'],
});"><pre><span class="pl-v">Sentry</span><span
class="pl-kos">.</span><span class="pl-en">init</span><span
class="pl-kos">(</span><span class="pl-kos">{</span>
<span class="pl-c1">tracePropagationTargets</span>: <span
class="pl-kos">[</span><span class="pl-s">'api.site.com'</span><span
class="pl-kos">]</span><span class="pl-kos">,</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span
class="pl-kos">;</span></pre></div>
<ul>
<li><strong>fix(angular): Filter out <code>TryCatch</code> integration
by default (<a class="issue-link js-issue-link" data-error-text="Failed
to load title" data-id="1764938256" data-permission-text="Title is
private"
data-url="getsentry/sentry-javascript#8367"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8367/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8367">#8367</a>)</strong></li>
</ul>
<p>The Angular and Angular-ivy SDKs will not install the TryCatch
integration anymore by default.<br>
This integration conflicted with the <code>SentryErrorHander</code>,
sometimes leading to duplicated errors and/or missing data on
events.</p>
<ul>
<li><strong>feat(browser): Better event name handling for non-Error
objects (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1767863342" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8374"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8374/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8374">#8374</a>)</strong></li>
</ul>
<p>When capturing non-errors via <code>Sentry.captureException()</code>,
e.g. <code>Sentry.captureException({ prop: "custom object"
})</code>,<br>
we now generate a more helpful value for the synthetic exception.
Instead of e.g. <code>Non-Error exception captured with keys:
currentTarget, isTrusted, target, type</code>, you'll now get messages
like:</p>
<div class="snippet-clipboard-content notranslate position-relative
overflow-auto" data-snippet-clipboard-copy-content="Object captured as
exception with keys: prop1, prop2
Event `MouseEvent` (type=click) captured as exception
Event `ErrorEvent` captured as exception with message `Script
error.`"><pre class="notranslate"><code>Object captured as exception
with keys: prop1, prop2
Event `MouseEvent` (type=click) captured as exception
Event `ErrorEvent` captured as exception with message `Script error.`
</code></pre></div>
<h3>Other Changes</h3>
<ul>
<li>feat(browser): Send profiles in same envelope as transactions (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1767979830" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8375"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8375/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8375">#8375</a>)</li>
<li>feat(profiling): Collect timings on profiler stop calls (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1777004306" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8409"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8409/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8409">#8409</a>)</li>
<li>feat(replay): Do not capture replays < 5 seconds (GA) (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1736970479" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8277"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8277/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8277">#8277</a>)</li>
<li>feat(tracing): Add experiment to capture http timings (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1765573137" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8371"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8371/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8371">#8371</a>)</li>
<li>feat(tracing): Add <code>http.response.status_code</code> to
<code>span.data</code> (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1764892325"
data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8366"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8366/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8366">#8366</a>)</li>
<li>fix(angular): Stop routing spans on navigation cancel and error
events (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1765286148" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8369"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8369/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8369">#8369</a>)</li>
<li>fix(core): Only start spans in <code>trace</code> if tracing is
enabled (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1763395305" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8357"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8357/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8357">#8357</a>)</li>
<li>fix(nextjs): Inject init calls via loader instead of via entrypoints
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1764971073" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8368"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8368/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8368">#8368</a>)</li>
<li>fix(replay): Mark ui.slowClickDetected <code>clickCount</code> as
optional (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1768099155" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8376"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8376/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8376">#8376</a>)</li>
<li>fix(serverless): Export
<code>autoDiscoverNodePerformanceMonitoringIntegrations</code> from SDK
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1769506334" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8382"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8382/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8382">#8382</a>)</li>
<li>fix(sveltekit): Check for cached requests in client-side fetch
instrumentation (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1770104495"
data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8391"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8391/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8391">#8391</a>)</li>
<li>fix(sveltekit): Only instrument SvelteKit <code>fetch</code> if the
SDK client is valid (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1769261512"
data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8381"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8381/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8381">#8381</a>)</li>
<li>fix(tracing): Instrument Prisma client in constructor of integration
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1769565969" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8383"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8383/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8383">#8383</a>)</li>
<li>ref(replay): More graceful <code>sessionStorage</code> check (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1770880521" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8394"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8394/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8394">#8394</a>)</li>
<li>ref(replay): Remove circular dep in replay eventBuffer (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1769990964" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8389"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8389/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8389">#8389</a>)</li>
</ul>
<h2>Bundle size <g-emoji class="g-emoji" alias="package"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4e6.png">📦</g-emoji></h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (gzipped + minified)</td>
<td>21.49 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (minified)</td>
<td>67.59 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (gzipped + minified)</td>
<td>19.82 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (minified)</td>
<td>58.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (gzipped + minified)</td>
<td>21.43 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (minified)</td>
<td>69.87 KB</td>
</tr>
<tr>
<td>@ sentry/react - Webpack (gzipped + minified)</td>
<td>21.46 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs Client - Webpack (gzipped + minified)</td>
<td>49.81 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES5 CDN Bundle (gzipped +
minified)</td>
<td>29.39 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES6 CDN Bundle (gzipped +
minified)</td>
<td>27.48 KB</td>
</tr>
<tr>
<td>@ sentry/replay ES6 CDN Bundle (gzipped + minified)</td>
<td>49.34 KB</td>
</tr>
<tr>
<td>@ sentry/replay - Webpack (gzipped + minified)</td>
<td>43.11 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing + @ sentry/replay - ES6 CDN
Bundle (gzipped + minified)</td>
<td>68.82 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/replay - ES6 CDN Bundle (gzipped +
minified)</td>
<td>61.38 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>7.57.0-beta.0</b> - <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/releases/tag/7.57.0-beta.0">2023-06-21</a></br><p>This
beta version <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8255"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8255/hovercard">bumps
the internally used typescript version from 3.8.x to 4.9.x</a>.<br>
We use ds-downlevel to generate two versions of our types, one for
>=3.8, one for >=4.9.<br>
This means that this change should be fully backwards compatible and not
have any noticable user impact.</p>
<p>However, since this touches the whole code base, we decided to
release this as a beta first in order to ensure this is fully
stable.</p>
<h3>Other Changes</h3>
<ul>
<li>feat(replay): Do not capture replays < 5 seconds (GA) (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1736970479" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8277"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8277/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8277">#8277</a>)</li>
</ul>
<h2>Bundle size <g-emoji class="g-emoji" alias="package"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4e6.png">📦</g-emoji></h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (gzipped + minified)</td>
<td>21.38 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (minified)</td>
<td>67.24 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (gzipped + minified)</td>
<td>19.72 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (minified)</td>
<td>58.61 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (gzipped + minified)</td>
<td>21.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (minified)</td>
<td>69.53 KB</td>
</tr>
<tr>
<td>@ sentry/react - Webpack (gzipped + minified)</td>
<td>21.37 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs Client - Webpack (gzipped + minified)</td>
<td>49.29 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES5 CDN Bundle (gzipped +
minified)</td>
<td>29.03 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES6 CDN Bundle (gzipped +
minified)</td>
<td>27.04 KB</td>
</tr>
<tr>
<td>@ sentry/replay ES6 CDN Bundle (gzipped + minified)</td>
<td>49.34 KB</td>
</tr>
<tr>
<td>@ sentry/replay - Webpack (gzipped + minified)</td>
<td>43.08 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing + @ sentry/replay - ES6 CDN
Bundle (gzipped + minified)</td>
<td>68.37 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/replay - ES6 CDN Bundle (gzipped +
minified)</td>
<td>61.27 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>7.56.0</b> - 2023-06-19
</li>
</ul>
from <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/releases">@sentry/browser
GitHub release notes</a>
</details>
</details>
<hr/>
**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=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiI0MzczZjBlYi1iMTUyLTQ3Y2QtOTkxNi0yMzQ5NzY5NDIxZTIiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6IjQzNzNmMGViLWIxNTItNDdjZC05OTE2LTIzNDk3Njk0MjFlMiJ9fQ=="
width="0" height="0"/>
🧐 [View latest project
report](https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6?utm_source=github&utm_medium=referral&page=upgrade-pr)
🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6/settings/integration?utm_source=github&utm_medium=referral&page=upgrade-pr)
🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6/settings/integration?pkg=@sentry/browser&utm_source=github&utm_medium=referral&page=upgrade-pr#auto-dep-upgrades)
<!---
(snyk:metadata:{"prId":"4373f0eb-b152-47cd-9916-2349769421e2","prPublicId":"4373f0eb-b152-47cd-9916-2349769421e2","dependencies":[{"name":"@sentry/browser","from":"7.56.0","to":"7.57.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"8a1190df-0364-4a9a-93bd-a9f28b54daf6","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":2,"publishedDate":"2023-06-28T15:27:04.479Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
<p>This PR was automatically created by Snyk using the credentials of a
real user.</p><br /><h3>Snyk has created this PR to upgrade
@sentry/tracing from 7.56.0 to 7.57.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 **2 versions** ahead of your current
version.
- The recommended version was released **23 days ago**, on 2023-06-28.
<details>
<summary><b>Release notes</b></summary>
<br/>
<details>
<summary>Package name: <b>@sentry/tracing</b></summary>
<ul>
<li>
<b>7.57.0</b> - <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/releases/tag/7.57.0">2023-06-28</a></br><h3>Important
Changes</h3>
<ul>
<li><strong>build: Update typescript from 3.8.3 to 4.9.5 (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1732343050" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8255"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8255/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8255">#8255</a>)</strong></li>
</ul>
<p>This release version <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8255"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8255/hovercard">bumps
the internally used typescript version from 3.8.x to 4.9.x</a>.<br>
We use ds-downlevel to generate two versions of our types, one for
>=3.8, one for >=4.9.<br>
This means that this change should be fully backwards compatible and not
have any noticable user impact,<br>
but if you still encounter issues please let us know.</p>
<ul>
<li><strong>feat(types): Add tracePropagationTargets to top level
options (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1771501713" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8395"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8395/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8395">#8395</a>)</strong></li>
</ul>
<p>Instead of passing <code>tracePropagationTargets</code> to the
<code>BrowserTracing</code> integration, you can now define them on the
top level:</p>
<div class="highlight highlight-source-js notranslate position-relative
overflow-auto" data-snippet-clipboard-copy-content="Sentry.init({
tracePropagationTargets: ['api.site.com'],
});"><pre><span class="pl-v">Sentry</span><span
class="pl-kos">.</span><span class="pl-en">init</span><span
class="pl-kos">(</span><span class="pl-kos">{</span>
<span class="pl-c1">tracePropagationTargets</span>: <span
class="pl-kos">[</span><span class="pl-s">'api.site.com'</span><span
class="pl-kos">]</span><span class="pl-kos">,</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span><span
class="pl-kos">;</span></pre></div>
<ul>
<li><strong>fix(angular): Filter out <code>TryCatch</code> integration
by default (<a class="issue-link js-issue-link" data-error-text="Failed
to load title" data-id="1764938256" data-permission-text="Title is
private"
data-url="getsentry/sentry-javascript#8367"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8367/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8367">#8367</a>)</strong></li>
</ul>
<p>The Angular and Angular-ivy SDKs will not install the TryCatch
integration anymore by default.<br>
This integration conflicted with the <code>SentryErrorHander</code>,
sometimes leading to duplicated errors and/or missing data on
events.</p>
<ul>
<li><strong>feat(browser): Better event name handling for non-Error
objects (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1767863342" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8374"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8374/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8374">#8374</a>)</strong></li>
</ul>
<p>When capturing non-errors via <code>Sentry.captureException()</code>,
e.g. <code>Sentry.captureException({ prop: "custom object"
})</code>,<br>
we now generate a more helpful value for the synthetic exception.
Instead of e.g. <code>Non-Error exception captured with keys:
currentTarget, isTrusted, target, type</code>, you'll now get messages
like:</p>
<div class="snippet-clipboard-content notranslate position-relative
overflow-auto" data-snippet-clipboard-copy-content="Object captured as
exception with keys: prop1, prop2
Event `MouseEvent` (type=click) captured as exception
Event `ErrorEvent` captured as exception with message `Script
error.`"><pre class="notranslate"><code>Object captured as exception
with keys: prop1, prop2
Event `MouseEvent` (type=click) captured as exception
Event `ErrorEvent` captured as exception with message `Script error.`
</code></pre></div>
<h3>Other Changes</h3>
<ul>
<li>feat(browser): Send profiles in same envelope as transactions (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1767979830" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8375"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8375/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8375">#8375</a>)</li>
<li>feat(profiling): Collect timings on profiler stop calls (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1777004306" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8409"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8409/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8409">#8409</a>)</li>
<li>feat(replay): Do not capture replays < 5 seconds (GA) (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1736970479" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8277"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8277/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8277">#8277</a>)</li>
<li>feat(tracing): Add experiment to capture http timings (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1765573137" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8371"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8371/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8371">#8371</a>)</li>
<li>feat(tracing): Add <code>http.response.status_code</code> to
<code>span.data</code> (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1764892325"
data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8366"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8366/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8366">#8366</a>)</li>
<li>fix(angular): Stop routing spans on navigation cancel and error
events (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1765286148" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8369"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8369/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8369">#8369</a>)</li>
<li>fix(core): Only start spans in <code>trace</code> if tracing is
enabled (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1763395305" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8357"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8357/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8357">#8357</a>)</li>
<li>fix(nextjs): Inject init calls via loader instead of via entrypoints
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1764971073" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8368"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8368/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8368">#8368</a>)</li>
<li>fix(replay): Mark ui.slowClickDetected <code>clickCount</code> as
optional (<a class="issue-link js-issue-link" data-error-text="Failed to
load title" data-id="1768099155" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8376"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8376/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8376">#8376</a>)</li>
<li>fix(serverless): Export
<code>autoDiscoverNodePerformanceMonitoringIntegrations</code> from SDK
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1769506334" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8382"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8382/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8382">#8382</a>)</li>
<li>fix(sveltekit): Check for cached requests in client-side fetch
instrumentation (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1770104495"
data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8391"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8391/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8391">#8391</a>)</li>
<li>fix(sveltekit): Only instrument SvelteKit <code>fetch</code> if the
SDK client is valid (<a class="issue-link js-issue-link"
data-error-text="Failed to load title" data-id="1769261512"
data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8381"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8381/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8381">#8381</a>)</li>
<li>fix(tracing): Instrument Prisma client in constructor of integration
(<a class="issue-link js-issue-link" data-error-text="Failed to load
title" data-id="1769565969" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8383"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8383/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8383">#8383</a>)</li>
<li>ref(replay): More graceful <code>sessionStorage</code> check (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1770880521" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8394"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8394/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8394">#8394</a>)</li>
<li>ref(replay): Remove circular dep in replay eventBuffer (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1769990964" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8389"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8389/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8389">#8389</a>)</li>
</ul>
<h2>Bundle size <g-emoji class="g-emoji" alias="package"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4e6.png">📦</g-emoji></h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (gzipped + minified)</td>
<td>21.49 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (minified)</td>
<td>67.59 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (gzipped + minified)</td>
<td>19.82 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (minified)</td>
<td>58.9 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (gzipped + minified)</td>
<td>21.43 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (minified)</td>
<td>69.87 KB</td>
</tr>
<tr>
<td>@ sentry/react - Webpack (gzipped + minified)</td>
<td>21.46 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs Client - Webpack (gzipped + minified)</td>
<td>49.81 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES5 CDN Bundle (gzipped +
minified)</td>
<td>29.39 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES6 CDN Bundle (gzipped +
minified)</td>
<td>27.48 KB</td>
</tr>
<tr>
<td>@ sentry/replay ES6 CDN Bundle (gzipped + minified)</td>
<td>49.34 KB</td>
</tr>
<tr>
<td>@ sentry/replay - Webpack (gzipped + minified)</td>
<td>43.11 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing + @ sentry/replay - ES6 CDN
Bundle (gzipped + minified)</td>
<td>68.82 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/replay - ES6 CDN Bundle (gzipped +
minified)</td>
<td>61.38 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>7.57.0-beta.0</b> - <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/releases/tag/7.57.0-beta.0">2023-06-21</a></br><p>This
beta version <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8255"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8255/hovercard">bumps
the internally used typescript version from 3.8.x to 4.9.x</a>.<br>
We use ds-downlevel to generate two versions of our types, one for
>=3.8, one for >=4.9.<br>
This means that this change should be fully backwards compatible and not
have any noticable user impact.</p>
<p>However, since this touches the whole code base, we decided to
release this as a beta first in order to ensure this is fully
stable.</p>
<h3>Other Changes</h3>
<ul>
<li>feat(replay): Do not capture replays < 5 seconds (GA) (<a
class="issue-link js-issue-link" data-error-text="Failed to load title"
data-id="1736970479" data-permission-text="Title is private"
data-url="getsentry/sentry-javascript#8277"
data-hovercard-type="pull_request"
data-hovercard-url="/getsentry/sentry-javascript/pull/8277/hovercard"
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/pull/8277">#8277</a>)</li>
</ul>
<h2>Bundle size <g-emoji class="g-emoji" alias="package"
fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4e6.png">📦</g-emoji></h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (gzipped + minified)</td>
<td>21.38 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES5 CDN Bundle (minified)</td>
<td>67.24 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (gzipped + minified)</td>
<td>19.72 KB</td>
</tr>
<tr>
<td>@ sentry/browser - ES6 CDN Bundle (minified)</td>
<td>58.61 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (gzipped + minified)</td>
<td>21.34 KB</td>
</tr>
<tr>
<td>@ sentry/browser - Webpack (minified)</td>
<td>69.53 KB</td>
</tr>
<tr>
<td>@ sentry/react - Webpack (gzipped + minified)</td>
<td>21.37 KB</td>
</tr>
<tr>
<td>@ sentry/nextjs Client - Webpack (gzipped + minified)</td>
<td>49.29 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES5 CDN Bundle (gzipped +
minified)</td>
<td>29.03 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing - ES6 CDN Bundle (gzipped +
minified)</td>
<td>27.04 KB</td>
</tr>
<tr>
<td>@ sentry/replay ES6 CDN Bundle (gzipped + minified)</td>
<td>49.34 KB</td>
</tr>
<tr>
<td>@ sentry/replay - Webpack (gzipped + minified)</td>
<td>43.08 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/tracing + @ sentry/replay - ES6 CDN
Bundle (gzipped + minified)</td>
<td>68.37 KB</td>
</tr>
<tr>
<td>@ sentry/browser + @ sentry/replay - ES6 CDN Bundle (gzipped +
minified)</td>
<td>61.27 KB</td>
</tr>
</tbody>
</table>
</li>
<li>
<b>7.56.0</b> - 2023-06-19
</li>
</ul>
from <a
href="https://snyk.io/redirect/github/getsentry/sentry-javascript/releases">@sentry/tracing
GitHub release notes</a>
</details>
</details>
<hr/>
**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=eyJ3cml0ZUtleSI6InJyWmxZcEdHY2RyTHZsb0lYd0dUcVg4WkFRTnNCOUEwIiwiYW5vbnltb3VzSWQiOiI3NzRmZmVjZC03ZmJkLTRlZTEtYTI0Mi1hMWMzNTBkMjNmYTMiLCJldmVudCI6IlBSIHZpZXdlZCIsInByb3BlcnRpZXMiOnsicHJJZCI6Ijc3NGZmZWNkLTdmYmQtNGVlMS1hMjQyLWExYzM1MGQyM2ZhMyJ9fQ=="
width="0" height="0"/>
🧐 [View latest project
report](https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6?utm_source=github&utm_medium=referral&page=upgrade-pr)
🛠 [Adjust upgrade PR
settings](https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6/settings/integration?utm_source=github&utm_medium=referral&page=upgrade-pr)
🔕 [Ignore this dependency or unsubscribe from future upgrade
PRs](https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6/settings/integration?pkg=@sentry/tracing&utm_source=github&utm_medium=referral&page=upgrade-pr#auto-dep-upgrades)
<!---
(snyk:metadata:{"prId":"774ffecd-7fbd-4ee1-a242-a1c350d23fa3","prPublicId":"774ffecd-7fbd-4ee1-a242-a1c350d23fa3","dependencies":[{"name":"@sentry/tracing","from":"7.56.0","to":"7.57.0"}],"packageManager":"npm","type":"auto","projectUrl":"https://app.snyk.io/org/mtes-mct/project/8a1190df-0364-4a9a-93bd-a9f28b54daf6?utm_source=github&utm_medium=referral&page=upgrade-pr","projectPublicId":"8a1190df-0364-4a9a-93bd-a9f28b54daf6","env":"prod","prType":"upgrade","vulns":[],"issuesToFix":[],"upgrade":[],"upgradeInfo":{"versionsDiff":2,"publishedDate":"2023-06-28T15:27:04.555Z"},"templateVariants":[],"hasFixes":false,"isMajorUpgrade":false,"isBreakingChange":false,"priorityScoreList":[]})
--->
Co-authored-by: snyk-bot <snyk-bot@snyk.io>
This PR adjusts the exception name generation for non-error objects in the browser SDK.
Previously
Previously, all non-error objects would get a message like:
Non-Error exception captured with keys: currentTarget, isTrusted, target, typeNew
Now, we take the class name into consideration, as well as special casing some types:
MyTestClasscaptured as exception with keys: prop1, prop2MouseEvent(click) captured as exception with keys: currentTarget, isTrusted, target, typeErrorEventcaptured as exception with messageScript error.ref #7941