@sentry/cloudflare/vite: Upload source maps from the Vite plugin
@JPeer264 ya está trabajando en esto.
Desde el 20/9/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Description
@sentry/cloudflare/vite instruments the Worker, but it does not upload source maps. To get readable stack traces today, users add a second plugin themselves:
// vite.config.ts
import { cloudflare } from '@cloudflare/vite-plugin';
import { sentryCloudflareVitePlugin } from '@sentry/cloudflare/vite';
import { sentryVitePlugin } from '@sentry/vite-plugin';
import { defineConfig } from 'vite';
export default defineConfig({
build: { sourcemap: true },
plugins: [
cloudflare(),
sentryCloudflareVitePlugin(),
sentryVitePlugin({ org: '...', project: '...', authToken: process.env.SENTRY_AUTH_TOKEN }),
],
});
Two Sentry plugins for one Worker is easy to get wrong, and it leaves every Cloudflare-specific detail (below) to the user.
Proposal: let sentryCloudflareVitePlugin upload source maps itself, through an option:
sentryCloudflareVitePlugin({
sourceMapsUploadOptions: {
org: '...',
project: '...',
authToken: process.env.SENTRY_AUTH_TOKEN,
},
});
The plugin composes sentryVitePlugin from @sentry/bundler-plugins/vite, the same way @sentry/sveltekit, @sentry/solidstart, @sentry/nuxt, @sentry/react-router and @sentry/astro already do (see packages/sveltekit/src/vite/sourceMaps.ts). Upload stays opt-in: without an auth token, org and project, nothing is uploaded.
Cloudflare specifics the plugin should handle
- Enable source maps for the Worker build. The build needs
build.sourcemap, which many Cloudflare templates leave off. The plugin should turn it on (or warn) for the server environment. - Do not ship the maps. A Worker has a size limit, and the maps would be public. The maps must not end up in the deployed bundle or in the assets directory, so
sourcemaps.filesToDeleteAfterUpload(or the equivalent) must cover the generated server output. - Multiple Vite environments. A Cloudflare build produces the Worker environment plus client assets (and framework builds such as vinext add
rscandssr). The plugin should upload the ones that belong to this app and skip the rest. - Release must match the runtime release.
packages/cloudflare/src/options.tsresolves the release as: user option, thenSENTRY_RELEASE, then theCF_VERSION_METADATA.idbinding. The version metadata id only exists after the deploy, so a build-time upload under a different release name does not symbolicate. The plugin should document this and make the working combination easy, for example by requiring an explicitreleasein both places whenCF_VERSION_METADATAis used. - Wrangler's own
upload_source_maps. That option sends maps to Cloudflare, not to Sentry. The docs should say the two are independent, so users do not think one replaces the other. - Keep the upload out of the runtime graph.
@sentry/cliand the bundler plugin must not be reachable from the Worker bundle. See #23495, where a static re-export pulled them into the server graph.
Scope
sourceMapsUploadOptionsonSentryCloudflareVitePluginOptions, plus the composedsentryVitePlugin.@sentry/bundler-pluginsas a dependency of@sentry/cloudflare(already used by the framework SDKs listed above).- Tests: upload is off without credentials, the returned plugin list contains the upload plugin when configured, and the generated maps are deleted after upload.
- Docs: a Cloudflare source maps section, including the release caveat.
Notes
- Related but different: #19213 (OpenNext worker.js source maps) and #20051 (Nuxt on Cloudflare,
js_invalid_sourcemap_location). Both are about apps built by another framework toolchain, not about this plugin.
- Lenguaje dominante
- TypeScript
- Estrellas
- 8.7k
- Forks
- 1.9k
- Merge medio
- 1 d 16 h
- PR fusionados (30 d)
- 576
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de getsentry/sentry-javascript
-
Browser Bug Next.js Traces Waiting for: Product Owner
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
getsentry/sentry-javascript#24672 · 1 comentario ·
-
Flaky Test React Router Framework Spans Tests
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
getsentry/sentry-javascript#24348 · 1 comentario ·
-
javascript
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
getsentry/sentry-javascript#24200 · 2 comentarios ·
-
javascript Task
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
getsentry/sentry-javascript#24134 · 1 comentario ·
-
Cloudflare Workers javascript Tests
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
getsentry/sentry-javascript#24051 · 1 comentario ·
Todos los issues de getsentry/sentry-javascript
Issues similares
-
bug(cli): hapi doctor inline-media prints a fabricated B:\ helper-script path in packaged installs Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Crush Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
catppuccin/catppuccin#3125 ·
-
Add a SECURITY.md Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
ElementsProject/cln-application#167 · 1 comentario · 1 reacción ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Quantco/pnpm-licenses#17 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100