sveltekit-data-flow

star 210

SvelteKit data flow guidance. Use for load functions, form actions, and server/client data. Covers +page.server.ts vs +page.ts, serialization, fail(), redirect(), error().

spences10 By spences10 schedule Updated 12/14/2025

name: sveltekit-data-flow

IMPORTANT: Keep description on ONE line for Claude Code compatibility

prettier-ignore

description: SvelteKit data flow guidance. Use for load functions, form actions, and server/client data. Covers +page.server.ts vs +page.ts, serialization, fail(), redirect(), error().

SvelteKit Data Flow

Quick Start

Which file? Server-only (DB/secrets): +page.server.ts | Universal (runs both): +page.ts | API: +server.ts

Load decision: Need server resources? → server load | Need client APIs? → universal load

Form actions: Always +page.server.ts. Return fail() for errors, throw redirect() to navigate, throw error() for failures.

Example

// +page.server.ts
import { fail, redirect } from '@sveltejs/kit';

export const load = async ({ locals }) => {
    const user = await db.users.get(locals.userId);
    return { user }; // Must be JSON-serializable
};

export const actions = {
    default: async ({ request }) => {
        const data = await request.formData();
        const email = data.get('email');

        if (!email) return fail(400, { email, missing: true });

        await updateEmail(email);
        throw redirect(303, '/success');
    },
};

Reference Files

Notes

  • Server load → universal load via data param | ALWAYS throw redirect()/error()
  • No class instances/functions from server load (not serializable)
  • Last verified: 2025-01-11
Install via CLI
npx skills add https://github.com/spences10/svelte-claude-skills --skill sveltekit-data-flow
Repository Details
star Stars 210
call_split Forks 20
navigation Branch main
article Path SKILL.md
More from Creator