Введение: SvelteKit 3 и новая эра Full-stack разработки

Помните то чувство, когда вы пишете очередной скучный +server.ts только для того, чтобы прокинуть пару полей из формы в базу данных? Прямо сейчас фронтенд-разработка переживает переломный момент: SvelteKit 3 вышел в стадию Release Candidate (RC), и он пришел избавить нас от этой рутины (и от бесконечных копипаст со Stack Overflow). Долгое время разработчики, ценящие Svelte за лаконичный синтаксис и отсутствие тяжелого виртуального DOM, ждали инструмент, способный на равных конкурировать с тяжеловесами вроде Next.js или Nuxt.

Теперь этот момент настал. SvelteKit 3 позиционируется не просто как инструмент маршрутизации, а как полноценный бэкенд-фреймворк. Главным фокусом новой версии стал радикальный подход к RPC (Remote Procedure Calls), который бросает вызов привычным стандартам Full-stack разработки. Создатели переосмыслили взаимодействие клиента и сервера, убрав лишнюю бойлерплейт-разметку.

В этой статье мы подробно разберем ключевые изменения в SvelteKit 3 RC, изучим работу с новым CLI, оценим интеграцию с Drizzle ORM и Better-auth, а также обсудим вопросы миграции.

Статус Release Candidate и философия бэкенд-фреймворка

Статус Release Candidate означает, что ядро SvelteKit 3 заморожено для крупных архитектурных изменений. Сообщество может тестировать фреймворк в боевых условиях перед релизом. Представьте, что вы собираете MVP для нового финтех-стартапа: времени на написание оберток над API нет, а деплой нужен вчера (и желательно без увольнения). Аналогично тому, как Next.js стал стандартом для React, SvelteKit 3 закрывает аналогичные потребности в экосистеме Svelte, опираясь на принципы максимальной легковесности и компиляции.

Новый релиз решает главную боль разработчиков — разделение кода на клиент и сервер без необходимости писать громоздкие REST или GraphQL эндпоинты. Грань между частями приложения становится почти невидимой, сохраняя строгую типобезопасность.

Когда дедлайн горит, а архитектуру приложения нужно пересобрать на лету, на помощь приходят инструменты нового поколения. Давайте посмотрим, как это работает на практике.

Радикальный подход к RPC: прощай, рутинные API routes?

Самое громкое нововведение SvelteKit 3 — это переосмыслениый подход к Remote Procedure Calls (RPC). Традиционная разработка требовала создания файлов +server.ts с обработчиками HTTP-методов (GET, POST), ручной сериализации и валидации.

Теперь вы можете вызывать серверные функции прямо на клиенте, сохраняя сквозную типизацию (End-to-End Type Safety) „из коробки“ без сторонних библиотек вроде tRPC. Пример того, как это выглядит в коде:

// src/lib/actions.server.ts
export async function createUser(name: string, email: string) {
    // Выполняется строго на сервере
    await db.insert(users).values({ name, email });
    return { success: true };
}

// src/routes/+page.svelte
<script lang="ts">
    import { createUser } from '$lib/actions.server';
    
    let name = '';
    let email = '';

    async function handleSubmit() {
        const result = await createUser(name, email);
        if (result.success) alert('Пользователь создан!');
    }
</script>

Согласитесь, писать код стало в разы приятнее, но чтобы вся эта конструкция летела без затыков (и не падала с фразой „но ведь на моей машине всё работало“), под капотом должен быть надежный стек. Переходим к инфраструктуре.

Интеграция со стеком: Drizzle ORM и Better-auth

С выходом SvelteKit 3 разработчики уделили особое внимание экосистемной совместимости. Нативная поддержка современных легковесных библиотек делает сборку невероятно быстрой.

  • Drizzle ORM: Идеальный компаньон для SvelteKit 3 благодаря нулевому оверхеду и SQL-подобному синтаксису.
  • Better-auth: Современная модульная система аутентификации, которая глубоко интегрируется с серверными экшенами SvelteKit.

Объединив эти инструменты, вы получаете монолитн