diff --git a/.cursor/commands/bump_otel_instrumentations.md b/.cursor/commands/bump_otel_instrumentations.md
new file mode 100644
index 000000000000..ff1e6cfcbcc8
--- /dev/null
+++ b/.cursor/commands/bump_otel_instrumentations.md
@@ -0,0 +1,32 @@
+# Bump OpenTelemetry instrumentations
+
+1. Ensure you're on the `develop` branch with the latest changes:
+ - If you have unsaved changes, stash them with `git stash -u`.
+ - If you're on a different branch than `develop`, check out the develop branch using `git checkout develop`.
+ - Pull the latest updates from the remote repository by running `git pull origin develop`.
+
+2. Create a new branch `bump-otel-{yyyy-mm-dd}`, e.g. `bump-otel-2025-03-03`
+
+3. Create a new empty commit with the commit message `feat(deps): Bump OpenTelemetry instrumentations`
+
+4. Push the branch and create a draft PR, note down the PR number as {PR_NUMBER}
+
+5. Create a changelog entry in `CHANGELOG.md` under
+ `- "You miss 100 percent of the chances you don't take. â Wayne Gretzky" â Michael Scott` with the following format:
+ `- feat(deps): Bump OpenTelemetry instrumentations ([#{PR_NUMBER}](https://github.com/getsentry/sentry-javascript/pull/{PR_NUMBER}))`
+
+6. Find the "Upgrade OpenTelemetry instrumentations" rule in `.cursor/rules/upgrade_opentelemetry_instrumentations` and
+ follow those complete instructions step by step.
+ - Create one commit per package in `packages/**` with the commit message
+ `Bump OpenTelemetry instrumentations for {SDK}`, e.g. `Bump OpenTelemetry instrumentation for @sentry/node`
+
+ - For each OpenTelemetry dependency bump, record an entry in the changelog with the format indented under the main
+ entry created in step 5: `- Bump @opentelemetry/{instrumentation} from {previous_version} to {new_version}`, e.g.
+ `- Bump @opentelemetry/instrumentation from 0.204.0 to 0.207.0` **CRITICAL**: Avoid duplicated entries, e.g. if we
+ bump @opentelemetry/instrumentation in two packages, keep a single changelog entry.
+
+7. Regenerate the yarn lockfile and run `yarn yarn-deduplicate`
+
+8. Run `yarn fix` to fix all formatting issues
+
+9. Finally update the PR description to list all dependency bumps
diff --git a/.cursor/rules/publishing_release.mdc b/.cursor/rules/publishing_release.mdc
index 4d6fecca5d2a..f50a5ea57f93 100644
--- a/.cursor/rules/publishing_release.mdc
+++ b/.cursor/rules/publishing_release.mdc
@@ -12,13 +12,18 @@ Use these guidelines when publishing a new Sentry JavaScript SDK release.
The release process is outlined in [publishing-a-release.md](mdc:docs/publishing-a-release.md).
-1. Make sure you are on the latest version of the `develop` branch. To confirm this, run `git pull origin develop` to get the latest changes from the repo.
+1. Ensure you're on the `develop` branch with the latest changes:
+ - If you have unsaved changes, stash them with `git stash -u`.
+ - If you're on a different branch than `develop`, check out the develop branch using `git checkout develop`.
+ - Pull the latest updates from the remote repository by running `git pull origin develop`.
+
2. Run `yarn changelog` on the `develop` branch and copy the output. You can use `yarn changelog | pbcopy` to copy the output of `yarn changelog` into your clipboard.
3. Decide on a version for the release based on [semver](mdc:https://semver.org). The version should be decided based on what is in included in the release. For example, if the release includes a new feature, we should increment the minor version. If it includes only bug fixes, we should increment the patch version. You can find the latest version in [CHANGELOG.md](mdc:CHANGELOG.md) at the very top.
4. Create a branch `prepare-release/VERSION`, eg. `prepare-release/8.1.0`, off `develop`.
-5. Update [CHANGELOG.md](mdc:CHANGELOG.md) to add an entry for the next release number and a list of changes since the last release from the output of `yarn changelog`. See the `Updating the Changelog` section in [publishing-a-release.md](mdc:docs/publishing-a-release.md) for more details. If you remove changelog entries because they are not applicable, please let the user know.
+5. Update [CHANGELOG.md](mdc:CHANGELOG.md) to add an entry for the next release number and a list of changes since the last release from the output of `yarn changelog`. See the `Updating the Changelog` section in [publishing-a-release.md](mdc:docs/publishing-a-release.md) for more details. Do not remove any changelog entries.
6. Commit the changes to [CHANGELOG.md](mdc:CHANGELOG.md) with `meta(changelog): Update changelog for VERSION` where `VERSION` is the version of the release, e.g. `meta(changelog): Update changelog for 8.1.0`
7. Push the `prepare-release/VERSION` branch to origin and remind the user that the release PR needs to be opened from the `master` branch.
+8. In case you were working on a different branch, you can checkout back to the branch you were working on and continue your work by unstashing the changes you stashed earlier with the command `git stash pop` (only if you stashed changes).
## Key Commands
diff --git a/.cursor/rules/upgrade_opentelemetry_instrumentations.mdc b/.cursor/rules/upgrade_opentelemetry_instrumentations.mdc
new file mode 100644
index 000000000000..b650ae1f5041
--- /dev/null
+++ b/.cursor/rules/upgrade_opentelemetry_instrumentations.mdc
@@ -0,0 +1,33 @@
+---
+description: Use this rule if you are looking to grade OpenTelemetry instrumentations for the Sentry JavaScript SDKs
+globs: *
+alwaysApply: false
+---
+
+# Upgrading OpenTelemetry instrumentations
+
+1. For every package in packages/\*\*:
+ - When upgrading dependencies for OpenTelemetry instrumentations we need to first upgrade `@opentelemetry/instrumentation` to the latest version.
+ **CRITICAL**: `@opentelemetry/instrumentation` MUST NOT include any breaking changes.
+ Read through the changelog of `@opentelemetry/instrumentation` to figure out if breaking changes are included and fail with the reason if it does include breaking changes.
+ You can find the changelog at `https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/CHANGELOG.md`
+
+ - After successfully upgrading `@opentelemetry/instrumentation` upgrade all `@opentelemetry/instrumentation-{instrumentation}` packages, e.g. `@opentelemetry/instrumentation-pg`
+ **CRITICAL**: `@opentelemetry/instrumentation-{instrumentation}` MUST NOT include any breaking changes.
+ Read through the changelog of `@opentelemetry/instrumentation-{instrumentation}` to figure out if breaking changes are included and fail with the reason if it does including breaking changes.
+ You can find the changelogs at `https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/instrumentation-{instrumentation}/CHANGELOG.md`.
+
+ - Finally, upgrade third party instrumentations to their latest versions, these are currently:
+ - @prisma/instrumentation
+
+ **CRITICAL**: Upgrades to third party instrumentations MUST NOT include breaking changes.
+ Read through the changelog of each third party instrumentation to figure out if breaking changes are included and fail with the reason if it does include breaking changes.
+
+2. For packages and apps in dev-packages/\*\*:
+ - If an app depends on `@opentelemetry/instrumentation` >= 0.200.x upgrade it to the latest version.
+ **CRITICAL**: `@opentelemetry/instrumentation` MUST NOT include any breaking changes.
+
+ - If an app depends on `@opentelemetry/instrumentation-http` >= 0.200.x upgrade it to the latest version.
+ **CRITICAL**: `@opentelemetry/instrumentation-http` MUST NOT include any breaking changes.
+
+3. Generate a new yarn lock file.
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index 8acac6fd2709..c09984de5c3b 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -136,13 +136,14 @@ body:
id: additional
attributes:
label: Additional Context
- description:
- Add any other context here. Please keep the pre-filled text, which helps us manage issue prioritization.
- value: |-
- Tip: React with đ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it.
+ description: Add any other context here.
validations:
required: false
- - type: markdown
+ - type: dropdown
attributes:
- value: |-
- ## Thanks đ
+ label: 'Priority'
+ description: Please keep the pre-filled option, which helps us manage issue prioritization.
+ default: 0
+ options:
+ - React with đ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1`
+ or `me too`, to help us triage it.
diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml
index 2859c10d2dc0..3809730ade4c 100644
--- a/.github/ISSUE_TEMPLATE/feature.yml
+++ b/.github/ISSUE_TEMPLATE/feature.yml
@@ -27,14 +27,14 @@ body:
id: additional
attributes:
label: Additional Context
- description:
- Add any other context here. Please keep the pre-filled text, which helps us manage feature prioritization.
- value: |-
- Tip: React with đ to help prioritize this improvement. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it.
+ description: Add any other context here.
validations:
required: false
- - type: markdown
+ - type: dropdown
attributes:
- value: |-
- ## Thanks đ
- Check our [triage docs](https://open.sentry.io/triage/) for what to expect next.
+ label: 'Priority'
+ description: Please keep the pre-filled option, which helps us manage issue prioritization.
+ default: 0
+ options:
+ - React with đ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1`
+ or `me too`, to help us triage it.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 1df50881932d..66d551fabef8 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -14,9 +14,15 @@ updates:
interval: 'weekly'
allow:
- dependency-name: '@sentry/*'
- - dependency-name: '@opentelemetry/*'
- - dependency-name: '@prisma/instrumentation'
- dependency-name: '@playwright/test'
+ - dependency-name: '@opentelemetry/*'
+ ignore:
+ - dependency-name: '@opentelemetry/instrumentation'
+ - dependency-name: '@opentelemetry/instrumentation-*'
+ groups:
+ opentelemetry:
+ patterns:
+ - '@opentelemetry/*'
versioning-strategy: increase
commit-message:
prefix: feat
diff --git a/.github/dependency-review-config.yml b/.github/dependency-review-config.yml
index 1a8f76e430d1..8608d2381ace 100644
--- a/.github/dependency-review-config.yml
+++ b/.github/dependency-review-config.yml
@@ -9,3 +9,5 @@ allow-ghsas:
- GHSA-v784-fjjh-f8r4
# Next.js Cache poisoning - We require a vulnerable version for E2E testing
- GHSA-gp8f-8m3g-qvj9
+ # devalue vulnerability - this is just used by nuxt & astro as transitive dependency
+ - GHSA-vj54-72f3-p5jv
diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml
index 0507fe879c27..cfaf6db8abef 100644
--- a/.github/workflows/auto-release.yml
+++ b/.github/workflows/auto-release.yml
@@ -15,7 +15,7 @@ jobs:
steps:
- name: Get auth token
id: token
- uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
+ uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
with:
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}
@@ -42,7 +42,7 @@ jobs:
echo "version=$version" >> $GITHUB_OUTPUT
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4066a18eefe2..881b5f4b6580 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -142,7 +142,7 @@ jobs:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
@@ -181,7 +181,7 @@ jobs:
run: yarn build
- name: Upload build artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: build-output
path: ${{ env.CACHED_BUILD_PATHS }}
@@ -242,7 +242,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -271,7 +271,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -300,7 +300,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -330,7 +330,7 @@ jobs:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
@@ -352,7 +352,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -374,7 +374,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -386,7 +386,7 @@ jobs:
run: yarn build:tarball
- name: Archive artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
with:
name: ${{ github.sha }}
retention-days: 90
@@ -415,7 +415,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -456,7 +456,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Set up Bun
@@ -481,7 +481,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Set up Deno
@@ -518,7 +518,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
- name: Restore caches
@@ -607,7 +607,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -629,7 +629,7 @@ jobs:
format(' --shard={0}/{1}', matrix.shard, matrix.shards) || '' }}
- name: Upload Playwright Traces
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: failure()
with:
name:
@@ -671,7 +671,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -692,7 +692,7 @@ jobs:
yarn test:loader
- name: Upload Playwright Traces
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: failure()
with:
name: playwright-traces-job_browser_loader_tests-${{ matrix.bundle}}
@@ -719,7 +719,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -757,7 +757,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
- name: Restore caches
@@ -793,7 +793,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -821,7 +821,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
- name: Restore caches
@@ -873,7 +873,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Restore caches
@@ -941,7 +941,7 @@ jobs:
with:
version: 9.15.9
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/package.json'
- name: Set up Bun
@@ -1005,7 +1005,7 @@ jobs:
run: ${{ matrix.assert-command || 'pnpm test:assert' }}
- name: Upload Playwright Traces
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: failure()
with:
name: playwright-traces-job_e2e_playwright_tests-${{ matrix.test-application}}
@@ -1019,7 +1019,7 @@ jobs:
node ./scripts/normalize-e2e-test-dump-transaction-events.js
- name: Upload E2E Test Event Dumps
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: failure()
with:
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
@@ -1071,7 +1071,7 @@ jobs:
with:
version: 9.15.9
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/package.json'
- name: Restore caches
@@ -1131,7 +1131,7 @@ jobs:
node ./scripts/normalize-e2e-test-dump-transaction-events.js
- name: Upload E2E Test Event Dumps
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: failure()
with:
name: E2E Test Dump (${{ matrix.label || matrix.test-application }})
@@ -1168,6 +1168,7 @@ jobs:
job_lint,
job_check_format,
job_circular_dep_check,
+ job_size_check,
]
# Always run this, even if a dependent job failed
if: always()
diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml
index fbf476c369a4..57290080c8de 100644
--- a/.github/workflows/canary.yml
+++ b/.github/workflows/canary.yml
@@ -35,7 +35,7 @@ jobs:
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Check canary cache
@@ -76,11 +76,8 @@ jobs:
build-command: 'test:build-canary'
label: 'create-react-app (canary)'
- test-application: 'nextjs-app-dir'
- build-command: 'test:build-canary'
- label: 'nextjs-app-dir (canary)'
- - test-application: 'nextjs-app-dir'
- build-command: 'test:build-latest'
- label: 'nextjs-app-dir (latest)'
+ build-command: 'test:build-15'
+ label: 'nextjs-app-dir (next@15)'
- test-application: 'nextjs-13'
build-command: 'test:build-latest'
label: 'nextjs-13 (latest)'
@@ -90,12 +87,15 @@ jobs:
- test-application: 'nextjs-14'
build-command: 'test:build-latest'
label: 'nextjs-14 (latest)'
- - test-application: 'nextjs-15'
- build-command: 'test:build-canary'
- label: 'nextjs-15 (canary)'
- test-application: 'nextjs-15'
build-command: 'test:build-latest'
label: 'nextjs-15 (latest)'
+ - test-application: 'nextjs-16'
+ build-command: 'test:build-canary'
+ label: 'nextjs-16 (canary)'
+ - test-application: 'nextjs-16'
+ build-command: 'test:build-canary-webpack'
+ label: 'nextjs-16 (canary-webpack)'
- test-application: 'nextjs-turbo'
build-command: 'test:build-canary'
label: 'nextjs-turbo (canary)'
@@ -125,7 +125,7 @@ jobs:
version: 9.15.9
- name: Set up Node
if: matrix.test-application != 'angular-20'
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}/package.json'
diff --git a/.github/workflows/clear-cache.yml b/.github/workflows/clear-cache.yml
index 97aeb53365e7..0f5f2241b34a 100644
--- a/.github/workflows/clear-cache.yml
+++ b/.github/workflows/clear-cache.yml
@@ -26,7 +26,7 @@ jobs:
- uses: actions/checkout@v5
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 8c042c5aa44f..6d6b67201d5e 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -50,7 +50,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v3
+ uses: github/codeql-action/init@v4
with:
config-file: ./.github/codeql/codeql-config.yml
queries: security-extended
@@ -63,7 +63,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@v3
+ uses: github/codeql-action/autobuild@v4
# âšī¸ Command-line programs to run using the OS shell.
# đ https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
@@ -77,4 +77,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v3
+ uses: github/codeql-action/analyze@v4
diff --git a/.github/workflows/external-contributors.yml b/.github/workflows/external-contributors.yml
index 1735a89a5446..c085f9958452 100644
--- a/.github/workflows/external-contributors.yml
+++ b/.github/workflows/external-contributors.yml
@@ -22,7 +22,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
diff --git a/.github/workflows/flaky-test-detector.yml b/.github/workflows/flaky-test-detector.yml
index 5103f1f43a2d..a6ed22e04f6a 100644
--- a/.github/workflows/flaky-test-detector.yml
+++ b/.github/workflows/flaky-test-detector.yml
@@ -32,7 +32,7 @@ jobs:
- name: Check out current branch
uses: actions/checkout@v5
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
cache: 'yarn'
@@ -71,7 +71,7 @@ jobs:
TEST_RUN_COUNT: 'AUTO'
- name: Upload Playwright Traces
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v5
if: failure() && steps.test.outcome == 'failure'
with:
name: playwright-test-results
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 05c465036ce4..a2cb3fcd9600 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -19,7 +19,7 @@ jobs:
steps:
- name: Get auth token
id: token
- uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1
+ uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
with:
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}
@@ -28,7 +28,7 @@ jobs:
token: ${{ steps.token.outputs.token }}
fetch-depth: 0
- name: Set up Node
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Prepare release
diff --git a/.gitignore b/.gitignore
index f381e7e6e24d..36f8a3f6b9fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,3 +61,6 @@ packages/gatsby/gatsby-node.d.ts
# intellij
*.iml
/**/.wrangler/*
+
+#junit reports
+packages/**/*.junit.xml
diff --git a/.size-limit.js b/.size-limit.js
index 59ad29c3ccf8..6e6ee0f68303 100644
--- a/.size-limit.js
+++ b/.size-limit.js
@@ -5,14 +5,14 @@ module.exports = [
// Browser SDK (ESM)
{
name: '@sentry/browser',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init'),
gzip: true,
limit: '25 KB',
},
{
name: '@sentry/browser - with treeshaking flags',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init'),
gzip: true,
limit: '24.1 KB',
@@ -35,21 +35,28 @@ module.exports = [
},
{
name: '@sentry/browser (incl. Tracing)',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'browserTracingIntegration'),
gzip: true,
- limit: '40.7 KB',
+ limit: '42 KB',
+ },
+ {
+ name: '@sentry/browser (incl. Tracing, Profiling)',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
+ import: createImport('init', 'browserTracingIntegration', 'browserProfilingIntegration'),
+ gzip: true,
+ limit: '48 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay)',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration'),
gzip: true,
limit: '80 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay) - with treeshaking flags',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration'),
gzip: true,
limit: '75 KB',
@@ -72,38 +79,38 @@ module.exports = [
},
{
name: '@sentry/browser (incl. Tracing, Replay with Canvas)',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'replayCanvasIntegration'),
gzip: true,
- limit: '84 KB',
+ limit: '85 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay, Feedback)',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'feedbackIntegration'),
gzip: true,
- limit: '96 KB',
+ limit: '97 KB',
},
{
name: '@sentry/browser (incl. Feedback)',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'feedbackIntegration'),
gzip: true,
limit: '42 KB',
},
{
name: '@sentry/browser (incl. sendFeedback)',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'sendFeedback'),
gzip: true,
limit: '30 KB',
},
{
name: '@sentry/browser (incl. FeedbackAsync)',
- path: 'packages/browser/build/npm/esm/index.js',
+ path: 'packages/browser/build/npm/esm/prod/index.js',
import: createImport('init', 'feedbackAsyncIntegration'),
gzip: true,
- limit: '34 KB',
+ limit: '35 KB',
},
// React SDK (ESM)
{
@@ -120,7 +127,7 @@ module.exports = [
import: createImport('init', 'ErrorBoundary', 'reactRouterV6BrowserTracingIntegration'),
ignore: ['react/jsx-runtime'],
gzip: true,
- limit: '43 KB',
+ limit: '44 KB',
},
// Vue SDK (ESM)
{
@@ -128,14 +135,14 @@ module.exports = [
path: 'packages/vue/build/esm/index.js',
import: createImport('init'),
gzip: true,
- limit: '29 KB',
+ limit: '30 KB',
},
{
name: '@sentry/vue (incl. Tracing)',
path: 'packages/vue/build/esm/index.js',
import: createImport('init', 'browserTracingIntegration'),
gzip: true,
- limit: '43 KB',
+ limit: '44 KB',
},
// Svelte SDK (ESM)
{
@@ -150,13 +157,13 @@ module.exports = [
name: 'CDN Bundle',
path: createCDNPath('bundle.min.js'),
gzip: true,
- limit: '27 KB',
+ limit: '27.5 KB',
},
{
name: 'CDN Bundle (incl. Tracing)',
path: createCDNPath('bundle.tracing.min.js'),
gzip: true,
- limit: '42 KB',
+ limit: '42.5 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay)',
@@ -176,21 +183,21 @@ module.exports = [
path: createCDNPath('bundle.min.js'),
gzip: false,
brotli: false,
- limit: '80 KB',
+ limit: '82 KB',
},
{
name: 'CDN Bundle (incl. Tracing) - uncompressed',
path: createCDNPath('bundle.tracing.min.js'),
gzip: false,
brotli: false,
- limit: '123 KB',
+ limit: '127 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay) - uncompressed',
path: createCDNPath('bundle.tracing.replay.min.js'),
gzip: false,
brotli: false,
- limit: '240 KB',
+ limit: '245 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed',
@@ -206,7 +213,7 @@ module.exports = [
import: createImport('init'),
ignore: ['next/router', 'next/constants'],
gzip: true,
- limit: '45 KB',
+ limit: '46 KB',
},
// SvelteKit SDK (ESM)
{
@@ -215,7 +222,7 @@ module.exports = [
import: createImport('init'),
ignore: ['$app/stores'],
gzip: true,
- limit: '41 KB',
+ limit: '42 KB',
},
// Node-Core SDK (ESM)
{
@@ -224,7 +231,7 @@ module.exports = [
import: createImport('init'),
ignore: [...builtinModules, ...nodePrefixedBuiltinModules],
gzip: true,
- limit: '51 KB',
+ limit: '52 KB',
},
// Node SDK (ESM)
{
@@ -233,7 +240,7 @@ module.exports = [
import: createImport('init'),
ignore: [...builtinModules, ...nodePrefixedBuiltinModules],
gzip: true,
- limit: '156 KB',
+ limit: '160 KB',
},
{
name: '@sentry/node - without tracing',
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b6d065c6c800..58e2cf7bd830 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,395 @@
- "You miss 100 percent of the chances you don't take. â Wayne Gretzky" â Michael Scott
+## 10.27.0
+
+### Important Changes
+
+- **feat(deps): Bump OpenTelemetry ([#18239](https://github.com/getsentry/sentry-javascript/pull/18239))**
+ - Bump @opentelemetry/context-async-hooks from ^2.1.0 to ^2.2.0
+ - Bump @opentelemetry/core from ^2.1.0 to ^2.2.0
+ - Bump @opentelemetry/resources from ^2.1.0 to ^2.2.0
+ - Bump @opentelemetry/sdk-trace-base from ^2.1.0 to ^2.2.0
+ - Bump @opentelemetry/sdk-trace-node from ^2.1.0 to ^2.2.0
+ - Bump @opentelemetry/instrumentation from 0.204.0 to 0.208.0
+ - Bump @opentelemetry/instrumentation-amqplib from 0.51.0 to 0.55.0
+ - Bump @opentelemetry/instrumentation-aws-sdk from 0.59.0 to 0.64.0
+ - Bump @opentelemetry/instrumentation-connect from 0.48.0 to 0.52.0
+ - Bump @opentelemetry/instrumentation-dataloader from 0.22.0 to 0.26.0
+ - Bump @opentelemetry/instrumentation-express from 0.53.0 to 0.57.0
+ - Bump @opentelemetry/instrumentation-fs from 0.24.0 to 0.28.0
+ - Bump @opentelemetry/instrumentation-generic-pool from 0.48.0 to 0.52.0
+ - Bump @opentelemetry/instrumentation-graphql from 0.52.0 to 0.56.0
+ - Bump @opentelemetry/instrumentation-hapi from 0.51.0 to 0.55.0
+ - Bump @opentelemetry/instrumentation-http from 0.204.0 to 0.208.0
+ - Bump @opentelemetry/instrumentation-ioredis from 0.52.0 to 0.56.0
+ - Bump @opentelemetry/instrumentation-kafkajs from 0.14.0 to 0.18.0
+ - Bump @opentelemetry/instrumentation-knex from 0.49.0 to 0.53.0
+ - Bump @opentelemetry/instrumentation-koa from 0.52.0 to 0.57.0
+ - Bump @opentelemetry/instrumentation-lru-memoizer from 0.49.0 to 0.53.0
+ - Bump @opentelemetry/instrumentation-mongodb from 0.57.0 to 0.61.0
+ - Bump @opentelemetry/instrumentation-mongoose from 0.51.0 to 0.55.0
+ - Bump @opentelemetry/instrumentation-mysql from 0.50.0 to 0.54.0
+ - Bump @opentelemetry/instrumentation-mysql2 from 0.51.0 to 0.55.0
+ - Bump @opentelemetry/instrumentation-nestjs-core from 0.50.0 to 0.55.0
+ - Bump @opentelemetry/instrumentation-pg from 0.57.0 to 0.61.0
+ - Bump @opentelemetry/instrumentation-redis from 0.53.0 to 0.57.0
+ - Bump @opentelemetry/instrumentation-tedious from 0.23.0 to 0.27.0
+ - Bump @opentelemetry/instrumentation-undici from 0.15.0 to 0.19.0
+ - Bump @prisma/instrumentation from 6.15.0 to 6.19.0
+
+- **feat(browserprofiling): Add `manual` mode and deprecate old profiling ([#18189](https://github.com/getsentry/sentry-javascript/pull/18189))**
+
+ Adds the `manual` lifecycle mode for UI profiling (the default mode), allowing profiles to be captured manually with `Sentry.uiProfiler.startProfiler()` and `Sentry.uiProfiler.stopProfiler()`.
+ The previous transaction-based profiling is with `profilesSampleRate` is now deprecated in favor of the new UI Profiling with `profileSessionSampleRate`.
+
+### Other Changes
+
+- feat(core): Add `gibibyte` and `pebibyte` to `InformationUnit` type ([#18241](https://github.com/getsentry/sentry-javascript/pull/18241))
+- feat(core): Add scope attribute APIs ([#18165](https://github.com/getsentry/sentry-javascript/pull/18165))
+- feat(core): Re-add `_experiments.enableLogs` option ([#18299](https://github.com/getsentry/sentry-javascript/pull/18299))
+- feat(core): Use `maxValueLength` on error messages ([#18301](https://github.com/getsentry/sentry-javascript/pull/18301))
+- feat(deps): bump @sentry/bundler-plugin-core from 4.3.0 to 4.6.1 ([#18273](https://github.com/getsentry/sentry-javascript/pull/18273))
+- feat(deps): bump @sentry/cli from 2.56.0 to 2.58.2 ([#18271](https://github.com/getsentry/sentry-javascript/pull/18271))
+- feat(node): Add tracing support for AzureOpenAI ([#18281](https://github.com/getsentry/sentry-javascript/pull/18281))
+- feat(node): Fix local variables capturing for out-of-app frames ([#18245](https://github.com/getsentry/sentry-javascript/pull/18245))
+- fix(core): Add a PromiseBuffer for incoming events on the client ([#18120](https://github.com/getsentry/sentry-javascript/pull/18120))
+- fix(core): Always redact content of sensitive headers regardless of `sendDefaultPii` ([#18311](https://github.com/getsentry/sentry-javascript/pull/18311))
+- fix(metrics): Update return type of `beforeSendMetric` ([#18261](https://github.com/getsentry/sentry-javascript/pull/18261))
+- fix(nextjs): universal random tunnel path support ([#18257](https://github.com/getsentry/sentry-javascript/pull/18257))
+- ref(react): Add more guarding against wildcards in lazy route transactions ([#18155](https://github.com/getsentry/sentry-javascript/pull/18155))
+- chore(deps): bump glob from 11.0.1 to 11.1.0 in /packages/react-router ([#18243](https://github.com/getsentry/sentry-javascript/pull/18243))
+
+ Internal Changes
+ - build(deps): bump hono from 4.9.7 to 4.10.3 in /dev-packages/e2e-tests/test-applications/cloudflare-hono ([#18038](https://github.com/getsentry/sentry-javascript/pull/18038))
+ - chore: Add `bump_otel_instrumentations` cursor command ([#18253](https://github.com/getsentry/sentry-javascript/pull/18253))
+ - chore: Add external contributor to CHANGELOG.md ([#18297](https://github.com/getsentry/sentry-javascript/pull/18297))
+ - chore: Add external contributor to CHANGELOG.md ([#18300](https://github.com/getsentry/sentry-javascript/pull/18300))
+ - chore: Do not update opentelemetry ([#18254](https://github.com/getsentry/sentry-javascript/pull/18254))
+ - chore(angular): Add Angular 21 Support ([#18274](https://github.com/getsentry/sentry-javascript/pull/18274))
+ - chore(deps): bump astro from 4.16.18 to 5.15.9 in /dev-packages/e2e-tests/test-applications/cloudflare-astro ([#18259](https://github.com/getsentry/sentry-javascript/pull/18259))
+ - chore(dev-deps): Update some dev dependencies ([#17816](https://github.com/getsentry/sentry-javascript/pull/17816))
+ - ci(deps): Bump actions/create-github-app-token from 2.1.1 to 2.1.4 ([#17825](https://github.com/getsentry/sentry-javascript/pull/17825))
+ - ci(deps): bump actions/setup-node from 4 to 6 ([#18077](https://github.com/getsentry/sentry-javascript/pull/18077))
+ - ci(deps): bump actions/upload-artifact from 4 to 5 ([#18075](https://github.com/getsentry/sentry-javascript/pull/18075))
+ - ci(deps): bump github/codeql-action from 3 to 4 ([#18076](https://github.com/getsentry/sentry-javascript/pull/18076))
+ - doc(sveltekit): Update documentation link for SvelteKit guide ([#18298](https://github.com/getsentry/sentry-javascript/pull/18298))
+ - test(e2e): Fix astro config in test app ([#18282](https://github.com/getsentry/sentry-javascript/pull/18282))
+ - test(nextjs): Remove debug logs from e2e test ([#18250](https://github.com/getsentry/sentry-javascript/pull/18250))
+ Internal Changes
+
+- chore: Fix missing changelog quote we use for attribution placement ([#18237](https://github.com/getsentry/sentry-javascript/pull/18237))
+- chore: move tip about prioritizing issues ([#18071](https://github.com/getsentry/sentry-javascript/pull/18071))
+- chore(e2e): Pin `@embroider/addon-shim` to 1.10.0 for the e2e ember-embroider ([#18173](https://github.com/getsentry/sentry-javascript/pull/18173))
+- chore(react-router): Fix casing on deprecation notices ([#18221](https://github.com/getsentry/sentry-javascript/pull/18221))
+- chore(test): Use correct `testTimeout` field in bundler-tests vitest config
+- chore(e2e): Bump zod in e2e tests ([#18251](https://github.com/getsentry/sentry-javascript/pull/18251))
+- test(browser-integration): Fix incorrect tag value assertions ([#18162](https://github.com/getsentry/sentry-javascript/pull/18162))
+- test(profiling): Add test utils to validate Profile Chunk envelope ([#18170](https://github.com/getsentry/sentry-javascript/pull/18170))
+- ref(e2e-ember): Remove `@embroider/addon-shim` override ([#18180](https://github.com/getsentry/sentry-javascript/pull/18180))
+- ref(browser): Move trace lifecycle listeners to class function ([#18231](https://github.com/getsentry/sentry-javascript/pull/18231))
+- ref(browserprofiling): Move and rename profiler class to UIProfiler ([#18187](https://github.com/getsentry/sentry-javascript/pull/18187))
+- ref(core): Move ai integrations from utils to tracing ([#18185](https://github.com/getsentry/sentry-javascript/pull/18185))
+- ref(core): Optimize `Scope.setTag` bundle size and adjust test ([#18182](https://github.com/getsentry/sentry-javascript/pull/18182))
+
+ Internal Changes
+
+- chore(build): Fix incorrect versions after merge ([#18154](https://github.com/getsentry/sentry-javascript/pull/18154))
+ Internal Changes
+
+- chore: X handle update ([#18117](https://github.com/getsentry/sentry-javascript/pull/18117))
+- chore(eslint): Add eslint-plugin-regexp rule (dev-packages) ([#18063](https://github.com/getsentry/sentry-javascript/pull/18063))
+- test(next): fix flakey tests ([#18100](https://github.com/getsentry/sentry-javascript/pull/18100))
+- test(node-core): Proof that withMonitor doesn't create a new trace ([#18057](https://github.com/getsentry/sentry-javascript/pull/18057))
+ Internal Changes
+
+- fix(tests): un-override nitro dep version for nuxt-3 test ([#18056](https://github.com/getsentry/sentry-javascript/pull/18056))
+- fix(e2e): Add p-map override to fix React Router 7 test builds ([#18068](https://github.com/getsentry/sentry-javascript/pull/18068))
+- feat: Add a note to save changes before starting ([#17987](https://github.com/getsentry/sentry-javascript/pull/17987))
+- test(browser): Add test for INP target name after navigation or DOM changes ([#18033](https://github.com/getsentry/sentry-javascript/pull/18033))
+- chore: Add external contributor to CHANGELOG.md ([#18032](https://github.com/getsentry/sentry-javascript/pull/18032))
+- chore(aws-serverless): Fix typo in timeout warning function name ([#18031](https://github.com/getsentry/sentry-javascript/pull/18031))
+- chore(browser): upgrade fake-indexeddb to v6 ([#17975](https://github.com/getsentry/sentry-javascript/pull/17975))
+- chore(tests): pass test flags through to the test command ([#18062](https://github.com/getsentry/sentry-javascript/pull/18062))
+
+ Internal Changes
+
+- chore: Add required size_check for GH Actions ([#18009](https://github.com/getsentry/sentry-javascript/pull/18009))
+- chore: Upgrade madge to v8 ([#17957](https://github.com/getsentry/sentry-javascript/pull/17957))
+- test(hono): Fix hono e2e tests ([#18000](https://github.com/getsentry/sentry-javascript/pull/18000))
+- test(react-router): Fix `getMetaTagTransformer` tests for Vitest compatibility ([#18013](https://github.com/getsentry/sentry-javascript/pull/18013))
+- test(react): Add parameterized route tests for `createHashRouter` ([#17789](https://github.com/getsentry/sentry-javascript/pull/17789))
+
+ Internal Changes
+
+- build: Update to typescript 5.8.0 ([#17710](https://github.com/getsentry/sentry-javascript/pull/17710))
+- chore: Add external contributor to CHANGELOG.md ([#17949](https://github.com/getsentry/sentry-javascript/pull/17949))
+- chore(build): Upgrade nodemon to 3.1.10 ([#17956](https://github.com/getsentry/sentry-javascript/pull/17956))
+- chore(ci): Fix external contributor action when multiple contributions existed ([#17950](https://github.com/getsentry/sentry-javascript/pull/17950))
+- chore(solid): Remove unnecessary import from README ([#17947](https://github.com/getsentry/sentry-javascript/pull/17947))
+- test(nextjs): Fix proxy/middleware test ([#17970](https://github.com/getsentry/sentry-javascript/pull/17970))
+
+ Internal Changes
+- chore(nextjs): Add Next.js 16 peer dependency ([#17925](https://github.com/getsentry/sentry-javascript/pull/17925))
+- chore(ci): Update Next.js canary testing ([#17939](https://github.com/getsentry/sentry-javascript/pull/17939))
+- chore: Bump size limit ([#17941](https://github.com/getsentry/sentry-javascript/pull/17941))
+- test(nextjs): Add next@16 e2e test ([#17922](https://github.com/getsentry/sentry-javascript/pull/17922))
+- test(nextjs): Update next 15 tests ([#17919](https://github.com/getsentry/sentry-javascript/pull/17919))
+- chore: Add external contributor to CHANGELOG.md ([#17915](https://github.com/getsentry/sentry-javascript/pull/17915))
+- chore: Add external contributor to CHANGELOG.md ([#17928](https://github.com/getsentry/sentry-javascript/pull/17928))
+- chore: Add external contributor to CHANGELOG.md ([#17940](https://github.com/getsentry/sentry-javascript/pull/17940))
+