meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

@Lms24@lforst@AbhiPrasad@andreiborza@s1gr1d@mydea@onurtemizkan@cleptric@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

@Lms24@lforst@AbhiPrasad@andreiborza@s1gr1d@mydea@onurtemizkan@cleptric@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

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

meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

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

meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

@Lms24@lforst@AbhiPrasad@andreiborza@s1gr1d@mydea@onurtemizkan@cleptric@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

@Lms24@lforst@AbhiPrasad@andreiborza@s1gr1d@mydea@onurtemizkan@cleptric@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

@Lms24@lforst@AbhiPrasad@andreiborza@s1gr1d@mydea@onurtemizkan@cleptric@chargome
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

meta: Update CHANGELOG for 9.11.0 - #15967

Merged
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0
Apr 3, 2025
Merged

meta: Update CHANGELOG for 9.11.0#15967
Lms24 merged 23 commits into
masterfrom
prepare-release/9.11.0

Conversation

@Lms24

@Lms24Lms24 commented Apr 3, 2025

Copy link
Copy Markdown
Member

No description provided.

AbhiPrasadand others added 19 commits March 28, 2025 09:45
I experimented with a bunch of different approaches to register log
flushing implementations, but I found the cleanest and most performant
solution was to have log flushing logic live in clients.
This refactors the browser client to do that, and adds tests for all of
our flushing logic everywhere.
The bundle size increase is not ideal, but I recognize we have no
choice.
After this gets merged in, I'll add the console logging integration to
core. I'll also add some quick integrations for pino and winston.
[Gitflow] Merge master into develop
In preparation for OpenTelemetry v2, which targets ES2022, we bump the
checks to ES2022 for node-based packages.
As `require` is supported in ESM as well from [Node
20.19.0](https://nodejs.org/en/blog/release/v20.19.0) onwards, the check
does not work anymore. However, `module` is not available in ESM.
Also mentioned in this comment:
#14202 (comment)
[Node: Compatibility with
CommonJS](https://nodejs.org/docs/latest-v15.x/api/esm.html#esm_interoperability_with_commonjs)
[Bun: Using require](https://bun.sh/docs/runtime/modules#using-require)
Ref https://github.com/getsentry/projects/issues/837 for for not
truncating error messages and letting relay do that.
Kinda undoes #8593
Should be merged after
#15819 because
otherwise, we keep humongous strings in memory.
The bottleneck of many of the tasks written down in our Node SDK
performance improvement task
#15861 is
`parseUrl`, defined here:
https://github.com/getsentry/sentry-javascript/blob/3d63621714b31c1ea4c2ab2d90d5684a36805a43/packages/core/src/utils-hoist/url.ts#L17
We created #15767
to track removal of `parseUrl`. See more details in the GH issue.
While working on tasks for
#15767, I initially
PR'd #15768, which
introduced a `parseStringToURL` method as a replacement for `parseUrl`.
While trying to implement that method though I realized
`parseStringToURL` has a lot of downsides.
This PR removes `parseStringToURL` in favor of a new
`parseStringToURLObject`. Given `parseStringToURL` was never exported by
the core SDK, this is not a breaking change.
To understand `parseStringToURLObject`, let's first look at it's method
signature:
```ts
function parseStringToURLObject(url: string, urlBase?: string | URL | undefined): URLObject | undefined
```
`parseStringToURLObject` takes a string URL and turns it into a
`URLObject`, that is typed like so:
```ts
type RelativeURL = {
isRelative: true;
pathname: URL['pathname'];
search: URL['search'];
hash: URL['hash'];
};
type URLObject = RelativeURL | URL;
``` the JavaScript URL built-in does not handle relative URLs, so we need to
use a separate object to to track relative URLs. Luckily it's pretty
small surface area, we only need to worry about `pathname`, `search`,
and `hash`.
For ease of usage of this function, I also introduced a
`isURLObjectRelative` helper. This will make sure that users can handle
both relative and absolute URLs with ease.
Given `packages/core/src/fetch.ts` was using `parseStringToURL`, I
refactored that file to use `parseStringToURLObject`. The change feels
way better to me, much easier to read and understand what is going on.
This used to build into `/lib` which is not covered by nx (it was
changed there but slightly incorrectly, covering `/build/lib` instead of
`/lib`). But overall, the way to go here is to just use our standard
structure, which is `build/`, then this should all just work :D
When running some unit tests locally, I noticed that the coverage
summary contained files like `vite.config.ts` or `.eslintrc` as well as
transpiled code in `build`. These files shouldn't be in the coverage
reports and neither have an influence on the overall coverage score.
…ct` span (#15943)
Adds an `http.redirect_count` attribute to `browser.redirect`
spans. The count is taken from the `navigation` performance entry and it
describes the number of times a redirect happened.
Two caveats:
- we can't detect more about redirects (e.g. the location the browser
was redirected to)
- this only works for same-origin redirects. [According to
MDN](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/redirectCount#value),
cross-origin redirects are not taken into account.
…15957)
Temporarily add a span attribute for the previous trace to get trace links working in the EAP-based trace view. This needs to be removed once EAP properly supports span links.
Turns out we never added the release registry entry for nuxt. The
corresponding [folder exists in the release registry
repo](https://github.com/getsentry/sentry-release-registry/tree/master/packages/npm/%40sentry/nuxt).
@Lms24Lms24 self-assigned this Apr 3, 2025
…ap settings (#15859)
There is a total of 6 settings in Nuxt where you can disable/enable your
source maps. This is not only difficult to understand when writing and
maintaining the logic for this. It may also be hard to debug stuff for
users.
![image](https://github.com/user-attachments/assets/73ff315e-2000-4408-ba62-39bd10083378)
There is this discussion around Nuxt source maps:
#15028
And this issue:
#15160
A problem with the current setup was not only the difficulty to
understand all of this but also it sometimes just overwrote stuff you
didn't want it to. Like in the default case of Nuxt, `sourcemap.server`
is `true`, but as `nitro.rollupConfig.output.sourcemap` is always
undefined, Sentry would overwrite this setting to `'hidden'`, even
though the source maps were enabled already.
---
The only two relevant options in Nuxt are the [root-level sourcemap
options](https://nuxt.com/docs/guide/going-further/debugging#sourcemaps).
Those settings will propagate to nitro, vite and rollup.
As we overwrite the source maps setting if the setting is undefined,
only the basic Nuxt source map settings (linked above) are taken into
account for that from now on.
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from ef83d48 to c135bf5CompareApril 3, 2025 09:12
@Lms24
Lms24 requested review from lforst and s1gr1dApril 3, 2025 09:12
Adds `consoleLoggingIntegration` integration that takes calls to
`console.X` and flushes them as logs. For now this is an opt-in
integration. We can evaluate it's default status at a later point.
```js
import * as Sentry from '@sentry/browser'; // or any other supported sdk
Sentry.init({
// send console.log, console.error, and console.warn calls as logs to Sentry
integrations: [Sentry.consoleLoggingIntegration({ levels: ['log', 'error', 'warn'] })],
});
```
## Notes
In general we have inconsistencies with console instrumentation across
our different SDKs.
- In browser we have console instrumentation as part of the
`Breadcrumbs` integration.
- In node we have console instrumentation that generates breadcrumbs in
the `Console` integration
- In core we have console instrumentation, which generates errors and
messages via the `CaptureConsole` integration
For now because logs are experimental, making it a standalone
integration feels fine to me. As we get closer to GA status for logs
(and there is a distinct path for breadcrumbs) we should evaluate how
all of our console integrations are structured.
Co-authored-by: Luca Forstner <luca.forstner@sentry.io>
@Lms24
Lms24 changed the base branch from develop to masterApril 3, 2025 10:41
@Lms24
Lms24 marked this pull request as ready for review April 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24 requested a review from a team as a code ownerApril 3, 2025 10:41
@Lms24
Lms24force-pushed the prepare-release/9.11.0 branch from c135bf5 to 90ee178CompareApril 3, 2025 10:44
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.2 KBaddedadded
@sentry/browser - with treeshaking flags23.02 KBaddedadded
@sentry/browser (incl. Tracing)36.83 KBaddedadded
@sentry/browser (incl. Tracing, Replay)73.99 KBaddedadded
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags67.39 KBaddedadded
@sentry/browser (incl. Tracing, Replay with Canvas)78.66 KBaddedadded
@sentry/browser (incl. Tracing, Replay, Feedback)91.22 KBaddedadded
@sentry/browser (incl. Feedback)40.33 KBaddedadded
@sentry/browser (incl. sendFeedback)27.83 KBaddedadded
@sentry/browser (incl. FeedbackAsync)32.63 KBaddedadded
@sentry/react25 KBaddedadded
@sentry/react (incl. Tracing)38.75 KBaddedadded
@sentry/vue27.41 KBaddedadded
@sentry/vue (incl. Tracing)38.55 KBaddedadded
@sentry/svelte23.23 KBaddedadded
CDN Bundle24.44 KBaddedadded
CDN Bundle (incl. Tracing)36.85 KBaddedadded
CDN Bundle (incl. Tracing, Replay)71.87 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback)77.07 KBaddedadded
CDN Bundle - uncompressed71.24 KBaddedadded
CDN Bundle (incl. Tracing) - uncompressed108.94 KBaddedadded
CDN Bundle (incl. Tracing, Replay) - uncompressed220.23 KBaddedadded
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed232.8 KBaddedadded
@sentry/nextjs (client)40.06 KBaddedadded
@sentry/sveltekit (client)37.26 KBaddedadded
@sentry/node142.88 KBaddedadded
@sentry/node - without tracing96.08 KBaddedadded
@sentry/aws-serverless120.43 KBaddedadded

@Lms24
Lms24 merged commit 1e407cb into masterApr 3, 2025
@Lms24
Lms24 deleted the prepare-release/9.11.0 branch April 3, 2025 12:08
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.

9 participants

@Lms24@lforst@AbhiPrasad@andreiborza@s1gr1d@mydea@onurtemizkan@cleptric@chargome