SvelteKit 3 ha entrado en fase de candidata de lanzamiento. El equipo anuncia una versión estable «en un futuro próximo, sin nuevas rupturas», lo que convierte a esta RC en la base sobre la que los proyectos pueden empezar a planificar su actualización. No es un simple lavado de cara: la configuración cambia de archivo, las funciones remotas reorganizan la comunicación cliente-servidor y un comando de migración asume la mayor parte del trabajo mecánico.
La configuración se traslada a Vite
El cambio más visible afecta a cómo se configura un proyecto. La configuración abandona svelte.config.js por vite.config.ts: SvelteKit 3 se apoya ya por completo en Vite 8, que exige, y en Svelte 5. De paso, el histórico alias $lib deja lugar a importaciones por subruta #lib, y la configuración de TypeScript se simplifica extendiendo $app/tsconfig en vez de un archivo generado y verboso.
El giro alinea a SvelteKit con las herramientas que ya usa la mayoría de los proyectos JavaScript modernos. Tiene un coste: los archivos de configuración existentes deben reescribirse, y las integraciones que leían svelte.config.js tendrán que adaptarse.
Las funciones remotas, el corazón de la versión
La funcionalidad que vertebra esta versión tiene nombre: las funciones remotas. Permiten llamar a código de servidor directamente desde un componente, con inferencia de tipos de extremo a extremo — sin archivo +server.ts, sin cablear a mano las llamadas fetch y sin mantener manualmente la coherencia entre los tipos de la petición y los de la respuesta. Cuatro primitivas cubren los usos habituales: query para leer datos, form para los envíos de formulario, command para las mutaciones y prerender para los valores calculados en compilación.
// data.remote.ts
import { query } from '$app/server';
export const listArticles = query(async () => {
// exécuté sur le serveur, typé jusque dans le composant
return await db.articles.findMany();
});
En el componente, la función se importa y se espera como cualquier función asíncrona, y la frontera de red pasa a ser un detalle de implementación en vez de un contrato que mantener.
Al retirar el archivo
+server.tsde una simple lectura de datos, SvelteKit 3 acerca el código de servidor al componente que lo consume.
Punto de atención. Las funciones remotas siguen tras una marca experimental en esta RC. Esbozan la dirección que toma el framework, pero la API todavía puede moverse: llevarlas a producción hoy implica aceptar ajustes en las próximas versiones.
Enrutado superficial, errores y trazado
Se revisan varias API de más bajo nivel. El enrutado superficial queda integrado en goto(), sin pasar por un módulo aparte. La firma de error() evoluciona: el mensaje se convierte en un argumento de pleno derecho. invalidateAll() pasa a llamarse refreshAll(), quedando el nombre antiguo obsoleto durante la transición.
Aparecen dos módulos nuevos. $app/manifest expone en ejecución información sobre los recursos, las páginas prerenderizadas y las rutas; $app/service-worker, junto con la disponibilidad de $app/paths en ese contexto, mejora la escritura de service workers. El trazado sale del dominio experimental y se admiten los sourcemaps de producción, también para vincular una pila de llamadas con su código fuente.
Migración: una herramienta, algunas rupturas
SvelteKit ofrece un comando de migración que asume la mayor parte del trabajo y enumera los puntos a tratar a mano. Un proyecto nuevo se genera con la misma familia de herramientas en su versión «next».
# migrer un projet existant
npx sv@next migrate sveltekit-3 --tasks all --confirm
# démarrer un nouveau projet
npx sv@next create my-new-app
La tabla siguiente resume los desplazamientos estructurales que conviene anticipar.
| Elemento | SvelteKit 2 | SvelteKit 3 |
|---|---|---|
| Archivo de configuración | svelte.config.js | vite.config.ts |
| Alias de biblioteca | $lib | #lib |
| Refresco de datos | invalidateAll() | refreshAll() |
| Base requerida | Vite anterior, Svelte 5 | Vite 8, Svelte 5 |
| Código de servidor desde un componente | +server.ts + fetch | funciones remotas (experimental) |
Lo que hay que recordar
SvelteKit 3 no es una revisión cosmética: el traslado de la configuración a Vite y el cambio de nombre de varias API imponen una migración, que la herramienta dedicada hace por fortuna poco dolorosa. La verdadera promesa está en las funciones remotas, que buscan hacer desaparecer la capa de API manual entre el servidor y el componente — pero siguen siendo experimentales, y son ellas las que habrá que vigilar de cara a la versión estable.
Adopté SvelteKit en varios proyectos de cliente precisamente por su capacidad de reducir el código de fontanería. Las funciones remotas van justo en esa línea: en una aplicación donde mantengo a mano una docena de rutas +server.ts y sus tipos, sustituirlas por llamadas tipadas directas es lo primero que me dieron ganas de probar de la RC. No las llevaré a producción mientras lleven la marca experimental, pero ya estoy reescribiendo la configuración para estar listo el día de la estable. — Simon Janvier
Para saber más: el anuncio oficial de la candidata de lanzamiento, «The SvelteKit 3 Release Candidate is here» en el blog de Svelte.
