--- description: 'Use when writing or editing Svelte components, reactive state, props, effects, or event handlers for The Collective Hub. Enforces Svelte 5 runes syntax and forbids legacy Svelte 4 patterns.' applyTo: '**/*.svelte' --- # Svelte 5 Rules ## Always Use Runes | Need | Use | Never | | --------------------- | ------------------------ | --------------------------------- | | Local state | `$state()` | `let x = 1` (mutable) | | Computed value | `$derived(expr)` | `$: x = expr` | | Side effects | `$effect(() => { ... })` | `onMount` (unless cleanup needed) | | Component props | `let { x } = $props()` | `export let x` | | Two-way bindable prop | `$bindable()` | — | ```svelte ``` ## Event Handlers Use direct HTML event attributes — not `on:` directive syntax. ```svelte (search = e.currentTarget.value)} /> ``` ## Composition: Snippets over Slots ```svelte {#snippet row(item)}