fix(svelte): Make component tracking compatible with Svelte 5
depends on #10311
This PR adds compatibility for Svelte 5 by adjusting our component tracking functionality to work with Svelte 5.
TLDR: This change entails a minor behaviour "breaking" change for a subset of Svelte component tracking users.
Our previous implementation relied on an exported internal API (current_component) to automatically detect the name of the component name for the respective spans. This API was removed in Svelte 5, so we can no longer use it. Importing it causes a build error. This means that going forward, calls to trackComponent need to set the componentName option or the span will get the fallback <Svelte Component> name. However, this only applies if the function is called manually.
In case users use our withSentryConfig wrapper in their svelte.config.js, we inject a preprocessor that already creates passes the component name from the component file name to the injected trackComponent call. So nothing changes in this use case - component spans will still automatically get the correct name. We recommend this approach in our docs.
ref #10275
in addition blocked on jest (#10318) - moving to draft
@Lms24 anymore progress on this?
Bundle Report
Changes will decrease total bundle size by 3.37MB :arrow_down:
| Bundle name | Size | Change |
|---|---|---|
| @sentry/svelte-cjs | 13.75kB | 92 bytes :arrow_down: |
| @sentry/svelte-esm | 12.63kB | 91 bytes :arrow_down: |
| @sentry/sveltekit-cjs | 69.31kB | 0 bytes |
| @sentry/sveltekit-esm | 61.08kB | 0 bytes |
| @sentry/types-cjs | (removed) | 35 bytes :arrow_down: |
| @sentry/utils-cjs | (removed) | 178.63kB :arrow_down: |
| @sentry/opentelemetry-esm | (removed) | 69.19kB :arrow_down: |
| @sentry-internal/tracing-esm | (removed) | 107.26kB :arrow_down: |
| @sentry/utils-esm | (removed) | 174.02kB :arrow_down: |
| @sentry/types-esm | (removed) | 35 bytes :arrow_down: |
| @sentry-internal/integration-shims-cjs | (removed) | 3.65kB :arrow_down: |
| @sentry/node-esm | (removed) | 333.56kB :arrow_down: |
| @sentry/core-cjs | (removed) | 240.44kB :arrow_down: |
| @sentry-internal/replay-esm | (removed) | 306.46kB :arrow_down: |
| @sentry/node-cjs | (removed) | 336.97kB :arrow_down: |
| @sentry-internal/replay-canvas-cjs | (removed) | 29.51kB :arrow_down: |
| @sentry/bun-cjs | (removed) | 13.5kB :arrow_down: |
| @sentry/core-esm | (removed) | 236.82kB :arrow_down: |
| @sentry/browser-cjs | (removed) | 107.36kB :arrow_down: |
| @sentry/vercel-edge-cjs | (removed) | 18.23kB :arrow_down: |
| @sentry/aws-serverless-cjs | (removed) | 14.62kB :arrow_down: |
| @sentry-internal/node-integration-tests-cjs | (removed) | 1.04kB :arrow_down: |
| @sentry/wasm-cjs | (removed) | 5.2kB :arrow_down: |
| @sentry/gatsby-cjs | (removed) | 905 bytes :arrow_down: |
| @sentry/vue-esm | (removed) | 18.85kB :arrow_down: |
| @sentry/gatsby-esm | (removed) | 385 bytes :arrow_down: |
| @sentry-internal/replay-cjs | (removed) | 306.35kB :arrow_down: |
| @sentry/remix-cjs | (removed) | 53.62kB :arrow_down: |
| @sentry/nextjs-cjs | (removed) | 20.52kB :arrow_down: |
| @sentry/browser-esm | (removed) | 104.53kB :arrow_down: |
| @sentry/google-cloud-serverless-cjs | (removed) | 23.0kB :arrow_down: |
| @sentry-internal/integration-shims-esm | (removed) | 2.99kB :arrow_down: |
| @sentry/nextjs-esm | (removed) | 20.02kB :arrow_down: |
| @sentry/remix-esm | (removed) | 48.23kB :arrow_down: |
| @sentry-internal/node-integration-tests-esm | (removed) | 888 bytes :arrow_down: |
| @sentry/bun-esm | (removed) | 10.05kB :arrow_down: |
| @sentry-internal/feedback-cjs | (removed) | 65.81kB :arrow_down: |
| @sentry-internal/replay-canvas-esm | (removed) | 29.43kB :arrow_down: |
| @sentry/google-cloud-serverless-esm | (removed) | 19.16kB :arrow_down: |
| @sentry/profiling-node-cjs | (removed) | 25.5kB :arrow_down: |
| @sentry/vercel-edge-esm | (removed) | 16.13kB :arrow_down: |
| @sentry/wasm-esm | (removed) | 4.85kB :arrow_down: |
| @sentry/opentelemetry-cjs | (removed) | 70.22kB :arrow_down: |
| @sentry/profiling-node-esm | (removed) | 25.52kB :arrow_down: |
| @sentry/react-cjs | (removed) | 45.04kB :arrow_down: |
| @sentry-internal/tracing-cjs | (removed) | 108.01kB :arrow_down: |
| @sentry-internal/feedback-esm | (removed) | 65.5kB :arrow_down: |
| @sentry/astro-cjs | (removed) | 27.13kB :arrow_down: |
| @sentry/vue-cjs | (removed) | 20.19kB :arrow_down: |
| @sentry/astro-esm | (removed) | 23.39kB :arrow_down: |
| @sentry/react-esm | (removed) | 41.18kB :arrow_down: |
size-limit report 📦
| Path | Size |
|---|---|
| @sentry/browser (incl. Tracing, Replay, Feedback) | 80.38 KB (added) |
| @sentry/browser (incl. Tracing, Replay) | 71.73 KB (added) |
| @sentry/browser (incl. Tracing, Replay with Canvas) | 75.55 KB (added) |
| @sentry/browser (incl. Tracing, Replay) - with treeshaking flags | 65.3 KB (added) |
| @sentry/browser (incl. Tracing) | 36.57 KB (added) |
| @sentry/browser (incl. browserTracingIntegration) | 36.57 KB (added) |
| @sentry/browser (incl. feedbackIntegration) | 31.53 KB (added) |
| @sentry/browser (incl. feedbackModalIntegration) | 31.63 KB (added) |
| @sentry/browser (incl. feedbackScreenshotIntegration) | 31.64 KB (added) |
| @sentry/browser (incl. sendFeedback) | 27.59 KB (added) |
| @sentry/browser | 22.75 KB (added) |
| CDN Bundle (incl. Tracing, Replay, Feedback) | 74.93 KB (added) |
| CDN Bundle (incl. Tracing, Replay) | 69.72 KB (added) |
| CDN Bundle (incl. Tracing) | 36.26 KB (added) |
| CDN Bundle | 24.01 KB (added) |
| CDN Bundle (incl. Tracing, Replay) - uncompressed | 218.82 KB (added) |
| CDN Bundle (incl. Tracing) - uncompressed | 109.47 KB (added) |
| CDN Bundle - uncompressed | 71.09 KB (added) |
| @sentry/react (incl. Tracing, Replay) | 71.71 KB (added) |
| @sentry/react | 22.78 KB (added) |
Superseded by #11807