diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/.gitignore b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/.gitignore
deleted file mode 100644
index ebb991370034..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/.gitignore
+++ /dev/null
@@ -1,32 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-
-# testing
-/coverage
-
-# production
-/build
-
-# misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-/test-results/
-/playwright-report/
-/playwright/.cache/
-
-!*.d.ts
-
-# react router
-.react-router
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/app.css b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/app.css
deleted file mode 100644
index 78af9b44216c..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/app.css
+++ /dev/null
@@ -1,16 +0,0 @@
-@import 'tailwindcss';
-
-@theme {
- --font-sans:
- 'Inter', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
- 'Noto Color Emoji';
-}
-
-html,
-body {
- @apply bg-white dark:bg-gray-950;
-
- @media (prefers-color-scheme: dark) {
- color-scheme: dark;
- }
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/entry.client.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/entry.client.tsx
deleted file mode 100644
index f9e8c5139d22..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/entry.client.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import * as Sentry from '@sentry/react-router';
-import { StrictMode, startTransition } from 'react';
-import { hydrateRoot } from 'react-dom/client';
-import { HydratedRouter } from 'react-router/dom';
-
-Sentry.init({
- environment: 'qa', // dynamic sampling bias to keep transactions
- // todo: get this from env
- dsn: 'https://username@domain/123',
- integrations: [Sentry.reactRouterTracingIntegration()],
- tracesSampleRate: 1.0,
- tunnel: `http://localhost:3031/`, // proxy server
- tracePropagationTargets: [/^\//],
-});
-
-startTransition(() => {
- hydrateRoot(
- document,
-
-
- ,
- );
-});
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/root.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/root.tsx
deleted file mode 100644
index 2a3279aed365..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/root.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import { isRouteErrorResponse, Links, Meta, Outlet, Scripts, ScrollRestoration } from 'react-router';
-
-import type { Route } from './+types/root';
-import './app.css';
-
-export function Layout({ children }: { children: React.ReactNode }) {
- return (
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
- );
-}
-
-export default function App() {
- return ;
-}
-
-export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
- let message = 'Oops!';
- let details = 'An unexpected error occurred.';
- let stack: string | undefined;
-
- if (isRouteErrorResponse(error)) {
- message = error.status === 404 ? '404' : 'Error';
- details = error.status === 404 ? 'The requested page could not be found.' : error.statusText || details;
- } else if (error && error instanceof Error) {
- details = error.message;
- stack = error.stack;
- }
-
- return (
-
- {message}
- {details}
- {stack && (
-
- {stack}
-
- )}
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes.ts b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes.ts
deleted file mode 100644
index 58db8b4299b9..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { type RouteConfig, index, prefix, route } from '@react-router/dev/routes';
-
-export default [
- index('routes/home.tsx'),
- ...prefix('errors', [
- route('client', 'routes/errors/client.tsx'),
- route('client/:client-param', 'routes/errors/client-param.tsx'),
- route('client-loader', 'routes/errors/client-loader.tsx'),
- route('client-action', 'routes/errors/client-action.tsx'),
- ]),
- ...prefix('performance', [
- index('routes/performance/index.tsx'),
- route('with/:param', 'routes/performance/dynamic-param.tsx'),
- ]),
-] satisfies RouteConfig;
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-action.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-action.tsx
deleted file mode 100644
index d3b2d08eef2e..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-action.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Form } from 'react-router';
-
-export function clientAction() {
- throw new Error('Madonna mia! Che casino nella Client Action!');
-}
-
-export default function ClientActionErrorPage() {
- return (
-
-
Client Error Action Page
-
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-loader.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-loader.tsx
deleted file mode 100644
index aa7af71bbe80..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-loader.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import type { Route } from './+types/client-loader';
-
-export function clientLoader() {
- throw new Error('¡Madre mía del client loader!');
-}
-
-export default function ClientLoaderErrorPage({ loaderData }: Route.ComponentProps) {
- const { data } = loaderData ?? { data: 'sad' };
- return (
-
-
Client Loader Error Page
-
{data}
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-param.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-param.tsx
deleted file mode 100644
index a2e423391f03..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client-param.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import type { Route } from './+types/client-param';
-
-export default function ClientErrorParamPage({ params }: Route.ComponentProps) {
- return (
-
-
Client Error Param Page
-
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client.tsx
deleted file mode 100644
index 190074a5ef09..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/errors/client.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-export default function ClientErrorPage() {
- return (
-
-
Client Error Page
-
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/home.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/home.tsx
deleted file mode 100644
index 1a0ad8bba051..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/home.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-import type { Route } from './+types/home';
-import { Link } from 'react-router';
-
-export function meta({}: Route.MetaArgs) {
- return [{ title: 'New React Router App' }, { name: 'description', content: 'Welcome to React Router!' }];
-}
-
-export default function Home() {
- return (
-
-
Hello,This is an SPA React Router app
-
-
-
-
Performance Pages, click pages to get redirected
-
- -
- Performance page
-
- -
- Static Page
-
- -
- Dynamic Parameter Page
-
-
-
-
-
-
Error Pages, click button to trigger error
-
- -
- Client Error
-
- -
- Client Action Error
-
- -
- Client Loader Error
-
- -
- Client Parameter Error
-
-
-
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/performance/dynamic-param.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/performance/dynamic-param.tsx
deleted file mode 100644
index 39cf7bd5dbf6..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/performance/dynamic-param.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import type { Route } from './+types/dynamic-param';
-
-export default function DynamicParamPage({ params }: Route.ComponentProps) {
- const { param } = params;
-
- return (
-
-
Dynamic Parameter Page
-
The parameter value is: {param}
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/performance/index.tsx b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/performance/index.tsx
deleted file mode 100644
index a59395455ddd..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/app/routes/performance/index.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Link } from 'react-router';
-
-export default function PerformancePage() {
- return (
-
-
Performance Page
-
-
- );
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/package.json b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/package.json
deleted file mode 100644
index 2c78f5adb154..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "name": "react-router-7-framework-spa-node-20-18",
- "private": true,
- "version": "0.1.0",
- "type": "module",
- "scripts": {
- "build": "react-router build",
- "dev": "react-router dev",
- "start": "vite preview",
- "preview": "vite preview",
- "typecheck": "react-router typegen && tsc",
- "clean": "pnpx rimraf node_modules pnpm-lock.yaml",
- "test:build": "pnpm install && pnpm build",
- "test:ts": "pnpm typecheck",
- "test:prod": "playwright test",
- "test:dev": "TEST_ENV=development playwright test",
- "test:assert": "pnpm test:ts &&pnpm test:prod"
- },
- "dependencies": {
- "@sentry/react-router": "file:../../packed/sentry-react-router-packed.tgz",
- "@react-router/node": "7.13.0",
- "@react-router/serve": "7.13.0",
- "isbot": "^5.1.27",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "react-router": "7.13.0"
- },
- "devDependencies": {
- "@playwright/test": "~1.56.0",
- "@react-router/dev": "7.13.0",
- "@sentry-internal/test-utils": "link:../../../test-utils",
- "@tailwindcss/vite": "^4.1.4",
- "@types/node": "^20",
- "@types/react": "^19.1.2",
- "@types/react-dom": "^19.1.2",
- "tailwindcss": "^4.1.4",
- "typescript": "^5.8.3",
- "vite": "^6.4.2",
- "vite-tsconfig-paths": "^5.1.4"
- },
- "browserslist": {
- "production": [
- ">0.2%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
- },
- "volta": {
- "extends": "../../package.json",
- "node": "20.18.2"
- },
- "pnpm": {
- "overrides": {
- "p-map": "^4.0.0"
- }
- }
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/playwright.config.mjs b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/playwright.config.mjs
deleted file mode 100644
index 17513b44887a..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/playwright.config.mjs
+++ /dev/null
@@ -1,8 +0,0 @@
-import { getPlaywrightConfig } from '@sentry-internal/test-utils';
-
-const config = getPlaywrightConfig({
- startCommand: 'pnpm start',
- port: 4173,
-});
-
-export default config;
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/public/favicon.ico b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/public/favicon.ico
deleted file mode 100644
index 5dbdfcddcb14..000000000000
Binary files a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/public/favicon.ico and /dev/null differ
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/react-router.config.ts b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/react-router.config.ts
deleted file mode 100644
index 61161a60cfc5..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/react-router.config.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import type { Config } from '@react-router/dev/config';
-
-export default {
- ssr: false,
-} satisfies Config;
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/start-event-proxy.mjs b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/start-event-proxy.mjs
deleted file mode 100644
index ce02c081eb72..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/start-event-proxy.mjs
+++ /dev/null
@@ -1,6 +0,0 @@
-import { startEventProxyServer } from '@sentry-internal/test-utils';
-
-startEventProxyServer({
- port: 3031,
- proxyServerName: 'react-router-7-framework-spa-node-20-18',
-});
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/constants.ts b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/constants.ts
deleted file mode 100644
index b350a4383293..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/constants.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const APP_NAME = 'react-router-7-framework-spa-node-20-18';
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/errors/errors.client.test.ts b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/errors/errors.client.test.ts
deleted file mode 100644
index c1a7de46f1b6..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/errors/errors.client.test.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-import { expect, test } from '@playwright/test';
-import { waitForError } from '@sentry-internal/test-utils';
-import { APP_NAME } from '../constants';
-
-test.describe('client-side errors', () => {
- const errorMessage = '¡Madre mía!';
- test('captures error thrown on click', async ({ page }) => {
- const errorPromise = waitForError(APP_NAME, async errorEvent => {
- return errorEvent?.exception?.values?.[0]?.value === errorMessage;
- });
-
- await page.goto(`/errors/client`);
- await page.locator('#throw-on-click').click();
-
- const error = await errorPromise;
-
- expect(error).toMatchObject({
- exception: {
- values: [
- {
- type: 'Error',
- value: errorMessage,
- mechanism: {
- handled: false,
- },
- },
- ],
- },
- transaction: '/errors/client',
- request: {
- url: expect.stringContaining('errors/client'),
- headers: expect.any(Object),
- },
- level: 'error',
- platform: 'javascript',
- environment: 'qa',
- sdk: {
- integrations: expect.any(Array),
- name: 'sentry.javascript.react-router',
- version: expect.any(String),
- },
- tags: { runtime: 'browser' },
- contexts: {
- trace: {
- span_id: expect.any(String),
- trace_id: expect.any(String),
- },
- },
- breadcrumbs: [
- {
- category: 'ui.click',
- message: 'body > div > button#throw-on-click',
- },
- ],
- });
- });
-
- test('captures error thrown on click from a parameterized route', async ({ page }) => {
- const errorMessage = '¡Madre mía de churros!';
- const errorPromise = waitForError(APP_NAME, async errorEvent => {
- return errorEvent?.exception?.values?.[0]?.value === errorMessage;
- });
-
- await page.goto('/errors/client/churros');
- await page.locator('#throw-on-click').click();
-
- const error = await errorPromise;
-
- expect(error).toMatchObject({
- exception: {
- values: [
- {
- type: 'Error',
- value: '¡Madre mía de churros!',
- mechanism: {
- handled: false,
- },
- },
- ],
- },
- // todo: should be '/errors/client/:client-param'
- transaction: '/errors/client/churros',
- });
- });
-
- test('captures error thrown in a clientLoader', async ({ page }) => {
- const errorMessage = '¡Madre mía del client loader!';
- const errorPromise = waitForError(APP_NAME, async errorEvent => {
- return errorEvent?.exception?.values?.[0]?.value === errorMessage;
- });
-
- await page.goto('/errors/client-loader');
-
- const error = await errorPromise;
-
- expect(error).toMatchObject({
- exception: {
- values: [
- {
- type: 'Error',
- value: errorMessage,
- mechanism: {
- handled: false,
- type: 'auto.function.react_router.on_error',
- },
- },
- ],
- },
- transaction: '/errors/client-loader',
- });
- });
-
- test('captures error thrown in a clientAction', async ({ page }) => {
- const errorMessage = 'Madonna mia! Che casino nella Client Action!';
- const errorPromise = waitForError(APP_NAME, async errorEvent => {
- return errorEvent?.exception?.values?.[0]?.value === errorMessage;
- });
-
- await page.goto('/errors/client-action');
- await page.locator('#submit').click();
-
- const error = await errorPromise;
-
- expect(error).toMatchObject({
- exception: {
- values: [
- {
- type: 'Error',
- value: errorMessage,
- mechanism: {
- handled: false,
- type: 'auto.function.react_router.on_error',
- },
- },
- ],
- },
- transaction: '/errors/client-action',
- });
- });
-});
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/performance/navigation.client.test.ts b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/performance/navigation.client.test.ts
deleted file mode 100644
index 5c1b7c493e67..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/performance/navigation.client.test.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { expect, test } from '@playwright/test';
-import { waitForTransaction } from '@sentry-internal/test-utils';
-import { APP_NAME } from '../constants';
-
-test.describe('client - navigation performance', () => {
- test('should update navigation transaction for dynamic routes', async ({ page }) => {
- const txPromise = waitForTransaction(APP_NAME, async transactionEvent => {
- return (
- transactionEvent.transaction === '/performance/with/:param' &&
- transactionEvent.contexts?.trace?.op === 'navigation'
- );
- });
-
- const pageloadTxPromise = waitForTransaction(APP_NAME, async transactionEvent => {
- return transactionEvent.transaction === '/performance' && transactionEvent.contexts?.trace?.op === 'pageload';
- });
-
- await page.goto(`/performance`); // pageload
- await pageloadTxPromise;
- await page.getByRole('link', { name: 'With Param Page' }).click(); // navigation
-
- const transaction = await txPromise;
-
- expect(transaction).toMatchObject({
- contexts: {
- trace: {
- span_id: expect.any(String),
- trace_id: expect.any(String),
- data: {
- 'sentry.origin': 'auto.navigation.react_router',
- 'sentry.op': 'navigation',
- 'sentry.source': 'route',
- 'url.template': '/performance/with/:param',
- 'url.path': '/performance/with/sentry',
- 'url.full': expect.stringMatching(/^https?:\/\/localhost:\d+\/performance\/with\/sentry$/),
- },
- op: 'navigation',
- origin: 'auto.navigation.react_router',
- },
- },
- spans: expect.any(Array),
- start_timestamp: expect.any(Number),
- timestamp: expect.any(Number),
- transaction: '/performance/with/:param',
- type: 'transaction',
- transaction_info: { source: 'route' },
- platform: 'javascript',
- request: {
- url: expect.stringContaining('/performance/with/sentry'),
- headers: expect.any(Object),
- },
- event_id: expect.any(String),
- environment: 'qa',
- sdk: {
- integrations: expect.arrayContaining([expect.any(String)]),
- name: 'sentry.javascript.react-router',
- version: expect.any(String),
- packages: [
- { name: 'npm:@sentry/react-router', version: expect.any(String) },
- { name: 'npm:@sentry/browser', version: expect.any(String) },
- ],
- },
- tags: { runtime: 'browser' },
- });
- });
-});
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/performance/pageload.client.test.ts b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/performance/pageload.client.test.ts
deleted file mode 100644
index 9598d8dbe17e..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tests/performance/pageload.client.test.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import { expect, test } from '@playwright/test';
-import { waitForTransaction } from '@sentry-internal/test-utils';
-import { APP_NAME } from '../constants';
-
-test.describe('client - pageload performance', () => {
- test('should send pageload transaction', async ({ page }) => {
- const txPromise = waitForTransaction(APP_NAME, async transactionEvent => {
- return transactionEvent.transaction === '/performance' && transactionEvent.contexts?.trace?.op === 'pageload';
- });
-
- await page.goto(`/performance`);
- await page.getByRole('heading', { name: 'Performance Page' }).waitFor();
-
- const transaction = await txPromise;
-
- expect(transaction).toMatchObject({
- contexts: {
- trace: {
- span_id: expect.any(String),
- trace_id: expect.any(String),
- data: {
- 'sentry.origin': 'auto.pageload.react_router',
- 'sentry.op': 'pageload',
- 'sentry.source': 'route',
- 'url.template': '/performance',
- 'url.path': '/performance',
- 'url.full': expect.stringMatching(/^https?:\/\/localhost:\d+\/performance$/),
- },
- op: 'pageload',
- origin: 'auto.pageload.react_router',
- },
- },
- spans: expect.any(Array),
- start_timestamp: expect.any(Number),
- timestamp: expect.any(Number),
- transaction: '/performance',
- type: 'transaction',
- transaction_info: { source: 'route' },
- measurements: expect.any(Object),
- platform: 'javascript',
- request: {
- url: expect.stringContaining('/performance'),
- headers: expect.any(Object),
- },
- event_id: expect.any(String),
- environment: 'qa',
- sdk: {
- integrations: expect.arrayContaining([expect.any(String)]),
- name: 'sentry.javascript.react-router',
- version: expect.any(String),
- packages: [
- { name: 'npm:@sentry/react-router', version: expect.any(String) },
- { name: 'npm:@sentry/browser', version: expect.any(String) },
- ],
- },
- tags: { runtime: 'browser' },
- });
- });
-
- test('should update pageload transaction for dynamic routes', async ({ page }) => {
- const txPromise = waitForTransaction(APP_NAME, async transactionEvent => {
- return (
- transactionEvent.transaction === '/performance/with/:param' &&
- transactionEvent.contexts?.trace?.op === 'pageload'
- );
- });
-
- await page.goto(`/performance/with/sentry`);
- await page.getByRole('heading', { name: 'Dynamic Parameter Page' }).waitFor();
-
- const transaction = await txPromise;
-
- expect(transaction).toMatchObject({
- contexts: {
- trace: {
- span_id: expect.any(String),
- trace_id: expect.any(String),
- data: {
- 'sentry.origin': 'auto.pageload.react_router',
- 'sentry.op': 'pageload',
- 'sentry.source': 'route',
- 'url.template': '/performance/with/:param',
- 'url.path': '/performance/with/sentry',
- 'url.full': expect.stringMatching(/^https?:\/\/localhost:\d+\/performance\/with\/sentry$/),
- },
- op: 'pageload',
- origin: 'auto.pageload.react_router',
- },
- },
- spans: expect.any(Array),
- start_timestamp: expect.any(Number),
- timestamp: expect.any(Number),
- transaction: '/performance/with/:param',
- type: 'transaction',
- transaction_info: { source: 'route' },
- measurements: expect.any(Object),
- platform: 'javascript',
- request: {
- url: expect.stringContaining('/performance/with/sentry'),
- headers: expect.any(Object),
- },
- event_id: expect.any(String),
- environment: 'qa',
- sdk: {
- integrations: expect.arrayContaining([expect.any(String)]),
- name: 'sentry.javascript.react-router',
- version: expect.any(String),
- packages: [
- { name: 'npm:@sentry/react-router', version: expect.any(String) },
- { name: 'npm:@sentry/browser', version: expect.any(String) },
- ],
- },
- tags: { runtime: 'browser' },
- });
- });
-});
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tsconfig.json b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tsconfig.json
deleted file mode 100644
index a6b90b7c81f3..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/tsconfig.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "include": ["**/*", "**/.server/**/*", "**/.client/**/*", ".react-router/types/**/*"],
- "compilerOptions": {
- "lib": ["DOM", "DOM.Iterable", "ES2022"],
- "types": ["node", "vite/client"],
- "target": "ES2022",
- "module": "ES2022",
- "moduleResolution": "bundler",
- "jsx": "react-jsx",
- "rootDirs": [".", "./.react-router/types"],
- "baseUrl": ".",
- "paths": {
- "~/*": ["./app/*"]
- },
- "esModuleInterop": true,
- "verbatimModuleSyntax": true,
- "noEmit": true,
- "resolveJsonModule": true,
- "skipLibCheck": true,
- "strict": true
- }
-}
diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/vite.config.ts b/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/vite.config.ts
deleted file mode 100644
index 68ba30d69397..000000000000
--- a/dev-packages/e2e-tests/test-applications/react-router-7-framework-spa-node-20-18/vite.config.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { reactRouter } from '@react-router/dev/vite';
-import { defineConfig } from 'vite';
-
-export default defineConfig({
- plugins: [reactRouter()],
-});
diff --git a/scripts/report-ci-failures.mjs b/scripts/report-ci-failures.mjs
index e87a38b7a824..58278b4b5a8f 100644
--- a/scripts/report-ci-failures.mjs
+++ b/scripts/report-ci-failures.mjs
@@ -29,7 +29,7 @@ import { readFileSync } from 'node:fs';
* "aws-serverless-layer (Node 22) Test" -> "aws-serverless-layer Test"
* "Playwright bundle_tracing_replay Tests" -> "Playwright Tests"
* "Playwright esm (1/4) Tests" -> "Playwright Tests"
- * "E2E react-router-7-framework-spa-node-20-18 Test" -> "E2E react-router-7-framework-spa Test"
+ * "E2E some-app-node-20-18 Test" -> "E2E some-app Test"
*/
function normalizeJobName(name) {
return name