Svelte 5 Syntax
Always use Svelte 5 runes. Never use Svelte 4 patterns.
Svelte 4 → Svelte 5
Svelte 4 ❌ Svelte 5 ✅
export let foo let { foo } = $props()
export let foo = 'default' let { foo = 'default' } = $props()
$: doubled = x * 2 let doubled = $derived(x * 2)
$: { sideEffect() } $effect(() => { sideEffect() })
on:click={handler} onclick={handler}
on:input={handler} oninput={handler}
on:click|preventDefault={h} onclick={e => { e.preventDefault(); h(e) }}
value = e.target.value} />
{@render children?.()}
Snippets (Replace Slots)
{#snippet footer(close)} {/snippet}
{@render header?.()} {@render children?.()}
References
Load these when needed:
references/typescript.md — Typing props, state, derived, snippets, events, context references/patterns.md — Context API, controlled inputs, forwarding props, async data, debouncing references/gotchas.md — Reactivity edge cases, effect pitfalls, binding quirks