
SvelteKit 3 is in preview, and the pace is not subtle. Thirteen @next versions shipped in July 2026, covering new modules, API consolidation, and the removal of patterns that have been on borrowed time since SvelteKit 2. If you run a SvelteKit app in production, one of these changes will touch your code before stable lands. Here’s what shipped, what breaks, and what you should run today.
What’s New in SvelteKit 3
$app/manifest — Build Introspection at Runtime
The new $app/manifest module exposes immutable, assets, prerendered, and routes directly from your build output at runtime. Previously, getting this information into a service worker required manual workarounds. Now it’s a clean import. If you’re building a PWA or need offline-first caching logic, this is the API you’ve been waiting for.
Stable Tracing
Tracing was behind experimental.tracing in SvelteKit 2. In SvelteKit 3 it graduates to stable — no flag required, no instrumentation option to configure. Full OpenTelemetry-compatible tracing from server to client, ready for production without the asterisk.
Deployment Detection
SvelteKit 3 detects new deployments automatically. It checks on data fetch responses, form action responses, tab focus, and visibility change. When a new version is deployed, users on stale builds get a signal — you control whether that means a prompt or an automatic reload via the version.poll config. This eliminates the “users stuck on old code” problem without building a custom version-check mechanism.
Form Validation Gets More Precise
Form fields pick up a dirty() helper that’s distinct from touched() — it only flips true once the user has actually edited a value, not just tabbed through. Remote forms add field.touched(). And myform.validate() now validates only fields that are both touched and dirty, which is what accessibility guidelines require anyway. The stable line (2.69.0) already shipped a submitted property on remote forms so you can react at submission time without waiting for the response.
The API Shifts
Shallow Routing Lives in goto() Now
pushState() and replaceState() are deprecated. SvelteKit 3 bakes shallow routing directly into goto() via a state option. The noScroll and keepFocus options also collapse into a single reset option — one function, one mental model.
// SvelteKit 3 — shallow routing via goto()
goto('/path', { state: { modal: true }, persistState: true });
Minor Renames Worth Noting
Two small ones worth catching before they catch you in staging: platform.context is now platform.ctx, and data-sveltekit-* attributes no longer accept the string 'off' — use false.
The Breaking Change That Matters
$app/stores is gone. Deprecated in SvelteKit 2.12, removed in SvelteKit 3. The replacement is $app/state, which is built on Svelte 5 runes. The migration is straightforward:
// Before — SvelteKit 2
import { page } from '$app/stores';
console.log($page.url.pathname);
// After — SvelteKit 3
import { page } from '$app/state';
console.log(page.url.pathname);
Change the import path, drop the $ prefix. That’s most of it. The Svelte CLI automates the mechanical work for .svelte files:
npx sv migrate
You need Svelte 5 before this migration makes sense. If you’re still on Svelte 4, that’s your first step. Bonus beyond the API rename: $app/state is fine-grained — updating page.state won’t invalidate page.data and vice versa. Fewer unnecessary re-renders.
Sentry’s JavaScript SDK is already tracking a $app/stores crash in SvelteKit 3 prerelease. If you depend on any third-party library that wraps SvelteKit internals, verify it has an update in progress before upgrading.
How to Try SvelteKit 3 Today
npm install @sveltejs/kit@next
Run it on a side project or a feature branch. The preview releases are active — you’re testing near-final API surface, not speculative designs. The SvelteKit team maintains a breaking changes tracker on GitHub that documents everything in flight. Bookmark it before you start.
Follow the official August 2026 Svelte release notes for the complete changelog of what shipped this month across both the stable and preview lines.
Timeline
There’s no firm stable release date. With thirteen preview versions in three weeks, the pace is fast — but preview cadence has never been a reliable proxy for stable ETA. Svelte Summit Ljubljana (November 19–20) is the next major community event and a realistic milestone to watch.
SvelteKit 2 is stable and fully supported. There’s no production urgency today. Test on the side, track the breaking changes issue, and when your dependencies are ready, the migration is shorter than it looks.













