Skip to content

Commit 2ca125b

Browse files
authored
Merge branch 'develop' into lms/feat-browser-elementtiming
2 parents 0433939 + 23127b6 commit 2ca125b

File tree

72 files changed

+1049
-318
lines changed

Some content is hidden

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

72 files changed

+1049
-318
lines changed

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44

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

7+
## 9.30.0
8+
9+
- feat(nextjs): Add URL to tags of server components and generation functions issues ([#16500](https://github.com/getsentry/sentry-javascript/pull/16500))
10+
- feat(nextjs): Ensure all packages we auto-instrument are externalized ([#16552](https://github.com/getsentry/sentry-javascript/pull/16552))
11+
- feat(node): Automatically enable `vercelAiIntegration` when `ai` module is detected ([#16565](https://github.com/getsentry/sentry-javascript/pull/16565))
12+
- feat(node): Ensure `modulesIntegration` works in more environments ([#16566](https://github.com/getsentry/sentry-javascript/pull/16566))
13+
- feat(core): Don't gate user on logs with `sendDefaultPii` ([#16527](https://github.com/getsentry/sentry-javascript/pull/16527))
14+
- feat(browser): Add detail to measure spans and add regression tests ([#16557](https://github.com/getsentry/sentry-javascript/pull/16557))
15+
- feat(node): Update Vercel AI span attributes ([#16580](https://github.com/getsentry/sentry-javascript/pull/16580))
16+
- fix(opentelemetry): Ensure only orphaned spans of sent spans are sent ([#16590](https://github.com/getsentry/sentry-javascript/pull/16590))
17+
718
## 9.29.0
819

920
### Important Changes

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/browser-integration-tests",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"main": "index.js",
55
"license": "MIT",
66
"engines": {
@@ -42,7 +42,7 @@
4242
"@babel/preset-typescript": "^7.16.7",
4343
"@playwright/test": "~1.50.0",
4444
"@sentry-internal/rrweb": "2.34.0",
45-
"@sentry/browser": "9.29.0",
45+
"@sentry/browser": "9.30.0",
4646
"@supabase/supabase-js": "2.49.3",
4747
"axios": "1.8.2",
4848
"babel-loader": "^8.2.2",

dev-packages/bundle-analyzer-scenarios/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/bundle-analyzer-scenarios",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"description": "Scenarios to test bundle analysis with",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/dev-packages/bundle-analyzer-scenarios",

dev-packages/clear-cache-gh-action/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@sentry-internal/clear-cache-gh-action",
33
"description": "An internal Github Action to clear GitHub caches.",
4-
"version": "9.29.0",
4+
"version": "9.30.0",
55
"license": "MIT",
66
"engines": {
77
"node": ">=18"

dev-packages/e2e-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/e2e-tests",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"license": "MIT",
55
"private": true,
66
"scripts": {

dev-packages/e2e-tests/test-applications/nextjs-14/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"@types/node": "^18.19.1",
1818
"@types/react": "18.0.26",
1919
"@types/react-dom": "18.0.9",
20-
"next": "14.1.3",
20+
"next": "14.2.30",
2121
"react": "18.2.0",
2222
"react-dom": "18.2.0",
2323
"typescript": "~5.0.0"

dev-packages/e2e-tests/test-applications/nextjs-15/tests/ai-test.test.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,15 @@ import { waitForTransaction } from '@sentry-internal/test-utils';
33

44
test('should create AI spans with correct attributes', async ({ page }) => {
55
const aiTransactionPromise = waitForTransaction('nextjs-15', async transactionEvent => {
6-
return transactionEvent?.transaction === 'ai-test';
6+
return transactionEvent.transaction === 'GET /ai-test';
77
});
88

99
await page.goto('/ai-test');
1010

1111
const aiTransaction = await aiTransactionPromise;
1212

1313
expect(aiTransaction).toBeDefined();
14-
expect(aiTransaction.contexts?.trace?.op).toBe('function');
15-
expect(aiTransaction.transaction).toBe('ai-test');
14+
expect(aiTransaction.transaction).toBe('GET /ai-test');
1615

1716
const spans = aiTransaction.spans || [];
1817

@@ -35,14 +34,14 @@ test('should create AI spans with correct attributes', async ({ page }) => {
3534
expect(firstPipelineSpan?.data?.['ai.model.id']).toBe('mock-model-id');
3635
expect(firstPipelineSpan?.data?.['ai.model.provider']).toBe('mock-provider');
3736
expect(firstPipelineSpan?.data?.['ai.prompt']).toContain('Where is the first span?');
38-
expect(firstPipelineSpan?.data?.['ai.response.text']).toBe('First span here!');
37+
expect(firstPipelineSpan?.data?.['gen_ai.response.text']).toBe('First span here!');
3938
expect(firstPipelineSpan?.data?.['gen_ai.usage.input_tokens']).toBe(10);
4039
expect(firstPipelineSpan?.data?.['gen_ai.usage.output_tokens']).toBe(20); */
4140

4241
// Second AI call - explicitly enabled telemetry
4342
const secondPipelineSpan = aiPipelineSpans[0];
4443
expect(secondPipelineSpan?.data?.['ai.prompt']).toContain('Where is the second span?');
45-
expect(secondPipelineSpan?.data?.['ai.response.text']).toContain('Second span here!');
44+
expect(secondPipelineSpan?.data?.['gen_ai.response.text']).toContain('Second span here!');
4645

4746
// Third AI call - with tool calls
4847
/* const thirdPipelineSpan = aiPipelineSpans[2];
@@ -51,7 +50,7 @@ test('should create AI spans with correct attributes', async ({ page }) => {
5150
expect(thirdPipelineSpan?.data?.['gen_ai.usage.output_tokens']).toBe(25); */
5251

5352
// Tool call span
54-
/* const toolSpan = toolCallSpans[0];
53+
/* const toolSpan = toolCallSpans[0];
5554
expect(toolSpan?.data?.['ai.toolCall.name']).toBe('getWeather');
5655
expect(toolSpan?.data?.['ai.toolCall.id']).toBe('call-1');
5756
expect(toolSpan?.data?.['ai.toolCall.args']).toContain('San Francisco');

dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/server-components.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ test('Sends a transaction for a request to app router', async ({ page }) => {
3939
headers: expect.objectContaining({
4040
'user-agent': expect.any(String),
4141
}),
42+
url: expect.stringContaining('/server-component/parameter/1337/42'),
4243
});
4344

4445
// The transaction should not contain any spans with the same name as the transaction

dev-packages/external-contributor-gh-action/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@sentry-internal/external-contributor-gh-action",
33
"description": "An internal Github Action to add external contributors to the CHANGELOG.md file.",
4-
"version": "9.29.0",
4+
"version": "9.30.0",
55
"license": "MIT",
66
"engines": {
77
"node": ">=18"

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/node-integration-tests",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"license": "MIT",
55
"engines": {
66
"node": ">=18"
@@ -30,9 +30,9 @@
3030
"@nestjs/common": "11.0.16",
3131
"@nestjs/core": "10.4.6",
3232
"@nestjs/platform-express": "10.4.6",
33-
"@sentry/aws-serverless": "9.29.0",
34-
"@sentry/core": "9.29.0",
35-
"@sentry/node": "9.29.0",
33+
"@sentry/aws-serverless": "9.30.0",
34+
"@sentry/core": "9.30.0",
35+
"@sentry/node": "9.30.0",
3636
"@types/mongodb": "^3.6.20",
3737
"@types/mysql": "^2.15.21",
3838
"@types/pg": "^8.6.5",

dev-packages/node-integration-tests/suites/tracing/vercelai/instrument-with-pii.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ Sentry.init({
77
tracesSampleRate: 1.0,
88
sendDefaultPii: true,
99
transport: loggingTransport,
10-
integrations: [Sentry.vercelAIIntegration()],
10+
integrations: [Sentry.vercelAIIntegration({ force: true })],
1111
});

dev-packages/node-integration-tests/suites/tracing/vercelai/instrument.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ Sentry.init({
66
release: '1.0',
77
tracesSampleRate: 1.0,
88
transport: loggingTransport,
9-
integrations: [Sentry.vercelAIIntegration()],
9+
integrations: [Sentry.vercelAIIntegration({ force: true })],
1010
});

dev-packages/node-integration-tests/suites/tracing/vercelai/test.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ describe('Vercel AI integration', () => {
7373
'ai.pipeline.name': 'generateText',
7474
'ai.prompt': '{"prompt":"Where is the second span?"}',
7575
'ai.response.finishReason': 'stop',
76-
'ai.response.text': expect.any(String),
76+
'gen_ai.response.text': expect.any(String),
7777
'ai.settings.maxRetries': 2,
7878
'ai.settings.maxSteps': 1,
7979
'ai.streaming': false,
@@ -108,10 +108,10 @@ describe('Vercel AI integration', () => {
108108
'ai.response.finishReason': 'stop',
109109
'ai.response.model': 'mock-model-id',
110110
'ai.response.id': expect.any(String),
111-
'ai.response.text': expect.any(String),
111+
'gen_ai.response.text': expect.any(String),
112112
'ai.response.timestamp': expect.any(String),
113113
'ai.prompt.format': expect.any(String),
114-
'ai.prompt.messages': expect.any(String),
114+
'gen_ai.request.messages': expect.any(String),
115115
'gen_ai.response.finish_reasons': ['stop'],
116116
'gen_ai.usage.input_tokens': 10,
117117
'gen_ai.usage.output_tokens': 20,
@@ -210,7 +210,7 @@ describe('Vercel AI integration', () => {
210210
'ai.pipeline.name': 'generateText',
211211
'ai.prompt': '{"prompt":"Where is the first span?"}',
212212
'ai.response.finishReason': 'stop',
213-
'ai.response.text': 'First span here!',
213+
'gen_ai.response.text': 'First span here!',
214214
'ai.settings.maxRetries': 2,
215215
'ai.settings.maxSteps': 1,
216216
'ai.streaming': false,
@@ -236,11 +236,11 @@ describe('Vercel AI integration', () => {
236236
'ai.operationId': 'ai.generateText.doGenerate',
237237
'ai.pipeline.name': 'generateText.doGenerate',
238238
'ai.prompt.format': 'prompt',
239-
'ai.prompt.messages': '[{"role":"user","content":[{"type":"text","text":"Where is the first span?"}]}]',
239+
'gen_ai.request.messages': '[{"role":"user","content":[{"type":"text","text":"Where is the first span?"}]}]',
240240
'ai.response.finishReason': 'stop',
241241
'ai.response.id': expect.any(String),
242242
'ai.response.model': 'mock-model-id',
243-
'ai.response.text': 'First span here!',
243+
'gen_ai.response.text': 'First span here!',
244244
'ai.response.timestamp': expect.any(String),
245245
'ai.settings.maxRetries': 2,
246246
'ai.streaming': false,
@@ -270,7 +270,7 @@ describe('Vercel AI integration', () => {
270270
'ai.pipeline.name': 'generateText',
271271
'ai.prompt': '{"prompt":"Where is the second span?"}',
272272
'ai.response.finishReason': 'stop',
273-
'ai.response.text': expect.any(String),
273+
'gen_ai.response.text': expect.any(String),
274274
'ai.settings.maxRetries': 2,
275275
'ai.settings.maxSteps': 1,
276276
'ai.streaming': false,
@@ -305,10 +305,10 @@ describe('Vercel AI integration', () => {
305305
'ai.response.finishReason': 'stop',
306306
'ai.response.model': 'mock-model-id',
307307
'ai.response.id': expect.any(String),
308-
'ai.response.text': expect.any(String),
308+
'gen_ai.response.text': expect.any(String),
309309
'ai.response.timestamp': expect.any(String),
310310
'ai.prompt.format': expect.any(String),
311-
'ai.prompt.messages': expect.any(String),
311+
'gen_ai.request.messages': expect.any(String),
312312
'gen_ai.response.finish_reasons': ['stop'],
313313
'gen_ai.usage.input_tokens': 10,
314314
'gen_ai.usage.output_tokens': 20,
@@ -330,8 +330,8 @@ describe('Vercel AI integration', () => {
330330
'ai.pipeline.name': 'generateText',
331331
'ai.prompt': '{"prompt":"What is the weather in San Francisco?"}',
332332
'ai.response.finishReason': 'tool-calls',
333-
'ai.response.text': 'Tool call completed!',
334-
'ai.response.toolCalls': expect.any(String),
333+
'gen_ai.response.text': 'Tool call completed!',
334+
'gen_ai.response.tool_calls': expect.any(String),
335335
'ai.settings.maxRetries': 2,
336336
'ai.settings.maxSteps': 1,
337337
'ai.streaming': false,
@@ -357,15 +357,15 @@ describe('Vercel AI integration', () => {
357357
'ai.operationId': 'ai.generateText.doGenerate',
358358
'ai.pipeline.name': 'generateText.doGenerate',
359359
'ai.prompt.format': expect.any(String),
360-
'ai.prompt.messages': expect.any(String),
360+
'gen_ai.request.messages': expect.any(String),
361361
'ai.prompt.toolChoice': expect.any(String),
362-
'ai.prompt.tools': expect.any(Array),
362+
'gen_ai.request.available_tools': expect.any(Array),
363363
'ai.response.finishReason': 'tool-calls',
364364
'ai.response.id': expect.any(String),
365365
'ai.response.model': 'mock-model-id',
366-
'ai.response.text': 'Tool call completed!',
366+
'gen_ai.response.text': 'Tool call completed!',
367367
'ai.response.timestamp': expect.any(String),
368-
'ai.response.toolCalls': expect.any(String),
368+
'gen_ai.response.tool_calls': expect.any(String),
369369
'ai.settings.maxRetries': 2,
370370
'ai.streaming': false,
371371
'gen_ai.request.model': 'mock-model-id',

dev-packages/opentelemetry-v2-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/opentelemetry-v2-tests",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"private": true,
55
"description": "Tests for @sentry/opentelemetry with OpenTelemetry v2",
66
"engines": {

dev-packages/rollup-utils/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/rollup-utils",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils",

dev-packages/size-limit-gh-action/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@sentry-internal/size-limit-gh-action",
33
"description": "An internal Github Action to compare the current size of a PR against the one on develop.",
4-
"version": "9.29.0",
4+
"version": "9.30.0",
55
"license": "MIT",
66
"engines": {
77
"node": ">=18"

dev-packages/test-utils/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"private": true,
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"name": "@sentry-internal/test-utils",
55
"author": "Sentry",
66
"license": "MIT",
@@ -45,7 +45,7 @@
4545
},
4646
"devDependencies": {
4747
"@playwright/test": "~1.50.0",
48-
"@sentry/core": "9.29.0"
48+
"@sentry/core": "9.30.0"
4949
},
5050
"volta": {
5151
"extends": "../../package.json"

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"npmClient": "yarn"
55
}

packages/angular/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/angular",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"description": "Official Sentry SDK for Angular",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular",
@@ -21,8 +21,8 @@
2121
"rxjs": "^6.5.5 || ^7.x"
2222
},
2323
"dependencies": {
24-
"@sentry/browser": "9.29.0",
25-
"@sentry/core": "9.29.0",
24+
"@sentry/browser": "9.30.0",
25+
"@sentry/core": "9.30.0",
2626
"tslib": "^2.4.1"
2727
},
2828
"devDependencies": {

packages/astro/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/astro",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"description": "Official Sentry SDK for Astro",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro",
@@ -56,9 +56,9 @@
5656
"astro": ">=3.x || >=4.0.0-beta || >=5.x"
5757
},
5858
"dependencies": {
59-
"@sentry/browser": "9.29.0",
60-
"@sentry/core": "9.29.0",
61-
"@sentry/node": "9.29.0",
59+
"@sentry/browser": "9.30.0",
60+
"@sentry/core": "9.30.0",
61+
"@sentry/node": "9.30.0",
6262
"@sentry/vite-plugin": "^2.22.6"
6363
},
6464
"devDependencies": {

packages/aws-serverless/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry/aws-serverless",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"description": "Official Sentry SDK for AWS Lambda and AWS Serverless Environments",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless",
@@ -68,8 +68,8 @@
6868
"@opentelemetry/instrumentation": "^0.57.2",
6969
"@opentelemetry/instrumentation-aws-lambda": "0.50.3",
7070
"@opentelemetry/instrumentation-aws-sdk": "0.49.1",
71-
"@sentry/core": "9.29.0",
72-
"@sentry/node": "9.29.0",
71+
"@sentry/core": "9.30.0",
72+
"@sentry/node": "9.30.0",
7373
"@types/aws-lambda": "^8.10.62"
7474
},
7575
"devDependencies": {

packages/browser-utils/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/browser-utils",
3-
"version": "9.29.0",
3+
"version": "9.30.0",
44
"description": "Browser Utilities for all Sentry JavaScript SDKs",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser-utils",
@@ -39,7 +39,7 @@
3939
"access": "public"
4040
},
4141
"dependencies": {
42-
"@sentry/core": "9.29.0"
42+
"@sentry/core": "9.30.0"
4343
},
4444
"scripts": {
4545
"build": "run-p build:transpile build:types",

0 commit comments

Comments
 (0)