Skip to content

Commit f66969d

Browse files
authored
Merge branch 'develop' into timfish/fix/profiling-debug-images
2 parents 6d9a7f7 + 65afa6a commit f66969d

205 files changed

Lines changed: 3815 additions & 685 deletions

File tree

Some content is hidden

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

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,7 @@ jobs:
572572
- bundle_tracing_replay
573573
- bundle_tracing_replay_feedback
574574
- bundle_tracing_replay_feedback_min
575+
- bundle_tracing_replay_feedback_logs_metrics
575576
project:
576577
- chromium
577578
include:

.github/workflows/external-contributors.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,17 @@ jobs:
3535
name: ${{ github.event.pull_request.user.login }}
3636
author_association: ${{ github.event.pull_request.author_association }}
3737

38+
- name: Generate GitHub App token
39+
id: app-token
40+
uses: actions/create-github-app-token@v1
41+
with:
42+
app-id: ${{ vars.GITFLOW_APP_ID }}
43+
private-key: ${{ secrets.GITFLOW_APP_PRIVATE_KEY }}
44+
3845
- name: Create PR with changes
3946
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725
4047
with:
41-
# This token is scoped to Daniel Griesser
42-
# If we used the default GITHUB_TOKEN, the resulting PR would not trigger CI :(
43-
token: ${{ secrets.REPO_SCOPED_TOKEN }}
48+
token: ${{ steps.app-token.outputs.token }}
4449
commit-message: 'chore: Add external contributor to CHANGELOG.md'
4550
title: 'chore: Add external contributor to CHANGELOG.md'
4651
branch: 'external-contributor/patch-${{ github.event.pull_request.user.login }}'

.github/workflows/gitflow-sync-develop.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ jobs:
2525
- name: git checkout
2626
uses: actions/checkout@v6
2727

28+
- name: Generate GitHub App token
29+
id: app-token
30+
uses: actions/create-github-app-token@v1
31+
with:
32+
app-id: ${{ vars.GITFLOW_APP_ID }}
33+
private-key: ${{ secrets.GITFLOW_APP_PRIVATE_KEY }}
34+
2835
# https://github.com/marketplace/actions/github-pull-request-action
2936
- name: Create Pull Request
3037
id: open-pr
@@ -35,8 +42,7 @@ jobs:
3542
pr_title: '[Gitflow] Merge ${{ env.SOURCE_BRANCH }} into ${{ env.TARGET_BRANCH }}'
3643
pr_body: 'Merge ${{ env.SOURCE_BRANCH }} branch into ${{ env.TARGET_BRANCH }}'
3744
pr_label: 'Dev: Gitflow'
38-
# This token is scoped to Daniel Griesser
39-
github_token: ${{ secrets.REPO_SCOPED_TOKEN }}
45+
github_token: ${{ steps.app-token.outputs.token }}
4046

4147
- name: Enable automerge for PR
4248
if: steps.open-pr.outputs.pr_number != ''

