Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
e95dedb
Merge pull request #18579 from getsentry/master
github-actions[bot] Dec 19, 2025
aaa0fea
chore(size-limit): Add size checks for metrics and logs (#18573)
Lms24 Dec 19, 2025
e2ef681
fix(browser): Reduce number of `visibilitystate` and `pagehide` liste…
Lms24 Dec 19, 2025
63daea2
feat(deps): Bump bundler plugins to ^4.6.1 (#17980)
andreiborza Dec 19, 2025
b41efe0
chore(tests): Add unordered mode to cloudflare test runner (#18596)
nicohrubec Dec 22, 2025
6ef3ce7
fix(cloudflare): Consume body of fetch in the Cloudflare transport (#…
JPeer264 Dec 22, 2025
1307651
fix(pino): Allow custom namespaces for `msg` and `err` (#18597)
s1gr1d Dec 22, 2025
d8350d4
test(e2e): Pin solid/vue tanstack router to 1.41.8 (#18610)
nicohrubec Dec 23, 2025
9c40849
test(e2e): Pin agents package in cloudflare-mcp test (#18609)
chargome Dec 23, 2025
159cb23
chore(deps): Bump IITM to ^2.0.1 (#18599)
nicohrubec Dec 23, 2025
821e986
fix(browser): Respect `tunnel` in `diagnoseSdkConnectivity` (#18616)
s1gr1d Dec 23, 2025
9ecd7f5
chore(react): Inline `hoist-non-react-statics` package (#18102)
onurtemizkan Dec 29, 2025
a10cc10
ref(nextjs): Drop `resolve` dependency (#18618)
logaretm Dec 29, 2025
8787a87
ref(react-router): Use snake_case for span op names (#18617)
onurtemizkan Dec 29, 2025
4942b07
fix(node): relax Fastify's `setupFastifyErrorHandler` argument type (…
logaretm Dec 29, 2025
1657815
test(core): Improve unit test performance for offline transport tests…
Lms24 Dec 29, 2025
121eb92
feat(core): Support IPv6 hosts in the DSN (#2996) (#17708)
xgedev Dec 30, 2025
ddd79bf
chore: Add external contributor to CHANGELOG.md (#18633)
HazAT Dec 30, 2025
1b618fc
feat(node-core): Add `isolateTrace` option to `node-cron` instrumenta…
sebws Dec 30, 2025
f5becb4
chore(bun): Fix `install-bun.js` version check and improve upgrade fe…
Mohataseem89 Dec 30, 2025
e923eac
chore: Add external contributor to CHANGELOG.md (#18636)
HazAT Dec 30, 2025
2fb0f99
chore: Add external contributor to CHANGELOG.md (#18637)
HazAT Dec 30, 2025
fdbddaa
feat(core): Add `ignoreSentryInternalFrames` option to `thirdPartyErr…
chargome Dec 30, 2025
da1c41f
feat(nextjs): Emit warning for conflicting treeshaking / debug settin…
chargome Dec 30, 2025
5425ffb
fix(core): Set op on ended Vercel AI spans (#18601)
RulaKhaled Dec 30, 2025
e4ad846
fix(core): Update client options to allow explicit `undefined` (#18024)
G-Rath Dec 30, 2025
6ab4c69
chore: Add external contributor to CHANGELOG.md (#18641)
HazAT Dec 30, 2025
363a910
feat(node): Use `process.on('SIGTERM')` for flushing in Vercel functi…
mydea Dec 30, 2025
995f788
test(e2e): Add e2e metrics tests in Next.js 16 (#18643)
chargome Dec 30, 2025
4a5ba93
ref(core): Extract and reuse `getCombinedScopeData` helper (#18585)
Lms24 Dec 30, 2025
9fdd03f
test(core): Use fake timers in promisebuffer tests to ensure determin…
nicohrubec Jan 2, 2026
62351ca
ci(deps): bump peter-evans/create-pull-request from 7.0.9 to 8.0.0 (#…
dependabot[bot] Jan 2, 2026
19d8f0d
ci(deps): Bump actions/create-github-app-token from 2.2.0 to 2.2.1 (#…
dependabot[bot] Jan 2, 2026
0cfe3d1
ci(deps): bump actions/upload-artifact from 5 to 6 (#18655)
dependabot[bot] Jan 2, 2026
1b1cf85
ci(deps): bump actions/cache from 4 to 5 (#18654)
dependabot[bot] Jan 2, 2026
ba7f90a
chore(nextjs): Bump next version in dev deps (#18661)
chargome Jan 2, 2026
53777ce
fix(next): Ensure inline sourcemaps are generated for wrapped modules…
logaretm Jan 2, 2026
b068af1
chore(craft): Use version templating for aws layer (#18675)
andreiborza Jan 2, 2026
4aa907e
ref(node): Remove duplicate function `isCjs` (#18662)
s1gr1d Jan 2, 2026
ed0a0fa
fix(feedback): Fix cases where the outline of inputs were wrong (#18647)
ryan953 Jan 2, 2026
5cd938d
test(nestjs): Add canary test for latest (#18685)
nicohrubec Jan 5, 2026
2270256
test(tanstackstart-react): Add canary test for latest (#18686)
nicohrubec Jan 5, 2026
66f4825
test(node-native): Increase worker block timeout (#18683)
nicohrubec Jan 5, 2026
4fd5021
test(vue): Added canary and latest test variants to Vue tests (#18681)
logaretm Jan 6, 2026
747e212
doc: E2E testing documentation updates (#18649)
BYK Jan 6, 2026
82314e4
chore(changelog): Fix typo (#18648)
gianpaj Jan 7, 2026
8d946bd
chore: Add external contributor to CHANGELOG.md (#18706)
HazAT Jan 7, 2026
497a0b5
feat(core): Add recordInputs/recordOutputs options to MCP server wrap…
betegon Jan 7, 2026
314babc
feat(core): Add gen_ai.conversation.id attribute to OpenAI and LangGr…
RulaKhaled Jan 7, 2026
a6a4f7b
ref(core): Streamline and test `browserPerformanceTimeOrigin` (#18708)
Lms24 Jan 7, 2026
d0840e9
feat(nuxt): Detect development environment and add dev E2E test (#18671)
s1gr1d Jan 7, 2026
a68ac90
fix(core): Subtract `performance.now()` from `browserPerformanceTimeO…
Lms24 Jan 7, 2026
107e2b0
ref(core): Remove dependence between `performance.timeOrigin` and `pe…
Lms24 Jan 7, 2026
40ec7f8
chore(e2e): Unpin react-router-7-framework-spa to ^7.11.0 (#18551)
andreiborza Jan 7, 2026
0d0fd78
fix(replay): Ensure replays contain canvas rendering when resumed aft…
andreiborza Jan 7, 2026
b855664
fix(tracing): add gen_ai.request.messages.original_length attributes …
isaacs Dec 22, 2025
2a2e8cb
fix(node-core): Ignore worker threads in OnUncaughtException (#18689)
JPeer264 Jan 8, 2026
ce62e84
ref(core): Strengthen `browserPerformanceTimeOrigin` reliability chec…
Lms24 Jan 8, 2026
31cc183
fix(nextjs): Remove polynomial regular expression (#18725)
s1gr1d Jan 8, 2026
5901e70
fix(react,solid,vue): Fix parametrization behavior for non-matched ro…
andreiborza Jan 8, 2026
c6b3fa1
test(nuxt): Fix nuxt-4 dev E2E test (#18737)
s1gr1d Jan 8, 2026
7d0a81b
chore(e2e-tests): Upgrade `@trpc/server` and `@trpc/client` (#18722)
s1gr1d Jan 8, 2026
a516745
chore(node-tests): Upgrade `@langchain/core` (#18720)
s1gr1d Jan 8, 2026
29ed4da
fix(nuxt): Allow overwriting server-side `defaultIntegrations` (#18717)
s1gr1d Jan 8, 2026
1535106
ref(core): Use `serializeAttributes` for metric attribute serializati…
Lms24 Jan 9, 2026
fae3a77
fix(nextjs): Avoid Edge build warning from OpenTelemetry `process.arg…
chargome Jan 9, 2026
dbe6520
feat(Tracing): Add Vercel AI SDK v6 support (#18741)
RulaKhaled Jan 9, 2026
7868fe5
fix(browser): Forward worker metadata for third-party error filtering…
andreiborza Jan 9, 2026
8eb1d44
feat(core): Apply scope attributes to metrics (#18738)
Lms24 Jan 9, 2026
fd42f3b
fix(next): Wrap all Random APIs with a safe runner (#18700)
logaretm Jan 9, 2026
46225eb
feat(wasm): Add applicationKey option for third-party error filtering…
andreiborza Jan 12, 2026
cc93c68
feat(cloudflare): Support `propagateTraceparent` (#18569)
timfish Jan 12, 2026
ac45e57
feat(nextjs): Print Turbopack note for deprecated webpack options (#1…
chargome Jan 12, 2026
6f723e0
fix(test): Remove hard-coded SDK version assertion (#18771)
Lms24 Jan 12, 2026
03546d2
test(node-core): Fix wrong import in node core IPv6 integration test …
Lms24 Jan 12, 2026
3ff89c6
test(node-integration): Remove hardcoded SDK version assertions (#18775)
Lms24 Jan 12, 2026
1630389
meta(changelog): Update changelog for 10.33.0
Lms24 Jan 12, 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
2 changes: 1 addition & 1 deletion .craft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ targets:
# AWS Lambda Layer target
- name: aws-lambda-layer
includeNames: /^sentry-node-serverless-\d+.\d+.\d+(-(beta|alpha|rc)\.\d+)?\.zip$/
layerName: SentryNodeServerlessSDKv10
layerName: SentryNodeServerlessSDKv{{{major}}}
compatibleRuntimes:
- name: node
versions:
Expand Down
48 changes: 48 additions & 0 deletions .cursor/rules/sdk_development.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,54 @@ Each package typically contains:
- Integration tests use Playwright extensively
- Never change the volta, yarn, or package manager setup in general unless explicitly asked for

### E2E Testing

E2E tests are located in `dev-packages/e2e-tests/` and verify SDK behavior in real-world framework scenarios.

#### How Verdaccio Registry Works

E2E tests use [Verdaccio](https://verdaccio.org/), a lightweight npm registry running in Docker. Before tests run:

1. SDK packages are built and packed into tarballs (`yarn build && yarn build:tarball`)
2. Tarballs are published to Verdaccio at `http://127.0.0.1:4873`
3. Test applications install packages from Verdaccio instead of public npm

#### The `.npmrc` Requirement

Every E2E test application needs an `.npmrc` file with:

```
@sentry:registry=http://127.0.0.1:4873
@sentry-internal:registry=http://127.0.0.1:4873
```

Without this file, pnpm installs from the public npm registry instead of Verdaccio, so your local changes won't be tested. This is a common cause of "tests pass in CI but fail locally" or vice versa.

#### Running a Single E2E Test

```bash
# Build packages first
yarn build && yarn build:tarball

# Run a specific test app
cd dev-packages/e2e-tests
yarn test:run <app-name>

# Run with a specific variant (e.g., Next.js 15)
yarn test:run <app-name> --variant <variant-name>
```

#### Common Pitfalls and Debugging

1. **Missing `.npmrc`**: Most common issue. Always verify the test app has the correct `.npmrc` file.

2. **Stale tarballs**: After SDK changes, must re-run `yarn build:tarball`.

3. **Debugging tips**:
- Check browser console logs for SDK initialization errors
- Use `debug: true` in Sentry config
- Verify installed package version: check `node_modules/@sentry/*/package.json`

### Notes for Background Tasks

- Make sure to use [volta](https://volta.sh/) for development. Volta is used to manage the node, yarn and pnpm version used.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
steps:
- name: Get auth token
id: token
uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
with:
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ jobs:
head: ${{ env.HEAD_COMMIT }}

- name: NX cache
uses: actions/cache@v4
uses: actions/cache@v5
# Disable cache when:
# - on release branches
# - when PR has `ci-skip-cache` label or on nightly builds
Expand All @@ -181,7 +181,7 @@ jobs:
run: yarn build

- name: Upload build artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: build-output
path: ${{ env.CACHED_BUILD_PATHS }}
Expand Down Expand Up @@ -386,7 +386,7 @@ jobs:
run: yarn build:tarball

- name: Archive artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: ${{ github.sha }}
retention-days: 90
Expand Down Expand Up @@ -629,7 +629,7 @@ jobs:
format(' --shard={0}/{1}', matrix.shard, matrix.shards) || '' }}

- name: Upload Playwright Traces
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: failure()
with:
name:
Expand Down Expand Up @@ -692,7 +692,7 @@ jobs:
yarn test:loader

- name: Upload Playwright Traces
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: failure()
with:
name: playwright-traces-job_browser_loader_tests-${{ matrix.bundle}}
Expand Down Expand Up @@ -881,7 +881,7 @@ jobs:
with:
dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }}
- name: NX cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: .nxcache
key: nx-Linux-${{ github.ref }}-${{ env.HEAD_COMMIT }}
Expand All @@ -892,7 +892,7 @@ jobs:
run: yarn build:tarball

- name: Stores tarballs in cache
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
path: ${{ github.workspace }}/packages/*/*.tgz
key: ${{ env.BUILD_CACHE_TARBALL_KEY }}
Expand Down Expand Up @@ -959,7 +959,7 @@ jobs:
dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }}

- name: Restore tarball cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
id: restore-tarball-cache
with:
path: ${{ github.workspace }}/packages/*/*.tgz
Expand Down Expand Up @@ -1009,7 +1009,7 @@ jobs:
SENTRY_E2E_WORKSPACE_ROOT: ${{ github.workspace }}

- name: Upload Playwright Traces
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: failure()
with:
name: playwright-traces-job_e2e_playwright_tests-${{ matrix.test-application}}
Expand All @@ -1023,7 +1023,7 @@ jobs:
node ./scripts/normalize-e2e-test-dump-transaction-events.js

- name: Upload E2E Test Event Dumps
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: failure()
with:
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
Expand Down Expand Up @@ -1084,7 +1084,7 @@ jobs:
dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }}

- name: Restore tarball cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
id: restore-tarball-cache
with:
path: ${{ github.workspace }}/packages/*/*.tgz
Expand Down Expand Up @@ -1135,7 +1135,7 @@ jobs:
node ./scripts/normalize-e2e-test-dump-transaction-events.js

- name: Upload E2E Test Event Dumps
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: failure()
with:
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
with:
node-version-file: 'package.json'
- name: Check canary cache
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ${{ env.CACHED_BUILD_PATHS }}
key: canary-${{ env.HEAD_COMMIT }}
Expand Down Expand Up @@ -114,6 +114,12 @@ jobs:
- test-application: 'nuxt-4'
build-command: 'test:build-canary'
label: 'nuxt-4 (canary)'
- test-application: 'tanstackstart-react'
build-command: 'test:build-latest'
label: 'tanstackstart-react (latest)'
- test-application: 'nestjs-11'
build-command: 'test:build-latest'
label: 'nestjs-11 (latest)'

steps:
- name: Check out current commit
Expand All @@ -130,7 +136,7 @@ jobs:
node-version-file: 'dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/package.json'

- name: Restore canary cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: ${{ env.CACHED_BUILD_PATHS }}
key: canary-${{ env.HEAD_COMMIT }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/external-contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
author_association: ${{ github.event.pull_request.author_association }}

- name: Create PR with changes
uses: peter-evans/create-pull-request@84ae59a2cdc2258d6fa0732dd66352dddae2a412
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 :(
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/flaky-test-detector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
run: yarn install --ignore-engines --frozen-lockfile

- name: NX cache
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
path: .nxcache
key: nx-Linux-${{ github.ref }}-${{ env.HEAD_COMMIT }}
Expand Down Expand Up @@ -71,7 +71,7 @@ jobs:
TEST_RUN_COUNT: 'AUTO'

- name: Upload Playwright Traces
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: failure() && steps.test.outcome == 'failure'
with:
name: playwright-test-results
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
steps:
- name: Get auth token
id: token
uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
with:
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}
Expand Down
27 changes: 24 additions & 3 deletions .size-limit.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ module.exports = [
path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'replayCanvasIntegration'),
gzip: true,
limit: '85 KB',
limit: '85.5 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay, Feedback)',
Expand Down Expand Up @@ -112,6 +112,27 @@ module.exports = [
gzip: true,
limit: '35 KB',
},
{
name: '@sentry/browser (incl. Metrics)',
path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'metrics'),
gzip: true,
limit: '27 KB',
},
{
name: '@sentry/browser (incl. Logs)',
path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'logger'),
gzip: true,
limit: '27 KB',
},
{
name: '@sentry/browser (incl. Metrics & Logs)',
path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'metrics', 'logger'),
gzip: true,
limit: '28 KB',
},
// React SDK (ESM)
{
name: '@sentry/react',
Expand Down Expand Up @@ -222,7 +243,7 @@ module.exports = [
import: createImport('init'),
ignore: ['$app/stores'],
gzip: true,
limit: '42 KB',
limit: '42.5 KB',
},
// Node-Core SDK (ESM)
{
Expand All @@ -240,7 +261,7 @@ module.exports = [
import: createImport('init'),
ignore: [...builtinModules, ...nodePrefixedBuiltinModules],
gzip: true,
limit: '162 KB',
limit: '162.5 KB',
},
{
name: '@sentry/node - without tracing',
Expand Down
Loading
Loading