diff --git a/apps/sveltekit/README.md b/apps/sveltekit/README.md
index 2fc0b88..6ebf889 100644
--- a/apps/sveltekit/README.md
+++ b/apps/sveltekit/README.md
@@ -7,7 +7,7 @@ This application was created with the following commands:
- `cd apps`
- `pnpx sv create sveltekit` (answers: SvelteKit minimal, no Typescript, no additional install, pnpm)
- `cd sveltekit`
-- add `src/+layout.js` to include `import { injectAnalytics } from '@vercel/analytics/sveltekit'; injectAnalytics();`
+- add `src/routes/+layout.svelte` to include `import { injectAnalytics } from '@vercel/analytics/sveltekit'; injectAnalytics();`
- edit package.json to add `"@vercel/analytics": "workspace:*"` dependency and change `@sveltejs/adapter-auto` into `@sveltejs/adapter-vercel`
- eddi `svelte.config.js` to change `@sveltejs/adapter-auto` into `@sveltejs/adapter-vercel`
- `pnpm i`
diff --git a/apps/sveltekit/src/routes/+layout.ts b/apps/sveltekit/src/routes/+layout.svelte
similarity index 88%
rename from apps/sveltekit/src/routes/+layout.ts
rename to apps/sveltekit/src/routes/+layout.svelte
index 0275424..2855ee5 100644
--- a/apps/sveltekit/src/routes/+layout.ts
+++ b/apps/sveltekit/src/routes/+layout.svelte
@@ -1,3 +1,4 @@
+
+
+
diff --git a/packages/web/package.json b/packages/web/package.json
index c820d94..1d8b8be 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -123,7 +123,7 @@
},
"peerDependencies": {
"@remix-run/react": "^2",
- "@sveltejs/kit": "^1 || ^2",
+ "@sveltejs/kit": "^2.12 || ^3",
"next": ">= 13",
"nuxt": ">= 3",
"react": "^18 || ^19 || ^19.0.0-rc",
diff --git a/packages/web/src/sveltekit/index.ts b/packages/web/src/sveltekit/index.ts
index 6ff3193..d5fc60b 100644
--- a/packages/web/src/sveltekit/index.ts
+++ b/packages/web/src/sveltekit/index.ts
@@ -1,6 +1,6 @@
import type {} from '@sveltejs/kit';
import { browser } from '$app/environment';
-import { page } from '$app/stores';
+import { afterNavigate } from '$app/navigation';
import { inject, pageview, track } from '../generic';
import type { AnalyticsProps, BeforeSend, BeforeSendEvent } from '../types';
import { getBasePath, getConfigString } from './utils';
@@ -17,13 +17,12 @@ function injectAnalytics(props: Omit = {}): void {
getConfigString(),
);
- page.subscribe(({ route, url }) => {
- if (route?.id) {
- pageview({ route: route.id, path: url.pathname });
- }
+ // SvelteKit owns registration and cleanup; callers must invoke this from component initialization.
+ afterNavigate(({ to }) => {
+ if (to?.route.id) pageview({ route: to.route.id, path: to.url.pathname });
});
}
}
-export { injectAnalytics, track };
export type { AnalyticsProps, BeforeSend, BeforeSendEvent };
+export { injectAnalytics, track };
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3935034..2e6e786 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -221,7 +221,7 @@ importers:
specifier: ^2
version: 2.17.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)
'@sveltejs/kit':
- specifier: ^1 || ^2
+ specifier: ^2.12 || ^3
version: 2.60.1(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.8(@typescript-eslint/types@8.59.4))(vite@8.0.13(@types/node@22.19.19)(esbuild@0.24.2)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0)))(svelte@5.55.8(@typescript-eslint/types@8.59.4))(typescript@5.9.3)(vite@8.0.13(@types/node@22.19.19)(esbuild@0.24.2)(jiti@2.7.0)(terser@5.47.1)(yaml@2.9.0))
next:
specifier: '>= 13'