Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4d66d52
Merge pull request #18821 from getsentry/master
github-actions[bot] Jan 14, 2026
9e9174c
feat(core): Add `ignored` client report event drop reason (#18815)
Lms24 Jan 14, 2026
f3097a3
chore(Tracing): Comment out Error tests in langchain (#18837)
RulaKhaled Jan 15, 2026
7640856
fix(Tracing): Check for AI operation id to detect a vercelai span (#1…
RulaKhaled Jan 15, 2026
350909d
chore(deps): Bump bundler plugins to ^4.6.2 (#18822)
nicohrubec Jan 16, 2026
6e42f4f
feat(logs): Add `Log` exports to browser and node packages (#18857)
chargome Jan 16, 2026
a3276e4
chore(ci): Use javascript-sdk-gitflow app instead of personal token (…
oioki Jan 16, 2026
70a309f
chore(deps): Bump `@sveltejs/kit` devDependency to `2.49.5` (#18848)
Lms24 Jan 16, 2026
6c655db
feat(node-core,bun): Export processSessionIntegration from node-core …
andreiborza Jan 16, 2026
7006293
chore(test): Bump svelte dependencies (#18850)
Lms24 Jan 16, 2026
8f98fbe
fix(ember): Use ES5 syntax in inline vendor scripts (#18858)
rreckonerr Jan 16, 2026
8cbb84a
chore: Add external contributor to CHANGELOG.md (#18861)
javascript-sdk-gitflow[bot] Jan 16, 2026
656c5f5
feat(browser): Add CDN bundle for `tracing.replay.feedback.logs.metri…
chargome Jan 16, 2026
7401795
feat(tanstackstart-react): Add sentryTanstackStart vite plugin to man…
nicohrubec Jan 16, 2026
e50b75c
feat(browser): Add shim package for logs (#18831)
chargome Jan 16, 2026
32d8fda
fix(fetch): Shallow-clone fetch options to prevent mutation (#18867)
s1gr1d Jan 19, 2026
d353444
chore(deps): bump hono from 4.10.3 to 4.11.4 in /dev-packages/e2e-tes…
dependabot[bot] Jan 19, 2026
cef02b8
test(e2e): Add testing app for User Feedback (#18877)
chargome Jan 19, 2026
df0bff8
test(fastify): Verify if upstream error is fixed and won't regress (#…
JPeer264 Jan 19, 2026
75b183d
feat(cloudflare): Automatically set the release id when CF_VERSION_ME…
JPeer264 Jan 19, 2026
d2df7f6
fix(core): Find the correct IP address regardless their case (#18880)
JPeer264 Jan 19, 2026
d503a8d
meta(changelog): Fix entry for tanstack start vite plugin (#18883)
nicohrubec Jan 19, 2026
8160ada
meta(changelog): Update changelog for 10.35.0
JPeer264 Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -572,6 +572,7 @@ jobs:
- bundle_tracing_replay
- bundle_tracing_replay_feedback
- bundle_tracing_replay_feedback_min
- bundle_tracing_replay_feedback_logs_metrics
project:
- chromium
include:
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/external-contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,17 @@ jobs:
name: ${{ github.event.pull_request.user.login }}
author_association: ${{ github.event.pull_request.author_association }}

- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.GITFLOW_APP_ID }}
private-key: ${{ secrets.GITFLOW_APP_PRIVATE_KEY }}

- name: Create PR with changes
uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725
with:
# This token is scoped to Daniel Griesser
# If we used the default GITHUB_TOKEN, the resulting PR would not trigger CI :(
token: ${{ secrets.REPO_SCOPED_TOKEN }}
token: ${{ steps.app-token.outputs.token }}
commit-message: 'chore: Add external contributor to CHANGELOG.md'
title: 'chore: Add external contributor to CHANGELOG.md'
branch: 'external-contributor/patch-${{ github.event.pull_request.user.login }}'
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/gitflow-sync-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ jobs:
- name: git checkout
uses: actions/checkout@v6

- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.GITFLOW_APP_ID }}
private-key: ${{ secrets.GITFLOW_APP_PRIVATE_KEY }}

# https://github.com/marketplace/actions/github-pull-request-action
- name: Create Pull Request
id: open-pr
Expand All @@ -35,8 +42,7 @@ jobs:
pr_title: '[Gitflow] Merge ${{ env.SOURCE_BRANCH }} into ${{ env.TARGET_BRANCH }}'
pr_body: 'Merge ${{ env.SOURCE_BRANCH }} branch into ${{ env.TARGET_BRANCH }}'
pr_label: 'Dev: Gitflow'
# This token is scoped to Daniel Griesser
github_token: ${{ secrets.REPO_SCOPED_TOKEN }}
github_token: ${{ steps.app-token.outputs.token }}

- name: Enable automerge for PR
if: steps.open-pr.outputs.pr_number != ''
Expand Down
13 changes: 13 additions & 0 deletions .size-limit.js
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,12 @@ module.exports = [
gzip: true,
limit: '86 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)',
path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'),
gzip: true,
limit: '86 KB',
},
// browser CDN bundles (non-gzipped)
{
name: 'CDN Bundle - uncompressed',
Expand Down Expand Up @@ -240,6 +246,13 @@ module.exports = [
brotli: false,
limit: '264 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed',
path: createCDNPath('bundle.tracing.replay.feedback.logs.metrics.min.js'),
gzip: false,
brotli: false,
limit: '264 KB',
},
// Next.js SDK (ESM)
{
name: '@sentry/nextjs (client)',
Expand Down
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,62 @@

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

## 10.35.0

### Important Changes

- **feat(tanstackstart-react): Add `sentryTanstackStart` vite plugin to manage automatic source map uploads ([#18712](https://github.com/getsentry/sentry-javascript/pull/18712))**

You can now configure source maps upload for TanStack Start using the `sentryTanstackStart` Vite plugin:

```ts
// vite.config.ts
import { defineConfig } from 'vite';
import { sentryTanstackStart } from '@sentry/tanstackstart-react';
import { tanstackStart } from '@tanstack/react-start/plugin/vite';

export default defineConfig({
plugins: [
sentryTanstackStart({
authToken: process.env.SENTRY_AUTH_TOKEN,
org: 'your-org',
project: 'your-project',
}),
tanstackStart(),
],
});
```

### Other Changes

- feat(browser): Add CDN bundle for `tracing.replay.feedback.logs.metrics` ([#18785](https://github.com/getsentry/sentry-javascript/pull/18785))
- feat(browser): Add shim package for logs ([#18831](https://github.com/getsentry/sentry-javascript/pull/18831))
- feat(cloudflare): Automatically set the release id when CF_VERSION_METADATA is enabled ([#18855](https://github.com/getsentry/sentry-javascript/pull/18855))
- feat(core): Add `ignored` client report event drop reason ([#18815](https://github.com/getsentry/sentry-javascript/pull/18815))
- feat(logs): Add `Log` exports to browser and node packages ([#18857](https://github.com/getsentry/sentry-javascript/pull/18857))
- feat(node-core,bun): Export processSessionIntegration from node-core and add it to bun ([#18852](https://github.com/getsentry/sentry-javascript/pull/18852))
- fix(core): Find the correct IP address regardless their case ([#18880](https://github.com/getsentry/sentry-javascript/pull/18880))
- fix(core): Check for AI operation id to detect a vercelai span ([#18823](https://github.com/getsentry/sentry-javascript/pull/18823))
- fix(ember): Use ES5 syntax in inline vendor scripts ([#18858](https://github.com/getsentry/sentry-javascript/pull/18858))
- fix(fetch): Shallow-clone fetch options to prevent mutation ([#18867](https://github.com/getsentry/sentry-javascript/pull/18867))

<details>
<summary><strong>Internal Changes</strong></summary>

- chore(ci): Use javascript-sdk-gitflow app instead of personal token ([#18829](https://github.com/getsentry/sentry-javascript/pull/18829))
- chore(deps): Bump `@sveltejs/kit` devDependency to `2.49.5` ([#18848](https://github.com/getsentry/sentry-javascript/pull/18848))
- chore(deps): Bump bundler plugins to ^4.6.2 ([#18822](https://github.com/getsentry/sentry-javascript/pull/18822))
- 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))
- chore(test): Bump svelte dependencies ([#18850](https://github.com/getsentry/sentry-javascript/pull/18850))
- chore(core): Comment out Error tests in langchain ([#18837](https://github.com/getsentry/sentry-javascript/pull/18837))
- meta(changelog): Fix entry for tanstack start vite plugin ([#18883](https://github.com/getsentry/sentry-javascript/pull/18883))
- test(e2e): Add testing app for User Feedback ([#18877](https://github.com/getsentry/sentry-javascript/pull/18877))
- test(fastify): Verify if upstream error is fixed and won't regress ([#18838](https://github.com/getsentry/sentry-javascript/pull/18838))

</details>

Work in this release was contributed by @rreckonerr. Thank you for your contribution!

## 10.34.0

### Important Changes
Expand Down
3 changes: 3 additions & 0 deletions dev-packages/browser-integration-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
"test:bundle:tracing_logs_metrics:debug_min": "PW_BUNDLE=bundle_tracing_logs_metrics_debug_min yarn test",
"test:bundle:full": "PW_BUNDLE=bundle_tracing_replay_feedback yarn test",
"test:bundle:full:min": "PW_BUNDLE=bundle_tracing_replay_feedback_min yarn test",
"test:bundle:tracing_replay_feedback_logs_metrics": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics yarn test",
"test:bundle:tracing_replay_feedback_logs_metrics:min": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics_min yarn test",
"test:bundle:tracing_replay_feedback_logs_metrics:debug_min": "PW_BUNDLE=bundle_tracing_replay_feedback_logs_metrics_debug_min yarn test",
"test:cjs": "PW_BUNDLE=cjs yarn test",
"test:esm": "PW_BUNDLE=esm yarn test",
"test:loader": "npx playwright test -c playwright.loader.config.ts --project='chromium'",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

// consoleLoggingIntegration should not actually work, but still not error out
Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
sampleRate: 1,
integrations: [Sentry.consoleLoggingIntegration()],
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { expect } from '@playwright/test';
import { sentryTest } from '../../../../utils/fixtures';

sentryTest('exports a shim consoleLoggingIntegration for non-logs bundles', async ({ getLocalTestUrl, page }) => {
const bundle = process.env.PW_BUNDLE;

// Only run this for CDN bundles that do NOT include logs
// Skip minified bundles because DEBUG_BUILD is false and warnings won't appear
if (!bundle?.startsWith('bundle') || bundle.includes('logs') || bundle.includes('min')) {
sentryTest.skip();
}

const consoleMessages: string[] = [];
page.on('console', msg => consoleMessages.push(msg.text()));

let requestCount = 0;
await page.route(/^https:\/\/dsn\.ingest\.sentry\.io\//, route => {
requestCount++;
return route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ id: 'test-id' }),
});
});

const url = await getLocalTestUrl({ testDir: __dirname, skipDsnRouteHandler: true });

await page.goto(url);

// Wait a bit to ensure no requests are made
await page.waitForTimeout(500);

expect(requestCount).toBe(0);
expect(consoleMessages).toEqual([
'You are using consoleLoggingIntegration() even though this bundle does not include logs.',
]);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
sampleRate: 1,
});

// These should not actually work, but still not error out
Sentry.logger.trace('test trace');
Sentry.logger.debug('test debug');
Sentry.logger.info('test info');
Sentry.logger.warn('test warn');
Sentry.logger.error('test error');
Sentry.logger.fatal('test fatal');
const testVar = 'test';
Sentry.logger.info(Sentry.logger.fmt`formatted ${testVar}`);
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { expect } from '@playwright/test';
import { sentryTest } from '../../../../utils/fixtures';

sentryTest('exports a shim logger for non-logs bundles', async ({ getLocalTestUrl, page }) => {
const bundle = process.env.PW_BUNDLE;

// Only run this for CDN bundles that do NOT include logs
// Skip minified bundles because DEBUG_BUILD is false and warnings won't appear
if (!bundle?.startsWith('bundle') || bundle.includes('logs') || bundle.includes('min')) {
sentryTest.skip();
}

const consoleMessages: string[] = [];
page.on('console', msg => consoleMessages.push(msg.text()));

let requestCount = 0;
await page.route(/^https:\/\/dsn\.ingest\.sentry\.io\//, route => {
requestCount++;
return route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ id: 'test-id' }),
});
});

const url = await getLocalTestUrl({ testDir: __dirname, skipDsnRouteHandler: true });

await page.goto(url);

// Wait a bit to ensure no requests are made
await page.waitForTimeout(500);

expect(requestCount).toBe(0);

expect(consoleMessages).toContain('You are using Sentry.logger.* even though this bundle does not include logs.');
expect(consoleMessages).toContain('You are using Sentry.logger.fmt even though this bundle does not include logs.');
});
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ const BUNDLE_PATHS: Record<string, Record<string, string>> = {
bundle_tracing_replay_min: 'build/bundles/bundle.tracing.replay.min.js',
bundle_tracing_replay_feedback: 'build/bundles/bundle.tracing.replay.feedback.js',
bundle_tracing_replay_feedback_min: 'build/bundles/bundle.tracing.replay.feedback.min.js',
bundle_tracing_replay_feedback_logs_metrics: 'build/bundles/bundle.tracing.replay.feedback.logs.metrics.js',
bundle_tracing_replay_feedback_logs_metrics_min: 'build/bundles/bundle.tracing.replay.feedback.logs.metrics.min.js',
bundle_tracing_replay_feedback_logs_metrics_debug_min:
'build/bundles/bundle.tracing.replay.feedback.logs.metrics.debug.min.js',
loader_base: 'build/bundles/bundle.min.js',
loader_eager: 'build/bundles/bundle.min.js',
loader_debug: 'build/bundles/bundle.debug.min.js',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
},
"dependencies": {
"@sentry/browser": "latest || *",
"@sentry/vite-plugin": "^4.6.1"
"@sentry/vite-plugin": "^4.6.2"
},
"volta": {
"node": "20.19.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"dependencies": {
"@sentry/cloudflare": "latest || *",
"hono": "4.10.3"
"hono": "4.11.4"
},
"devDependencies": {
"@cloudflare/vitest-pool-workers": "^0.8.31",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"devDependencies": {
"rollup": "^4.35.0",
"vitest": "^0.34.6",
"@sentry/rollup-plugin": "^4.6.1"
"@sentry/rollup-plugin": "^4.6.2"
},
"volta": {
"extends": "../../package.json"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"dependencies": {
"@sentry/cloudflare": "latest || *",
"@sentry/react-router": "latest || *",
"@sentry/vite-plugin": "^3.1.2",
"@sentry/vite-plugin": "^4.6.2",
"@shopify/hydrogen": "2025.5.0",
"@shopify/remix-oxygen": "^3.0.0",
"graphql": "^16.10.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# local env files
.env*.local

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts

!*.d.ts

# Sentry
.sentryclirc

.vscode

test-results
event-dumps

.tmp_dev_server_logs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@sentry:registry=http://127.0.0.1:4873
@sentry-internal:registry=http://127.0.0.1:4873
public-hoist-pattern[]=*import-in-the-middle*
public-hoist-pattern[]=*require-in-the-middle*
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Next.js 16 User Feedback E2E Tests

This test application verifies the Sentry User Feedback SDK functionality with Next.js 16.

## Tests

The tests cover various feedback APIs:

- `attachTo()` - Attaching feedback to custom buttons
- `createWidget()` - Creating/removing feedback widget triggers
- `createForm()` - Creating feedback forms with custom labels
- `captureFeedback()` - Programmatic feedback submission
- ThumbsUp/ThumbsDown sentiment tagging
- Dialog cancellation

## Credits

Shoutout to [Ryan Albrecht](https://github.com/ryan953) for the underlying [testing app](https://github.com/ryan953/nextjs-test-feedback)!
Loading
Loading