O Guia oficial de migração para o SvelteKit 3 (next.svelte.dev)-3-release-candidate" target="_blank" rel="nofollow noopener">SvelteKit 3 release candidate (svelte.dev) 3 chegou à fase de release candidate com mudanças estruturais: fim do svelte.config.js, aposentadoria do Issue original no GitHub sobre o alias #lib (github.com) $lib e exigência de Svelte 5 e Vite 8 com Rolldown. A versão estável deve seguir se os testes correrem bem.
- SvelteKit 3 entra em release candidate; versão estável vem se os testes correrem bem
- Configuração migra de svelte.config.js para vite.config.ts, com leitura síncrona pelo plugin do Vite
- Alias $lib é aposentado em favor de #lib, baseado nas subpath imports nativas do Node, agora com extensão de arquivo obrigatória
- Svelte 5 e Vite 8 com bundler Rolldown passam a ser requisitos, com builds mais rápidos
- Migração oficial via CLI: npx sv@next migrate sveltekit-3 --tasks all --confirm
O que muda na configuração do sveltekit 3
A mudança central do SvelteKit 3 é onde a configuração mora: o svelte.config.js da versão 2 deixa de existir e tudo migra para o vite.config.ts.
O plugin do Vite agora lê a configuração de forma síncrona, eliminando uma etapa assíncrona de resolução que atrasava o processo.
Segundo a documentação de referência, a configuração via Vite já existia desde a versão 2.62; o RC apenas finaliza a transição.
Fim do alias $lib: a mudança mais debatida
O alias $lib dá lugar a #lib, apoiado nas subpath imports nativas do Node declaradas no package.json, e os imports passam a exigir extensão de arquivo.
# publicidade
A comunidade reagiu no Reddit e no GitHub, e o mantenedor Rich Harris admitiu o trade-off: quem discordar pode criar o próprio alias.
O tsconfig.json agora estende $app/tsconfig, service workers usam $app/env, $app/paths e o novo $app/manifest, e variáveis de ambiente explícitas saem do experimental.
Erros, roteamento e a base com vite 8 e rolldown
Com Svelte 5 como requisito, componentes +error.svelte cobrem falhas de load e de renderização, todo erro passa pelo handleError e stack traces ganham sourcemaps.
O shallow routing migra de pushState para goto com a opção shallow: true, e o Rolldown do Vite 8 acelera os builds.
| Aspecto | SvelteKit 2 | SvelteKit 3 (RC) |
|---|---|---|
| Arquivo de configuração | svelte.config.js | vite.config.ts |
| Alias de biblioteca | $lib (específico do SvelteKit) | #lib (subpath imports do Node) |
| Extensão em imports | Opcional | Obrigatória (#lib/foo.js) |
| Versão do Svelte | Svelte 4 ou 5 | Exige Svelte 5 |
| Bundler | Vite com Rollup | Vite 8 com Rolldown |
| Variáveis de ambiente explícitas | Experimental | Estável, com validação Standard Schema opcional |
Arraste para o lado para ver toda a tabela.
Remote functions seguem experimentais e prometem um RPC type-safe entre cliente e servidor, na linha das React Server Actions.
Fonte: Infoq