.size-limit.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ module.exports = [
3838
path: 'packages/browser/build/npm/esm/prod/index.js',
3939
import: createImport('init', 'browserTracingIntegration'),
4040
gzip: true,
41-
limit: '42 KB',
41+
limit: '43 KB',
4242
},
4343
{
4444
name: '@sentry/browser (incl. Tracing, Profiling)',
@@ -204,6 +204,12 @@ module.exports = [
204204
gzip: true,
205205
limit: '86 KB',
206206
},
207+
{
208+
name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)',
209+
path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'),
210+
gzip: true,
211+
limit: '86 KB',
212+
},
207213
// browser CDN bundles (non-gzipped)
208214
{
209215
name: 'CDN Bundle - uncompressed',
@@ -240,6 +246,13 @@ module.exports = [
240246
brotli: false,
241247
limit: '264 KB',
242248
},
249+
{
250+
name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed',
251+
path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'),
252+
gzip: false,
253+
brotli: false,
254+
limit: '264 KB',
255+
},
243256
// Next.js SDK (ESM)
244257
{
245258
name: '@sentry/nextjs (client)',
@@ -274,7 +287,7 @@ module.exports = [
274287
import: createImport('init'),
275288
ignore: [...builtinModules, ...nodePrefixedBuiltinModules],
276289
gzip: true,
277-
limit: '163 KB',
290+
limit: '166 KB',
278291
},
279292
{
280293
name: '@sentry/node - without tracing',

CHANGELOG.md

Lines changed: 122 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,111 @@
44

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

7-
- **feat(tanstackstart-react): Add `wrapMiddlewaresWithSentry` for manual middleware instrumentation**
7+
### Other Changes
8+
9+
- feat(deps): Bump OpenTelemetry dependencies
10+
- Bump @opentelemetry/context-async-hooks from 2.2.0 to 2.4.0
11+
- Bump @opentelemetry/core from 2.2.0 to 2.4.0
12+
- Bump @opentelemetry/resources from 2.2.0 to 2.4.0
13+
- Bump @opentelemetry/sdk-trace-base from 2.2.0 to 2.4.0
14+
- Bump @opentelemetry/sdk-trace-node from 2.2.0 to 2.4.0
15+
- Bump @opentelemetry/instrumentation from 0.208.0 to 0.210.0
16+
- Bump @opentelemetry/instrumentation-amqplib from 0.55.0 to 0.57.0
17+
- Bump @opentelemetry/instrumentation-connect from 0.52.0 to 0.53.0
18+
- Bump @opentelemetry/instrumentation-dataloader from 0.26.0 to 0.27.0
19+
- Bump @opentelemetry/instrumentation-express from 0.57.0 to 0.58.0
20+
- Bump @opentelemetry/instrumentation-fs from 0.28.0 to 0.29.0
21+
- Bump @opentelemetry/instrumentation-generic-pool from 0.52.0 to 0.53.0
22+
- Bump @opentelemetry/instrumentation-graphql from 0.56.0 to 0.57.0
23+
- Bump @opentelemetry/instrumentation-hapi from 0.55.0 to 0.56.0
24+
- Bump @opentelemetry/instrumentation-http from 0.208.0 to 0.210.0
25+
- Bump @opentelemetry/instrumentation-ioredis from 0.56.0 to 0.58.0
26+
- Bump @opentelemetry/instrumentation-kafkajs from 0.18.0 to 0.19.0
27+
- Bump @opentelemetry/instrumentation-knex from 0.53.0 to 0.54.0
28+
- Bump @opentelemetry/instrumentation-koa from 0.57.0 to 0.58.0
29+
- Bump @opentelemetry/instrumentation-lru-memoizer from 0.53.0 to 0.54.0
30+
- Bump @opentelemetry/instrumentation-mongodb from 0.61.0 to 0.63.0
31+
- Bump @opentelemetry/instrumentation-mongoose from 0.55.0 to 0.56.0
32+
- Bump @opentelemetry/instrumentation-mysql from 0.54.0 to 0.56.0
33+
- Bump @opentelemetry/instrumentation-mysql2 from 0.55.0 to 0.56.0
34+
- Bump @opentelemetry/instrumentation-nestjs-core from 0.55.0 to 0.56.0
35+
- Bump @opentelemetry/instrumentation-pg from 0.61.0 to 0.62.0
36+
- Bump @opentelemetry/instrumentation-redis from 0.57.0 to 0.58.0
37+
- Bump @opentelemetry/instrumentation-tedious from 0.27.0 to 0.29.0
38+
- Bump @opentelemetry/instrumentation-undici from 0.19.0 to 0.20.0
39+
- Bump @opentelemetry/instrumentation-aws-sdk from 0.64.0 to 0.65.0
40+
- Bump @opentelemetry/sdk-node from 0.208.0 to 0.210.0
41+
- Bump @opentelemetry/exporter-trace-otlp-http from 0.208.0 to 0.210.0
42+
43+
## 10.35.0
44+
45+
### Important Changes
46+
47+
- **feat(tanstackstart-react): Add `sentryTanstackStart` vite plugin to manage automatic source map uploads ([#18712](https://github.com/getsentry/sentry-javascript/pull/18712))**
48+
49+
You can now configure source maps upload for TanStack Start using the `sentryTanstackStart` Vite plugin:
50+
51+
```ts
52+
// vite.config.ts
53+
import { defineConfig } from 'vite';
54+
import { sentryTanstackStart } from '@sentry/tanstackstart-react';
55+
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
56+
57+
export default defineConfig({
58+
plugins: [
59+
sentryTanstackStart({
60+
authToken: process.env.SENTRY_AUTH_TOKEN,
61+
org: 'your-org',
62+
project: 'your-project',
63+
}),
64+
tanstackStart(),
65+
],
66+
});
67+
```
68+
69+
### Other Changes
70+
71+
- feat(browser): Add CDN bundle for `tracing.replay.feedback.logs.metrics` ([#18785](https://github.com/getsentry/sentry-javascript/pull/18785))
72+
- feat(browser): Add shim package for logs ([#18831](https://github.com/getsentry/sentry-javascript/pull/18831))
73+
- feat(cloudflare): Automatically set the release id when CF_VERSION_METADATA is enabled ([#18855](https://github.com/getsentry/sentry-javascript/pull/18855))
74+
- feat(core): Add `ignored` client report event drop reason ([#18815](https://github.com/getsentry/sentry-javascript/pull/18815))
75+
- feat(logs): Add `Log` exports to browser and node packages ([#18857](https://github.com/getsentry/sentry-javascript/pull/18857))
76+
- feat(node-core,bun): Export processSessionIntegration from node-core and add it to bun ([#18852](https://github.com/getsentry/sentry-javascript/pull/18852))
77+
- fix(core): Find the correct IP address regardless their case ([#18880](https://github.com/getsentry/sentry-javascript/pull/18880))
78+
- fix(core): Check for AI operation id to detect a vercelai span ([#18823](https://github.com/getsentry/sentry-javascript/pull/18823))
79+
- fix(ember): Use ES5 syntax in inline vendor scripts ([#18858](https://github.com/getsentry/sentry-javascript/pull/18858))
80+
- fix(fetch): Shallow-clone fetch options to prevent mutation ([#18867](https://github.com/getsentry/sentry-javascript/pull/18867))
81+
82+
<details>
83+
<summary><strong>Internal Changes</strong></summary>
84+
85+
- chore(ci): Use javascript-sdk-gitflow app instead of personal token ([#18829](https://github.com/getsentry/sentry-javascript/pull/18829))
86+
- chore(deps): Bump `@sveltejs/kit` devDependency to `2.49.5` ([#18848](https://github.com/getsentry/sentry-javascript/pull/18848))
87+
- chore(deps): Bump bundler plugins to ^4.6.2 ([#18822](https://github.com/getsentry/sentry-javascript/pull/18822))
88+
- chore(deps): bump hono from 4.10.3 to 4.11.4 in /dev-packages/e2e-tests/test-applications/cloudflare-hono ([#18806](https://github.com/getsentry/sentry-javascript/pull/18806))
89+
- chore(test): Bump svelte dependencies ([#18850](https://github.com/getsentry/sentry-javascript/pull/18850))
90+
- chore(core): Comment out Error tests in langchain ([#18837](https://github.com/getsentry/sentry-javascript/pull/18837))
91+
- meta(changelog): Fix entry for tanstack start vite plugin ([#18883](https://github.com/getsentry/sentry-javascript/pull/18883))
92+
- test(e2e): Add testing app for User Feedback ([#18877](https://github.com/getsentry/sentry-javascript/pull/18877))
93+
- test(fastify): Verify if upstream error is fixed and won't regress ([#18838](https://github.com/getsentry/sentry-javascript/pull/18838))
94+
95+
</details>
96+
97+
Work in this release was contributed by @rreckonerr. Thank you for your contribution!
98+
99+
## 10.34.0
100+
101+
### Important Changes
102+
103+
- **feat(core): Add option to enhance the fetch error message ([#18466](https://github.com/getsentry/sentry-javascript/pull/18466))**
104+
105+
You can now enable enhanced fetch error messages by setting the `enhancedFetchErrorMessage` option. When enabled, the SDK will include additional context in fetch error messages to help with debugging.
106+
107+
- **feat(nextjs): Add routeManifestInjection option to exclude routes from client bundle ([#18798](https://github.com/getsentry/sentry-javascript/pull/18798))**
108+
109+
A new `routeManifestInjection` option allows you to exclude sensitive routes from being injected into the client bundle.
110+
111+
- **feat(tanstackstart-react): Add `wrapMiddlewaresWithSentry` for manual middleware instrumentation ([#18680](https://github.com/getsentry/sentry-javascript/pull/18680))**
8112

9113
You can now wrap your middlewares using `wrapMiddlewaresWithSentry`, allowing you to trace middleware execution in your TanStack Start application.
10114

@@ -20,6 +124,23 @@
20124
export const [wrappedLoggingMiddleware] = wrapMiddlewaresWithSentry({ loggingMiddleware });
21125
```
22126

127+
### Other Changes
128+
129+
- feat(browser): Add CDN bundle for `tracing.logs.metrics` ([#18784](https://github.com/getsentry/sentry-javascript/pull/18784))
130+
- feat(core,node-core): Consolidate bun and node types with ServerRuntimeOptions ([#18734](https://github.com/getsentry/sentry-javascript/pull/18734))
131+
- feat(nextjs): Remove tracing from generation function template ([#18733](https://github.com/getsentry/sentry-javascript/pull/18733))
132+
- fix(core): Don't record outcomes for failed client reports ([#18808](https://github.com/getsentry/sentry-javascript/pull/18808))
133+
- fix(deno,cloudflare): Prioritize name from params over name from options ([#18800](https://github.com/getsentry/sentry-javascript/pull/18800))
134+
- fix(web-vitals): Add error handling for invalid object keys in `WeakMap` ([#18809](https://github.com/getsentry/sentry-javascript/pull/18809))
135+
136+
<details>
137+
<summary><strong>Internal Changes</strong></summary>
138+
139+
- ref(nextjs): Split `withSentryConfig` ([#18777](https://github.com/getsentry/sentry-javascript/pull/18777))
140+
- test(e2e): Pin @shopify/remix-oxygen to unblock ci ([#18811](https://github.com/getsentry/sentry-javascript/pull/18811))
141+
142+
</details>
143+
23144
## 10.33.0
24145

25146
### Important Changes

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

Lines changed: 5 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": "10.33.0",
3+
"version": "10.35.0",
44
"main": "index.js",
55
"license": "MIT",
66
"engines": {
@@ -28,6 +28,9 @@
2828
"test:bundle:tracing_logs_metrics:debug_min": "PW_BUNDLE=bundle_tracing_logs_metrics_debug_min yarn test",
2929
"test:bundle:full": "PW_BUNDLE=bundle_tracing_replay_feedback yarn test",
3030
"test:bundle:full:min": "PW_BUNDLE=bundle_tracing_replay_feedback_min yarn test",
31+
"test:bundle:tracing_replay_feedback_logs_metrics": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics yarn test",
32+
"test:bundle:tracing_replay_feedback_logs_metrics:min": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics_min yarn test",
33+
"test:bundle:tracing_replay_feedback_logs_metrics:debug_min": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics_debug_min yarn test",
3134
"test:cjs": "PW_BUNDLE=cjs yarn test",
3235
"test:esm": "PW_BUNDLE=esm yarn test",
3336
"test:loader": "npx playwright test -c playwright.loader.config.ts --project='chromium'",
@@ -46,7 +49,7 @@
4649
"@babel/preset-typescript": "^7.16.7",
4750
"@playwright/test": "~1.56.0",
4851
"@sentry-internal/rrweb": "2.34.0",
49-
"@sentry/browser": "10.33.0",
52+
"@sentry/browser": "10.35.0",
5053
"@supabase/supabase-js": "2.49.3",
5154
"axios": "^1.12.2",
5255
"babel-loader": "^8.2.2",
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import * as Sentry from '@sentry/browser';
2+
3+
window.Sentry = Sentry;
4+
5+
// consoleLoggingIntegration should not actually work, but still not error out
6+
Sentry.init({
7+
dsn: 'https://public@dsn.ingest.sentry.io/1337',
8+
sampleRate: 1,
9+
integrations: [Sentry.consoleLoggingIntegration()],
10+
});
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { expect } from '@playwright/test';
2+
import { sentryTest } from '../../../../utils/fixtures';
3+
4+
sentryTest('exports a shim consoleLoggingIntegration for non-logs bundles', async ({ getLocalTestUrl, page }) => {
5+
const bundle = process.env.PW_BUNDLE;
6+
7+
// Only run this for CDN bundles that do NOT include logs
8+
// Skip minified bundles because DEBUG_BUILD is false and warnings won't appear
9+
if (!bundle?.startsWith('bundle') || bundle.includes('logs') || bundle.includes('min')) {
10+
sentryTest.skip();
11+
}
12+
13+
const consoleMessages: string[] = [];
14+
page.on('console', msg => consoleMessages.push(msg.text()));
15+
16+
let requestCount = 0;
17+
await page.route(/^https:\/\/dsn\.ingest\.sentry\.io\//, route => {
18+
requestCount++;
19+
return route.fulfill({
20+
status: 200,
21+
contentType: 'application/json',
22+
body: JSON.stringify({ id: 'test-id' }),
23+
});
24+
});
25+
26+
const url = await getLocalTestUrl({ testDir: __dirname, skipDsnRouteHandler: true });
27+
28+
await page.goto(url);
29+
30+
// Wait a bit to ensure no requests are made
31+
await page.waitForTimeout(500);
32+
33+
expect(requestCount).toBe(0);
34+
expect(consoleMessages).toEqual([
35+
'You are using consoleLoggingIntegration() even though this bundle does not include logs.',
36+
]);
37+
});
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import * as Sentry from '@sentry/browser';
2+
3+
window.Sentry = Sentry;
4+
5+
Sentry.init({
6+
dsn: 'https://public@dsn.ingest.sentry.io/1337',
7+
sampleRate: 1,
8+
});
9+
10+
// These should not actually work, but still not error out
11+
Sentry.logger.trace('test trace');
12+
Sentry.logger.debug('test debug');
13+
Sentry.logger.info('test info');
14+
Sentry.logger.warn('test warn');
15+
Sentry.logger.error('test error');
16+
Sentry.logger.fatal('test fatal');
17+
const testVar = 'test';
18+
Sentry.logger.info(Sentry.logger.fmt`formatted ${testVar}`);
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { expect } from '@playwright/test';
2+
import { sentryTest } from '../../../../utils/fixtures';
3+
4+
sentryTest('exports a shim logger for non-logs bundles', async ({ getLocalTestUrl, page }) => {
5+
const bundle = process.env.PW_BUNDLE;
6+
7+
// Only run this for CDN bundles that do NOT include logs
8+
// Skip minified bundles because DEBUG_BUILD is false and warnings won't appear
9+
if (!bundle?.startsWith('bundle') || bundle.includes('logs') || bundle.includes('min')) {
10+
sentryTest.skip();
11+
}
12+
13+
const consoleMessages: string[] = [];
14+
page.on('console', msg => consoleMessages.push(msg.text()));
15+
16+
let requestCount = 0;
17+
await page.route(/^https:\/\/dsn\.ingest\.sentry\.io\//, route => {
18+
requestCount++;
19+
return route.fulfill({
20+
status: 200,
21+
contentType: 'application/json',
22+
body: JSON.stringify({ id: 'test-id' }),
23+
});
24+
});
25+
26+
const url = await getLocalTestUrl({ testDir: __dirname, skipDsnRouteHandler: true });
27+
28+
await page.goto(url);
29+
30+
// Wait a bit to ensure no requests are made
31+
await page.waitForTimeout(500);
32+
33+
expect(requestCount).toBe(0);
34+
35+
expect(consoleMessages).toContain('You are using Sentry.logger.* even though this bundle does not include logs.');
36+
expect(consoleMessages).toContain('You are using Sentry.logger.fmt even though this bundle does not include logs.');
37+
});

0 commit comments

Comments
 (0)