Skip to content

fix(deps): Bump the sentry CLI to ^0.49.0 - #26200

Merged
BYK merged 1 commit into
developfrom
feat/bump-sentry-cli-0.49
Nov 7, 2026
Merged

BYK merged 1 commit into
developfrom
feat/bump-sentry-cli-0.49

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

Why: Before sentry 0.49.0, every createSentrySDK() call opened and wrote the CLI's local cli.db. When a build runs on a different Node version than the one that created that file (for example through npx sentry), the open fails with SQLite3Error: unable to open database file. The build still passes, but release creation and source map uploads fail silently. In 0.49.0, SDK calls write no local state by default (getsentry/toolkit#2074) and fall back to running without cli.db (getsentry/toolkit#2069, getsentry/toolkit#2070). This bumps @sentry/bundler-plugins, @sentry/remix and @sentry/react-router, plus the bundler plugin integration tests so the workspace resolves a single version. None of them set persist, so the new default applies as-is.

How to review: The four package.json ranges and the lockfile. 0.49.0 was published today, so pnpm added it to minimumReleaseAgeExclude, as with the earlier first-party @sentry/* entries there.

Unsure about: The cloudflare-*-send-to-sentry e2e apps pin sentry@~0.44.1 on their own. I left them alone because they're separate test apps and don't go through the bundler plugin.

Closes #26197

via @BYK.

--

View Session in Sentry

SDK calls in sentry 0.49.0 write no local state by default, so release
creation and source map uploads no longer fail when the CLI's cli.db
can't be opened (for example after another Node version created it).

Closes #26197

Co-Authored-By: BYK <126780+BYK@users.noreply.github.com>
@BYK
BYK marked this pull request as ready for review November 7, 2026 11:43
@BYK
BYK requested review from a team as code owners November 7, 2026 11:43
@BYK
BYK requested review from andreiborza, chargome, logaretm, msonnb, mydea and s1gr1d and removed request for a team November 7, 2026 11:43
@BYK
BYK enabled auto-merge (squash) November 7, 2026 11:43

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 08211e8. Configure here.

Comment thread packages/bundler-plugins/package.json Resolved
@github-actions

github-actions Bot commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Compared: 3674892 (PR test merge using develop at 5b78f8e)

Against: 5b78f8e (develop) · base run #65363

✅ Baseline matches: this diff contains only this PR's changes.

Path Size % Change Change
@sentry/browser 29.92 kB - -
@sentry/browser - with treeshaking flags 28.08 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.97 kB - -
@sentry/browser (incl. Tracing) 52.2 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 52.22 kB - -
@sentry/browser (incl. Tracing, Profiling) 55.18 kB - -
@sentry/browser (incl. Tracing, Replay) 92.52 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 81.2 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 97.25 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 110.25 kB - -
@sentry/browser (incl. Feedback) 47.52 kB - -
@sentry/browser (incl. sendFeedback) 35.02 kB - -
@sentry/browser (incl. FeedbackAsync) 40.13 kB - -
@sentry/browser (incl. Metrics) 31.48 kB - -
@sentry/browser (incl. Logs) 31.77 kB - -
@sentry/browser (incl. Metrics & Logs) 32.45 kB - -
@sentry/react 31.78 kB - -
@sentry/react (incl. Tracing) 54.62 kB - -
@sentry/vue 38.24 kB - -
@sentry/vue (incl. Tracing) 55.24 kB - -
@sentry/svelte 29.95 kB - -
@sentry/remix (Remix 3 client bundle) 57.83 kB - -
CDN Bundle 31.72 kB - -
CDN Bundle (incl. Tracing) 52.81 kB - -
CDN Bundle (incl. Logs, Metrics) 34.52 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 55.32 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 75.9 kB - -
CDN Bundle (incl. Tracing, Replay) 90.98 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 93.54 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 97.11 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 99.71 kB - -
CDN Bundle - uncompressed 92.76 kB - -
CDN Bundle (incl. Tracing) - uncompressed 155.77 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 101.29 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 163.55 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 232.85 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 277.46 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 285.23 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 291.17 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 298.92 kB - -
@sentry/nextjs (client) 57.64 kB - -
@sentry/sveltekit (client) 52.73 kB - -
@sentry/core/server 44.19 kB - -
@sentry/core/browser 13.93 kB - -
@sentry/node 157.07 kB +0.02% +19 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 82.28 kB - -
@sentry/node - without tracing 96.92 kB +0.03% +26 B 🔺
@sentry/node - without channel injection 137.36 kB +0.02% +22 B 🔺
@sentry/aws-serverless 105.5 kB +0.02% +17 B 🔺
@sentry/cloudflare (withSentry) - minified 201.54 kB - -
@sentry/cloudflare (withSentry) 500.19 kB - -
@sentry/nextjs/cloudflare (withSentry) - minified 223.4 kB - -

View base workflow run

@BYK
BYK merged commit 6c6c040 into develop Nov 7, 2026
431 of 438 checks passed
@BYK
BYK deleted the feat/bump-sentry-cli-0.49 branch November 7, 2026 11:50
@github-actions

github-actions Bot commented Nov 7, 2026

Copy link
Copy Markdown
Contributor

Optional E2E tests

Some optional checks were not successful. They do not block the merge. 7 not successful, 50 successful. See the run.

Check Status
❌ CI: Optional E2E Tests / E2E node-eve (orchestrion) Test (optional) Failing after 2m Details
❌ CI: Optional E2E Tests / E2E node-eve Test (optional) Failing after 2m Details
❌ CI: Optional E2E Tests / E2E cloudflare-pi-durable (latest) Test (optional) Failing after 28s Details
❌ CI: Optional E2E Tests / E2E nextjs-16-cacheComponents (cloudflare) Test (optional) Failing after 10m Details
❌ CI: Optional E2E Tests / E2E node-eve (latest) Test (optional) Failing after 55s Details
❌ CI: Optional E2E Tests / E2E node-flue (latest) Test (optional) Failing after 33s Details
❌ CI: Optional E2E Tests / E2E solidstart-2 Test (optional) Failing after 51s Details
Successful checks
Check Status
✅ CI: Optional E2E Tests / E2E cloudflare-agent Test (optional) Successful in 46s Details
✅ CI: Optional E2E Tests / E2E cloudflare-think (ai v6) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E cloudflare-flue-send-to-sentry Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nextjs-15 (turbo) Test (optional) Successful in 3m Details
✅ CI: Optional E2E Tests / E2E node-mastra (latest) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E astro-7 Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E gen-ai-libraries Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E deno (latest) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E cloudflare-think Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (vinext) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-express-mcp-v1 Test (optional) Successful in 30s Details
✅ CI: Optional E2E Tests / E2E nestjs-12 (latest) Test (optional) Successful in 52s Details
✅ CI: Optional E2E Tests / E2E node-fastify-6 Test (optional) Successful in 32s Details
✅ CI: Optional E2E Tests / E2E nextjs-14 (latest) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E gen-ai-libraries (cloudflare) Test (optional) Successful in 39s Details
✅ CI: Optional E2E Tests / E2E debug-id-sourcemaps Test (optional) Successful in 36s Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (cloudflare, latest) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E nextjs-orpc Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nextjs-16-tunnel (cloudflare) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E gen-ai-libraries (latest) Test (optional) Successful in 52s Details
✅ CI: Optional E2E Tests / E2E cloudflare-pi-durable Test (optional) Successful in 35s Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (deno) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E react-router-7-framework-instrumentation Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E nextjs-15 (latest) Test (optional) Successful in 3m Details
✅ CI: Optional E2E Tests / E2E node-express-send-to-sentry Test (optional) Successful in 53s Details
✅ CI: Optional E2E Tests / E2E astro-7-static Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E cloudflare-workers-send-to-sentry Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E node-fastify-6 (tracer provider) Test (optional) Successful in 35s Details
✅ CI: Optional E2E Tests / E2E cloudflare-mastra Test (optional) Successful in 43s Details
✅ CI: Optional E2E Tests / E2E nextjs-16 (vinext, bun) Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E node-openai-decisions (latest) Test (optional) Successful in 27s Details
✅ CI: Optional E2E Tests / E2E node-pi-durable Test (optional) Successful in 36s Details
✅ CI: Optional E2E Tests / E2E node-express-send-to-sentry-static Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nuxt-5-sourcemaps Test (optional) Successful in 35s Details
✅ CI: Optional E2E Tests / E2E nuxt-5-sourcemaps (client source maps kept) Test (optional) Successful in 41s Details
✅ CI: Optional E2E Tests / E2E react-send-to-sentry Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E nuxt-5 Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E tanstackstart-react-sourcemaps Test (optional) Successful in 32s Details
✅ CI: Optional E2E Tests / E2E node-flue Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-express-mcp-v2 Test (optional) Successful in 34s Details
✅ CI: Optional E2E Tests / E2E tanstackstart-react (latest) Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E nuxt-5 (tunnel-dev) Test (optional) Successful in 56s Details
✅ CI: Optional E2E Tests / E2E tanstackstart-react-cloudflare Test (optional) Successful in 35s Details
✅ CI: Optional E2E Tests / E2E node-mastra Test (optional) Successful in 1m Details
✅ CI: Optional E2E Tests / E2E node-pi-durable (latest) Test (optional) Successful in 36s Details
✅ CI: Optional E2E Tests / E2E node-openai-decisions Test (optional) Successful in 28s Details
✅ CI: Optional E2E Tests / E2E nuxt-5-sourcemaps (static / nuxt generate) Test (optional) Successful in 40s Details
✅ CI: Optional E2E Tests / E2E nuxt-5-cloudflare Test (optional) Successful in 36s Details
✅ CI: Optional E2E Tests / E2E supabase-nextjs Test (optional) Successful in 2m Details
✅ CI: Optional E2E Tests / E2E vue-3 (no Options API) Test (optional) Successful in 1m Details

JPeer264 pushed a commit that referenced this pull request Nov 10, 2026
…aps (#26092)

**Why:** The new `sentry` CLI throws a `ValidationError` for any
directory that has no JS + source map pairs.
`SentryCliAdapter.uploadSourcemaps` uploads directories one at a time,
so the first empty directory stops the whole loop. `@sentry/nextjs`
uploads `.next/server` first, so if server source maps are off, the
client chunks that do have maps never get uploaded. The plugin only logs
the error and the build passes, so this goes unnoticed. CLI 0.48+ stops
reporting this error to Sentry, but it still throws, so the upload still
stops without this change.

The CLI check stays strict on purpose, because it catches build
misconfiguration. The adapter now passes `allowEmpty: true`, collects
the directories that uploaded 0 files, and logs a warning for each. In
direct-upload mode, "Successfully uploaded" is logged only if at least
one directory actually uploaded something. The staged-upload path
already returns early with a warning when no artifact has a source map,
so it is unchanged.

Before:
```
[@sentry/nextjs - Node.js] Error: An error occurred. Couldn't finish all operations: ValidationError: Found 214 JS file(s) in '.next/server' but no companion .map files. [...] Pass --allow-empty to suppress.
# .next/static/chunks is never uploaded
```

After:
```
[@sentry/nextjs - Node.js] Warning: No source maps found in ".next/server", so nothing was uploaded from it. This usually means source map generation is not enabled for this build output. Enable it so Sentry can un-minify stack traces from these files.
[@sentry/nextjs - Node.js] Info: Successfully uploaded source maps to Sentry
# .next/static/chunks is uploaded
```

**How to review:** Start with `src/core/cli.ts`, then the two call sites
in `build-plugin-manager.ts`. `cli-contract.test.ts` runs the real CLI
(now `sentry@^0.49.0` after #26200) against the mock server with one
empty directory followed by one real directory.

**Unsure about:** A directory that does not exist still throws and stops
the loop; `allowEmpty` only covers existing directories without source
maps. I left that case out of this PR.

<!-- junior-request-attribution:start -->
via **bete**, @betegon.
<!-- junior-request-attribution:end -->

<!-- junior-session-footer:start -->
<!-- junior-conversation-id:local%3Aweb%3A667ad986d499815a40e93973 -->

--

[View Session in
Sentry](https://sentry.sentry.io/explore/conversations/local%3Aweb%3A667ad986d499815a40e93973/?project=4510944073809921)

<!-- junior-session-footer:end -->

---------

Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
Co-authored-by: Miguel Betegon <miguel.betegon@sentry.io>
Co-authored-by: bete <28983162+betegon@users.noreply.github.com>
mydea added a commit that referenced this pull request Nov 11, 2026
…undles (#26277)

**Why:** The `solidstart-2` e2e test has been failing on `develop` since
#26200 bumped the Sentry CLI to `^0.49.0`. The server entry of
`@sentry/solidstart` still re-exports the deprecated SolidStart 1
`withSentry`. That pulls `@sentry/bundler-plugins`, and with it the CLI
and `oxc-parser`, into the Nitro server graph. Starting with 0.48, the
CLI ships as code-split ESM. Rolldown still emits its dynamic-import
chunks after tree-shaking the code that imports them; Rollup doesn't.
Nitro also traces `oxc-parser`'s native binding. For every SolidStart 2
app, the result is about 3.6 MB of unused build tooling in
`.output/server` (5.3 MB → 1.7 MB with this change). The CLI chunk also
carries the CLI's own debug IDs, which the app can't upload, and that's
the assertion that fails.

Removing the root `withSentry` export is breaking (#25915, v12), and
lazy imports are off the table. So `sentrySolidStart()` now adds a
`sentry-solidstart-runtime` export condition to server environments. The
exports map resolves that condition to the existing server entry, which
is the same as today's minus `withSentry`. SolidStart 1's
`app.config.ts` never sets the condition, so it still gets `withSentry`.

**How to review:** Start with the `exports` change in `package.json`,
then `makeServerEntryPlugin`. Locally, `solidstart-2` (including the
tunnel-basepath dev variant) and `solidstart` pass against CI tarballs.

**Unsure about:** Whether a custom export condition is the shape we want
here, versus living with the bloat until v12. The plugin only extends
conditions that are already set, because Vite would otherwise replace
its defaults. Nitro and SolidStart always set them for their server
environments. Separately, the Rolldown behaviour seems worth an upstream
issue.

<!-- junior-request-attribution:start -->
via **Francesco Gringl-Novy**.
<!-- junior-request-attribution:end -->

<!-- junior-session-footer:start -->
<!-- junior-conversation-id:slack%3AD0CA8FXFXAS%3A1794301479.516639 -->

--

[View
Session](https://junior-prod.sentry.dev/conversations/slack%3AD0CA8FXFXAS%3A1794301479.516639)
[[Sentry]](https://sentry.sentry.io/explore/conversations/slack%3AD0CA8FXFXAS%3A1794301479.516639/?project=4510944073809921)

<!-- junior-session-footer:end -->

Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
Co-authored-by: Francesco Gringl-Novy <francesco.novy@sentry.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bump the sentry CLI dependency to ^0.49.0

1 participant