What’s new in Svelte: August 2026
Skip to main content<br>TutorialPackagesPlaygroundBlog
The biggest news this month is the first @next releases of SvelteKit 3. Thirteen preview versions shipped in July: previewing new $app/manifest and $app/service-worker modules, improved API availability and type checking in service workers, tracing out of the experimental namespace, shallow routing baked into goto and a lot more. It's a prerelease, but it's worth trying out to see what's coming to SvelteKit!
Alongside the preview releases, the stable line kept moving with submitted on remote forms and a new home for defineEnvVars. The language tools also picked up zero-config +error.svelte props so error pages get their page and error types with no extra setup.
And, in case you missed it, Svelte Summit Ljubljana 2026 is happening November 19-20, with a workshop day on November 18, the day before the summit. Save the date!
What's new in SvelteKit
Remote forms now expose a submitted property so you can react to the moment a form is submitted without waiting for the response (2.69.0 , Docs, #14811)
defineEnvVars has moved from @sveltejs/kit to @sveltejs/kit/env so environment helpers live in a dedicated subpath (2.70.0 , Docs, #16378)
SvelteKit 3 preview<br>The next major version has landed in @next. Here are the highlights from 3.0.0-next.5 through 3.0.0-next.13 that you'll actually want to try out:
Shallow routing is now built into goto via a new state option (with persistState: true to keep state across reloads), replacing pushState and replaceState (3.0.0-next.13 , #16449)
goto's noScroll and keepFocus options (and their matching data-sveltekit-* attributes) collapse into a single reset option (3.0.0-next.13 , #16558)
error(status, {...}) is deprecated in favor of error(status, message, {...}) so error messages are always required (3.0.0-next.13 , #16540)
refreshAll replaces invalidateAll, which is now deprecated (3.0.0-next.8 , #16289)
A new $app/manifest module exposes immutable, assets, prerendered and routes so you can introspect the build output at runtime (3.0.0-next.12 , #16372)
A new $app/service-worker module replaces the old $service-worker, and $app/paths is now importable inside service workers (3.0.0-next.12 , #16458, #16441)
SvelteKit now detects new deployments on data, remote and form action responses, on tab focus and on visibility change, with a default version.pollInterval of one hour (3.0.0-next.12 , #16496)
Sourcemaps are now supported in production builds (3.0.0-next.11 , #16412)
Tracing has moved out of the experimental namespace and the instrumentation flag has been removed (3.0.0-next.7 , #16260)
Form fields pick up a dirty() helper and remote forms get a new field.touched() for better validation UX (3.0.0-next.6 , #16208, #14692)
Full preview details (including expected breaking changes) are in the SvelteKit 3 CHANGELOG.
For all the features and bugfixes across the stable line and adapters, check out the SvelteKit CHANGELOGs.
What's new in the Svelte CLI and Language Tools
sv now picks the right package manager more reliably, with detection that respects the lockfile in nested workspaces (sv@0.16.6 , #1190)
Add-on authors can now call addOption during the setup phase to add options dynamically based on user choices (sv@0.16.6 , #1042)
The prettier add-on now formats every file it generates, not just the ones it touches (sv@0.16.6 , #1192)
The better-auth add-on has been bumped to Better Auth 1.6 and now uses the dedicated auth package (sv@0.16.5 , #1058)
sv-utils gains defineEnv().importEnv for importing from the environment module without branching on mode, plus recognition of the nub package manager (sv-utils@0.3.1/0.3.2 , #1150, #1187)
+error.svelte now gets its page and error props typed automatically, with no extra setup (svelte-check@4.7.3/svelte2tsx@0.7.58 , #3076)
svelte-language-server drops its lodash dependency for a smaller install and faster startup (svelte-language-server@0.18.3 , #3038)
The Svelte Inspector adds a context menu with the current component stack, making it easier to jump between parent and child components (vite-plugin-svelte@7.2.0 , #1370)
The @sveltejs/opencode plugin now ships a TUI variant for terminal workflows (opencode@0.1.10 , #231)
@sveltejs/opencode also gains an autoupdate option so the plugin can keep itself current (opencode@0.1.12 , #238)
Want to dive deeper? Check out the Svelte CLI and language-tools releases. For all the minor changes and bugfixes that came out in the Svelte compiler this month, you can read the full Svelte CHANGELOG.
Community Showcase<br>Apps & Sites built with Svelte
Recipe Jar is a local-first recipe keeper built as a PWA with runes, IndexedDB and no backend (GitHub)
Doota reimagines email as a chat interface, built entirely on Svelte and Cloudflare's edge stack (GitHub)
Loot Raiders is a browser-based inventory extraction game built with SvelteKit, GSAP and Howler
Motioner is a browser-based...