Skip to content

Commit 2499b42

Browse files
authored
Merge branch 'develop' into billy/replay-575-replay-w-linked-errors-from-prior-week
2 parents 46cbaf2 + 420d3c6 commit 2499b42

File tree

206 files changed

+7774
-2991
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

206 files changed

+7774
-2991
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Release Command
2+
3+
Execute the standard Sentry JavaScript SDK release process.
4+
5+
Find the "publishing_release" rule in `.cursor/rules/publishing_release` and follow those complete instructions step by step.

.github/ISSUE_TEMPLATE/bug.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ body:
5151
- '@sentry/nestjs'
5252
- '@sentry/nextjs'
5353
- '@sentry/nuxt'
54-
- '@sentry/pino-transport'
5554
- '@sentry/react'
5655
- '@sentry/react-router'
5756
- '@sentry/remix'

.github/dependabot.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,5 @@ updates:
2222
prefix: feat
2323
prefix-development: feat
2424
include: scope
25+
exclude-paths:
26+
- 'dev-packages/e2e-tests/test-applications/'

CHANGELOG.md

Lines changed: 139 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,142 @@
44

55
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
66

7+
## 10.18.0
8+
9+
### Important Changes
10+
11+
- **feat(node): `pino` integration ([#17584](https://github.com/getsentry/sentry-javascript/pull/17584))**
12+
13+
This release adds a new `pino` integration for Node.js, enabling Sentry to capture logs from the Pino logging library.
14+
15+
- **feat: Remove @sentry/pino-transport package ([#17851](https://github.com/getsentry/sentry-javascript/pull/17851))**
16+
17+
The `@sentry/pino-transport` package has been removed. Please use the new `pino` integration in `@sentry/node` instead.
18+
19+
- **feat(node-core): Extend onnhandledrejection with ignore errors option ([#17736](https://github.com/getsentry/sentry-javascript/pull/17736))**
20+
21+
Added support for selectively suppressing specific errors with configurable logging control in onnhandledrejection integration.
22+
23+
### Other Changes
24+
25+
- feat(core): Rename vercelai.schema to gen_ai.request.schema ([#17850](https://github.com/getsentry/sentry-javascript/pull/17850))
26+
- feat(core): Support stream responses and tool calls for Google GenAI ([#17664](https://github.com/getsentry/sentry-javascript/pull/17664))
27+
- feat(nextjs): Attach headers using client hook ([#17831](https://github.com/getsentry/sentry-javascript/pull/17831))
28+
- fix(core): Keep all property values in baggage header ([#17847](https://github.com/getsentry/sentry-javascript/pull/17847))
29+
- fix(nestjs): Add support for Symbol as event name ([#17785](https://github.com/getsentry/sentry-javascript/pull/17785))
30+
- fix(nuxt): include `sentry.client.config.ts` in nuxt app types ([#17830](https://github.com/getsentry/sentry-javascript/pull/17830))
31+
- fix(react-router): Fix type for `OriginalHandleRequest` with middleware ([#17870](https://github.com/getsentry/sentry-javascript/pull/17870))
32+
33+
<details>
34+
<summary> <strong>Internal Changes</strong> </summary>
35+
36+
- chore: Add external contributor to CHANGELOG.md ([#17866](https://github.com/getsentry/sentry-javascript/pull/17866))
37+
- chore(deps): Bump @sentry/cli from 2.53.0 to 2.56.0 ([#17819](https://github.com/getsentry/sentry-javascript/pull/17819))
38+
- chore(deps): Bump axios in browser integration tests ([#17839](https://github.com/getsentry/sentry-javascript/pull/17839))
39+
- chore(deps): Bump nestjs in integration tests ([#17840](https://github.com/getsentry/sentry-javascript/pull/17840))
40+
41+
</details>
42+
43+
Work in this release was contributed by @stefanvanderwolf. Thank you for your contribution!
44+
45+
## 10.17.0
46+
47+
### Important Changes
48+
49+
- **feat(nuxt): Implement server middleware instrumentation ([#17796](https://github.com/getsentry/sentry-javascript/pull/17796))**
50+
51+
This release introduces instrumentation for Nuxt middleware, ensuring that all middleware handlers are automatically wrapped with tracing and error reporting functionality.
52+
53+
- **fix(aws-serverless): Take `http_proxy` into account when choosing
54+
`useLayerExtension` default ([#17817](https://github.com/getsentry/sentry-javascript/pull/17817))**
55+
56+
The default setting for `useLayerExtension` now considers the `http_proxy` environment variable.
57+
When `http_proxy` is set, `useLayerExtension` will be off by default.
58+
If you use a `http_proxy` but would still like to make use of the Sentry Lambda extension, exempt `localhost` in a `no_proxy` environment variable.
59+
60+
### Other Changes
61+
62+
- feat(node): Split up http integration into composable parts ([#17524](https://github.com/getsentry/sentry-javascript/pull/17524))
63+
- fix(core): Remove check and always respect ai.telemetry.functionId for Vercel AI gen spans ([#17811](https://github.com/getsentry/sentry-javascript/pull/17811))
64+
- doc(core): Fix outdated JSDoc in `beforeSendSpan` ([#17815](https://github.com/getsentry/sentry-javascript/pull/17815))
65+
66+
<details>
67+
<summary> <strong>Internal Changes</strong> </summary>
68+
69+
- ci: Do not run dependabot on e2e test applications ([#17813](https://github.com/getsentry/sentry-javascript/pull/17813))
70+
- docs: Reword changelog for google gen ai integration ([#17805](https://github.com/getsentry/sentry-javascript/pull/17805))
71+
72+
</details>
73+
74+
## 10.16.0
75+
76+
- feat(logs): Add internal `replay_is_buffering` flag ([#17752](https://github.com/getsentry/sentry-javascript/pull/17752))
77+
- feat(react-router): Update loadContext type to be compatible with middleware ([#17758](https://github.com/getsentry/sentry-javascript/pull/17758))
78+
- feat(replay/logs): Only attach sampled replay Ids to logs ([#17750](https://github.com/getsentry/sentry-javascript/pull/17750))
79+
- fix(browser): Use current start timestamp for CLS span when CLS is 0 ([#17800](https://github.com/getsentry/sentry-javascript/pull/17800))
80+
- fix(core): Prevent `instrumentAnthropicAiClient` breaking MessageStream api ([#17754](https://github.com/getsentry/sentry-javascript/pull/17754))
81+
- fix(nextjs): Don't use chalk in turbopack config file ([#17806](https://github.com/getsentry/sentry-javascript/pull/17806))
82+
- fix(react): Do not send additional navigation span on pageload ([#17799](https://github.com/getsentry/sentry-javascript/pull/17799))
83+
84+
<details>
85+
<summary> <strong>Internal Changes</strong> </summary>
86+
87+
- build(aws): Ensure AWS build cache does not keep old files ([#17776](https://github.com/getsentry/sentry-javascript/pull/17776))
88+
- chore: Add `publish_release` command ([#17797](https://github.com/getsentry/sentry-javascript/pull/17797))
89+
- ref(aws-serverless): Add resolution for `import-in-the-middle` when building the Lambda layer ([#17780](https://github.com/getsentry/sentry-javascript/pull/17780))
90+
- ref(aws-serverless): Improve README with better examples ([#17787](https://github.com/getsentry/sentry-javascript/pull/17787))
91+
- ref(core): Improve promise buffer ([#17788](https://github.com/getsentry/sentry-javascript/pull/17788))
92+
- Revert "test(e2e): Pin `[email protected]` due to `@vercel/nft` incompatibility ([#17777](https://github.com/getsentry/sentry-javascript/pull/17777))" (#17784)
93+
- test(e2e): Pin `[email protected]` due to `@vercel/nft` incompatibility ([#17777](https://github.com/getsentry/sentry-javascript/pull/17777))
94+
- test(nextjs): Add route handler tests for turbopack ([#17515](https://github.com/getsentry/sentry-javascript/pull/17515))
95+
- test(react-router): Test v8 middleware ([#17783](https://github.com/getsentry/sentry-javascript/pull/17783))
96+
97+
</details>
98+
99+
## 10.15.0
100+
101+
### Important Changes
102+
103+
- **feat(cloudflare): Add honoIntegration with error-filtering function ([#17743](https://github.com/getsentry/sentry-javascript/pull/17743))**
104+
105+
This release adds a `honoIntegration` to `@sentry/cloudflare`, which exposes a `shouldHandleError` function that lets you define which errors in `onError` should be captured.
106+
By default, Sentry captures exceptions with `error.status >= 500 || error.status <= 299`.
107+
108+
The integration is added by default, and it's possible to modify this behavior like this:
109+
110+
```js
111+
integrations: [
112+
honoIntegration({
113+
shouldHandleError: (err) => true; // always capture exceptions in onError
114+
})
115+
]
116+
```
117+
118+
- **feat(node): Add instrumentation for hono handler ([#17428](https://github.com/getsentry/sentry-javascript/pull/17428))**
119+
120+
This PR enhances the Hono integration by adding comprehensive handler instrumentation, error handling capabilities.
121+
122+
- **feat(aws): Enable Lambda extension by default when using the Lamba layer ([#17684](https://github.com/getsentry/sentry-javascript/pull/17684))**
123+
124+
- **feat(browser): Add `setActiveSpanInBrowser` to set an active span in the browser ([#17714](https://github.com/getsentry/sentry-javascript/pull/17714))**
125+
126+
This PR adds a feature to the browser SDKs only: Making an inactive span active. We do this to enable use cases where having a span only being active in the callback is not practical.
127+
128+
### Other Changes
129+
130+
- fix(browser): Improve handling of `0` and `undefined` resource timing values ([#17751](https://github.com/getsentry/sentry-javascript/pull/17751))
131+
- ref(nextjs): Display build compatibility warning for webpack ([#17746](https://github.com/getsentry/sentry-javascript/pull/17746))
132+
133+
<details>
134+
<summary> <strong>Internal Changes</strong> </summary>
135+
136+
- docs: Reword changelog for google gen ai instrumentation ([#17753](https://github.com/getsentry/sentry-javascript/pull/17753))
137+
- build: Add `@typescript-eslint/no-unnecessary-type-assertion` rule ([#17728](https://github.com/getsentry/sentry-javascript/pull/17728))
138+
- build: Update TS target to `es2020` everywhere ([#17709](https://github.com/getsentry/sentry-javascript/pull/17709))
139+
- chore: Add external contributor to CHANGELOG.md ([#17745](https://github.com/getsentry/sentry-javascript/pull/17745))
140+
141+
</details>
142+
7143
Work in this release was contributed by @Karibash. Thank you for your contribution!
8144

9145
## 10.14.0
@@ -12,7 +148,7 @@ Work in this release was contributed by @Karibash. Thank you for your contributi
12148

13149
- **feat(cloudflare,vercel-edge): Add support for Google Gen AI instrumentation ([#17723](https://github.com/getsentry/sentry-javascript/pull/17723))**
14150

15-
The SDK now automatically instruments Google's Generative AI operations in Cloudflare Workers and Vercel Edge Runtime environments, providing insights into your AI operations.
151+
The SDK now supports manually instrumenting Google's Gen AI operations in Cloudflare Workers and Vercel Edge Runtime environments, providing insights into your AI operations. You can use `const wrappedClient = Sentry.instrumentGoogleGenAIClient(genAiClient)` to get an instrumented client.
16152

17153
### Other Changes
18154

@@ -50,9 +186,9 @@ Work in this release was contributed by @Karibash. Thank you for your contributi
50186

51187
Note that if `Sentry.reportPageLoaded()` is not called within 30 seconds of the initial pageload (or whatever value the `finalTimeout` option is set to), the pageload span will be ended automatically.
52188

53-
- **feat(core,node): Add instrumentation for `GoogleGenerativeAI` ([#17625](https://github.com/getsentry/sentry-javascript/pull/17625))**
189+
- **feat(core,node): Add instrumentation for `GoogleGenAI` ([#17625](https://github.com/getsentry/sentry-javascript/pull/17625))**
54190

55-
The SDK now automatically instruments the `@google/generative-ai` package to provide insights into your AI operations.
191+
The SDK now automatically instruments the `@google/genai` package to provide insights into your AI operations.
56192

57193
- **feat(nextjs): Promote `useRunAfterProductionCompileHook` to non-experimental build option ([#17721](https://github.com/getsentry/sentry-javascript/pull/17721))**
58194

dev-packages/browser-integration-tests/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/browser-integration-tests",
3-
"version": "10.14.0",
3+
"version": "10.18.0",
44
"main": "index.js",
55
"license": "MIT",
66
"engines": {
@@ -43,9 +43,9 @@
4343
"@babel/preset-typescript": "^7.16.7",
4444
"@playwright/test": "~1.53.2",
4545
"@sentry-internal/rrweb": "2.34.0",
46-
"@sentry/browser": "10.14.0",
46+
"@sentry/browser": "10.18.0",
4747
"@supabase/supabase-js": "2.49.3",
48-
"axios": "1.8.2",
48+
"axios": "^1.12.2",
4949
"babel-loader": "^8.2.2",
5050
"fflate": "0.8.2",
5151
"html-webpack-plugin": "^5.5.0",
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
fetchButton.addEventListener('click', () => {
2+
// W3C spec example: property values can contain = signs
3+
// See: https://www.w3.org/TR/baggage/#example
4+
fetch('http://sentry-test-site.example/fetch-test', {
5+
headers: {
6+
baggage: 'key1=value1;property1;property2,key2=value2,key3=value3; propertyKey=propertyValue',
7+
},
8+
});
9+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Fetch Baggage Property Values Test</title>
7+
</head>
8+
<body>
9+
<button id="fetchButton">Make Fetch Request</button>
10+
</body>
11+
</html>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { expect } from '@playwright/test';
2+
import { TRACEPARENT_REGEXP } from '@sentry/core';
3+
import { sentryTest } from '../../../../utils/fixtures';
4+
import { shouldSkipTracingTest } from '../../../../utils/helpers';
5+
6+
sentryTest(
7+
'preserves baggage property values with equal signs in fetch requests',
8+
async ({ getLocalTestUrl, page }) => {
9+
if (shouldSkipTracingTest()) {
10+
sentryTest.skip();
11+
}
12+
13+
const url = await getLocalTestUrl({ testDir: __dirname });
14+
15+
const requestPromise = page.waitForRequest('http://sentry-test-site.example/fetch-test');
16+
17+
await page.goto(url);
18+
await page.click('#fetchButton');
19+
20+
const request = await requestPromise;
21+
22+
const requestHeaders = request.headers();
23+
24+
expect(requestHeaders).toMatchObject({
25+
'sentry-trace': expect.stringMatching(TRACEPARENT_REGEXP),
26+
});
27+
28+
const baggageHeader = requestHeaders.baggage;
29+
expect(baggageHeader).toBeDefined();
30+
31+
const baggageItems = baggageHeader.split(',').map(item => decodeURIComponent(item.trim()));
32+
33+
// Verify property values with = signs are preserved
34+
expect(baggageItems).toContainEqual(expect.stringContaining('key1=value1;property1;property2'));
35+
expect(baggageItems).toContainEqual(expect.stringContaining('key2=value2'));
36+
expect(baggageItems).toContainEqual(expect.stringContaining('key3=value3; propertyKey=propertyValue'));
37+
38+
// Verify Sentry baggage is also present
39+
expect(baggageHeader).toMatch(/sentry-/);
40+
},
41+
);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const xhr = new XMLHttpRequest();
2+
3+
xhr.open('GET', 'http://sentry-test-site.example/1');
4+
// W3C spec example: property values can contain = signs
5+
// See: https://www.w3.org/TR/baggage/#example
6+
xhr.setRequestHeader('baggage', 'key1=value1;property1;property2,key2=value2,key3=value3; propertyKey=propertyValue');
7+
8+
xhr.send();
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { expect } from '@playwright/test';
2+
import { TRACEPARENT_REGEXP } from '@sentry/core';
3+
import { sentryTest } from '../../../../utils/fixtures';
4+
import { shouldSkipTracingTest } from '../../../../utils/helpers';
5+
6+
sentryTest('preserves baggage property values with equal signs in XHR requests', async ({ getLocalTestUrl, page }) => {
7+
if (shouldSkipTracingTest()) {
8+
sentryTest.skip();
9+
}
10+
11+
const url = await getLocalTestUrl({ testDir: __dirname });
12+
13+
const requestPromise = page.waitForRequest('http://sentry-test-site.example/1');
14+
15+
await page.goto(url);
16+
17+
const request = await requestPromise;
18+
19+
const requestHeaders = request.headers();
20+
21+
expect(requestHeaders).toMatchObject({
22+
'sentry-trace': expect.stringMatching(TRACEPARENT_REGEXP),
23+
});
24+
25+
const baggageHeader = requestHeaders.baggage;
26+
expect(baggageHeader).toBeDefined();
27+
const baggageItems = baggageHeader.split(',').map(item => decodeURIComponent(item.trim()));
28+
29+
// Verify property values with = signs are preserved
30+
expect(baggageItems).toContainEqual(expect.stringContaining('key1=value1;property1;property2'));
31+
expect(baggageItems).toContainEqual(expect.stringContaining('key2=value2'));
32+
expect(baggageItems).toContainEqual(expect.stringContaining('key3=value3; propertyKey=propertyValue'));
33+
34+
// Verify Sentry baggage is also present
35+
expect(baggageHeader).toMatch(/sentry-/);
36+
});

0 commit comments

Comments
 (0)