# The SvelteKit 3 Release Candidate is here

DevFeed: [The SvelteKit 3 Release Candidate is here](<https://devfeed.tech/articles/the-sveltekit-3-release-candidate-is-here-3048.md>)

Original publisher: [Read original article](<https://svelte.dev/blog/sveltekit-3-release-candidate>)

Author: The Svelte team

Published: 2026-08-13T00:00:00Z

Content type: release

Language: en

Sources: [Svelte blog](<https://devfeed.tech/sources/svelte-blog.md>)

Topics: [Svelte](<https://devfeed.tech/topics/svelte.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Code](<https://devfeed.tech/topics/code.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [dev](<https://devfeed.tech/tags/dev.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [feature](<https://devfeed.tech/tags/feature.md>), [guide](<https://devfeed.tech/tags/guide.md>), [migration](<https://devfeed.tech/tags/migration.md>), [release](<https://devfeed.tech/tags/release.md>), [svelte](<https://devfeed.tech/tags/svelte.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

## AI overview

SvelteKit 3 has reached the release candidate phase, introducing breaking changes from SvelteKit 2 alongside migration tooling, updated configuration in vite.config.ts, and a shift from the $lib alias to Node subpath imports.

## Source excerpt

SvelteKit 3 is now in the Release Candidate phase. If all goes well -- meaning that people like you try it out and find that it works as expected -- we will follow it up with a stable release in the near future, with no further breaking changes. But there are some breaking changes since SvelteKit 2. We're taking advantage of this release to prune some of the weeds in the codebase and lay the groundwork for SvelteKit's continued evolution, more on which below. To migrate an existing app, you can use the next version of sv migrate: npx sv@next migrate sveltekit-3 --tasks all --confirm This will automatically migrate as much of your code as possible. For everything else, it will generate a TODO list for you (or your clanker of choice) to work through. Wherever possible, SvelteKit will print useful diagnostic warnings and errors if you try to run code that hasn't yet been updated. To create a new app, run sv create: npx sv@next create my-new-app What's changed? For the full list of changes, consult the migration guide over on next.svelte.dev which is where the SvelteKit 3 documentation will live until the stable release. Most changes are fairly minor, but a few are worth calling out: Configuration now lives in vite.config.ts Previously, you would configure SvelteKit via a svelte.config.js file. This turned out to be limiting: it's useful for the Vite plugin to have access to your config immediately rather than having to go through an asynchronous resolution process (which can't begin until after we've resolved the entire Vite config, because tools like Vitest may run with a current working directory that isn't the project root), and after all why wouldn't we put the config in one place rather than two? The $lib alias is now #lib In SvelteKit 2, you would put shared code in src/lib and import it via a $lib alias. This is nicer than importing from ../../../../somewhere, which is what inevitably happens in larger codebases. But in modern projects, aliases are unnecessary, be