$devvkit learn --librarie sveltekit-guide
SvelteKit Guide
[svelte][ssr][full-stack][compiler]
JavaScript / TypeScript
Install
npx sv create my-app cd my-app npm install npm run dev
SvelteKit is the official application framework for Svelte. Svelte shifts work from browser to compiler — your components compile to highly optimized vanilla JS at build time.
Svelte 5 introduces runes (, , ) which bring fine-grained reactivity without the old let magic. The mental model is simpler than React's hooks or Vue's ref.
SvelteKit provides file-based routing, server load functions, form actions, streaming, and adapter-based deployment to serverless, Node, or static hosts.
Setup
Create project— Scaffold SvelteKit app.
npx sv create my-app --template demo cd my-app npm run dev
Routing
Page route— Route with data loading.
// src/routes/+page.ts
export async function load({ fetch }) {
const users = await fetch('/api/users').then(r => r.json())
return { users }
}
// src/routes/+page.svelte
<script lang="ts">
let { data } = ()
</script>
{#each data.users as user}
<p>{user.name}</p>
{/each}Dynamic route— Route param.
// src/routes/users/[id]/+page.ts
export async function load({ params, fetch }) {
const user = await fetch(/api/users/).then(r => r.json())
return { user }
}Data Loading
Server-only load— Load runs on server only.
// src/routes/+page.server.ts
export async function load({ locals }) {
// Direct DB access — never exposed to client
const users = await db.findMany()
return { users }
}Form Actions
Form action— Server-side form handler.
// src/routes/login/+page.server.ts
export const actions = {
default: async ({ request, cookies }) => {
const form = await request.formData()
const email = form.get('email')
// validate, set cookie, redirect
throw redirect(303, '/dashboard')
}
}Runes
Runes — — Fine-grained reactive state.
<script lang="ts">
let count = (0)
let doubled = (count * 2)
(() => { console.log('count:', count) })
</script>
<button onclick={() => count++}>{count}</button>Runes — class syntax— Reactive class.
class Counter {
count = (0)
doubled = (this.count * 2)
increment() { this.count++ }
}Deployment
Deploy to Vercel— Adapter-based deploy.
npm install --save-dev @sveltejs/adapter-vercel
// svelte.config.js:
import adapter from '@sveltejs/adapter-vercel'
export default { kit: { adapter: adapter() } }