diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9bcf44c39024..b3429df6f6ca 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1006,6 +1006,7 @@ jobs:
'react-create-hash-router',
'react-router-6-use-routes',
'standard-frontend-react',
+ 'svelte-5',
'sveltekit',
'sveltekit-2',
'sveltekit-2-svelte-5',
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/.gitignore b/dev-packages/e2e-tests/test-applications/svelte-5/.gitignore
new file mode 100644
index 000000000000..a547bf36d8d1
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/.npmrc b/dev-packages/e2e-tests/test-applications/svelte-5/.npmrc
new file mode 100644
index 000000000000..070f80f05092
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/.npmrc
@@ -0,0 +1,2 @@
+@sentry:registry=http://127.0.0.1:4873
+@sentry-internal:registry=http://127.0.0.1:4873
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/README.md b/dev-packages/e2e-tests/test-applications/svelte-5/README.md
new file mode 100644
index 000000000000..89a8fa13539e
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/README.md
@@ -0,0 +1,62 @@
+# Svelte + TS + Vite
+
+This template should help get you started developing with Svelte and TypeScript in Vite.
+
+## Recommended IDE Setup
+
+[VS Code](https://code.visualstudio.com/) +
+[Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).
+
+## Need an official Svelte framework?
+
+Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its
+serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less,
+and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.
+
+## Technical considerations
+
+**Why use this over SvelteKit?**
+
+- It brings its own routing solution which might not be preferable for some users.
+- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
+
+This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account
+the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other
+`create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
+
+Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been
+structured similarly to SvelteKit so that it is easy to migrate.
+
+**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**
+
+Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash
+references keeps the default TypeScript setting of accepting type information from the entire workspace, while also
+adding `svelte` and `vite/client` type information.
+
+**Why include `.vscode/extensions.json`?**
+
+Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to
+install the recommended extension upon opening the project.
+
+**Why enable `allowJs` in the TS template?**
+
+While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of
+JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds:
+not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing
+JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant.
+
+**Why is HMR not preserving my local component state?**
+
+HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and
+`@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details
+[here](https://github.com/rixo/svelte-hmr#svelte-hmr).
+
+If you have state that's important to retain within a component, consider creating an external store which would not be
+replaced by HMR.
+
+```ts
+// store.ts
+// An extremely simple external store
+import { writable } from 'svelte/store';
+export default writable(0);
+```
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/index.html b/dev-packages/e2e-tests/test-applications/svelte-5/index.html
new file mode 100644
index 000000000000..b6c5f0afafd6
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite + Svelte + TS
+
+
+
+
+
+
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/package.json b/dev-packages/e2e-tests/test-applications/svelte-5/package.json
new file mode 100644
index 000000000000..d95aa579e9a6
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "svelte-5",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview",
+ "check": "svelte-check --tsconfig ./tsconfig.json",
+ "test:prod": "TEST_ENV=production playwright test",
+ "test:build": "pnpm install && npx playwright install && pnpm build",
+ "test:assert": "pnpm test:prod"
+ },
+ "devDependencies": {
+ "@playwright/test": "^1.43.1",
+ "@sentry-internal/event-proxy-server": "link:../../../event-proxy-server",
+ "@sentry/types": "latest || *",
+ "@sentry/utils": "latest || *",
+ "@sveltejs/vite-plugin-svelte": "^3.0.2",
+ "@tsconfig/svelte": "^5.0.2",
+ "svelte": "^5.0.0-next.115",
+ "svelte-check": "^3.6.7",
+ "tslib": "^2.6.2",
+ "typescript": "^5.2.2",
+ "vite": "^5.2.0",
+ "wait-port": "1.0.4"
+ },
+ "dependencies": {
+ "@sentry/svelte": "latest || *"
+ }
+}
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/playwright.config.ts b/dev-packages/e2e-tests/test-applications/svelte-5/playwright.config.ts
new file mode 100644
index 000000000000..7dfcfbe74cec
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/playwright.config.ts
@@ -0,0 +1,77 @@
+import type { PlaywrightTestConfig } from '@playwright/test';
+import { devices } from '@playwright/test';
+
+// Fix urls not resolving to localhost on Node v17+
+// See: https://github.com/axios/axios/issues/3821#issuecomment-1413727575
+import { setDefaultResultOrder } from 'dns';
+setDefaultResultOrder('ipv4first');
+
+const testEnv = process.env.TEST_ENV;
+
+if (!testEnv) {
+ throw new Error('No test env defined');
+}
+
+const sveltePort = 3030;
+const eventProxyPort = 3031;
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+const config: PlaywrightTestConfig = {
+ testDir: './test',
+ /* Maximum time one test can run for. */
+ timeout: 150_000,
+ expect: {
+ /**
+ * Maximum time expect() should wait for the condition to be met.
+ * For example in `await expect(locator).toHaveText();`
+ */
+ timeout: 10000,
+ },
+ /* Run tests in files in parallel */
+ fullyParallel: false,
+ workers: 1,
+ /* Fail the build on CI if you accidentally left test.only in the source code. */
+ forbidOnly: !!process.env.CI,
+ /* `next dev` is incredibly buggy with the app dir */
+ retries: testEnv === 'development' ? 3 : 0,
+ /* Reporter to use. See https://playwright.dev/docs/test-reporters */
+ reporter: 'list',
+ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
+ use: {
+ /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */
+ actionTimeout: 0,
+ /* Base URL to use in actions like `await page.goto('/')`. */
+ baseURL: `http://localhost:${sveltePort}`,
+
+ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
+ trace: 'on-first-retry',
+ },
+
+ /* Configure projects for major browsers */
+ projects: [
+ {
+ name: 'chromium',
+ use: {
+ ...devices['Desktop Chrome'],
+ },
+ },
+ ],
+
+ /* Run your local dev server before starting the tests */
+ webServer: [
+ {
+ command: 'node ./start-event-proxy.cjs',
+ port: eventProxyPort,
+ reuseExistingServer: false,
+ },
+ {
+ command: `pnpm wait-port ${eventProxyPort} && pnpm preview --port ${sveltePort}`,
+ port: sveltePort,
+ reuseExistingServer: false,
+ },
+ ],
+};
+
+export default config;
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/public/vite.svg b/dev-packages/e2e-tests/test-applications/svelte-5/public/vite.svg
new file mode 100644
index 000000000000..e7b8dfb1b2a6
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/src/App.svelte b/dev-packages/e2e-tests/test-applications/svelte-5/src/App.svelte
new file mode 100644
index 000000000000..47d6be1385b4
--- /dev/null
+++ b/dev-packages/e2e-tests/test-applications/svelte-5/src/App.svelte
@@ -0,0 +1,52 @@
+
+
+
+