Asi sveltekit-data-flow
SvelteKit data flow guidance. Use for load functions, form actions, server/client data, and invalidation. Covers +page.server.ts vs +page.ts, serialization, fail(), redirect(), error(), invalidateAll().
install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/sveltekit-data-flow" ~/.claude/skills/plurigrid-asi-sveltekit-data-flow && rm -rf "$T"
manifest:
skills/sveltekit-data-flow/SKILL.mdsource content
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
- load-functions.md - Server vs universal
- form-actions.md - Form handling patterns
- serialization.md - What can/can't serialize
- error-redirect-handling.md - fail/redirect/error
- client-auth-invalidation.md - invalidateAll() after client-side auth
Notes
- Server load → universal load via
param | ALWAYSdatathrow redirect()/error() - No class instances/functions from server load (not serializable)
- Last verified: 2025-01-11