Svelte 5 Runes Cheatsheet
Dense interactive reference for state primitives, component boundary interfaces, and side-effect runes.
Declares fine-grained reactive state. Mutating properties on objects or arrays triggers targeted updates.
let count = $state(0);$state Usage
Declares shallow reactive state. Variable is reactive, inner properties are not proxied.
let data = $state.raw(largeObject);$state.raw Usage
Computes derived state automatically when referenced reactive signals change.
let double = $derived(count * 2);$derived Usage
Computes complex derived state using a multi-line closure function.
let total = $derived.by(() => { ... return val; });$derived.by Usage
Declares component input props with optional default values and rest properties.
let { title, count = 0 } = $props();$props Usage
Marks a prop as eligible for two-way binding using `bind:prop`.
let { value = $bindable() } = $props();$bindable Usage
Runs side effects when read reactive signals update. Executes post-DOM render.
$effect(() => { ... return () => cleanup(); });$effect Usage
Runs side effects BEFORE the DOM updates.
$effect.pre(() => { ... });$effect.pre Usage
Console-logs reactive signal changes in development builds. Stripped in production.
$inspect(count, user).with(console.trace);