# Svelte 5 Quick Reference Card
## Runes Cheat Sheet
```svelte
```
---
## Template Syntax
```svelte
{@render children?.()}
{@render header?.()}
{@render row({ item, index })}
{#if condition}
...
{:else if other}
...
{:else}
...
{/if}
{#each items as item, index (item.id)}
...
{/each}
{#await promise}
{:then data}
{:catch error}
{/await}
{#key value}
{/key}
{@html content}
{@debug variable}
{#snippet name(param1, param2)}
{param1}
{/snippet}
```
---
## Component Patterns
```svelte
{@render header?.()}
{@render children?.()}
{@render footer?.({ close })}
```
---
## State Management
```typescript
// stores/counter.svelte.ts
export class CounterStore {
count = $state(0);
doubled = $derived(this.count * 2);
increment = () => { this.count++; }
decrement = () => { this.count--; }
reset = () => { this.count = 0; }
}
export const counter = new CounterStore();
// Usage in component
import { counter } from '$lib/stores/counter.svelte';
// Read: counter.count, counter.doubled
// Write: counter.increment()
```
---
## SvelteKit Essentials
```typescript
// +page.ts (Universal load)
export async function load({ params, fetch }) {
const data = await fetch(`/api/items/${params.id}`);
return { item: await data.json() };
}
// +page.server.ts (Server-only load)
export async function load({ params, locals }) {
return { user: locals.user };
}
// Form Actions
export const actions = {
default: async ({ request }) => {
const data = await request.formData();
// Process form
return { success: true };
},
named: async ({ request }) => {
// Named action: