# Svelte 5 Events Reference ## Table of Contents - [Event Handler Syntax](#event-handler-syntax) - [Callback Props Pattern](#callback-props-pattern) - [Context API](#context-api) --- ## Event Handler Syntax Svelte 5 replaces `on:click` directive syntax with standard HTML attribute syntax `onclick`. ### Basic Event Handlers **Svelte 4:** ```svelte
...
``` **Svelte 5:** ```svelte
...
``` ### Event Modifiers Migration Event modifiers no longer exist. Use wrapper functions: **Svelte 4:** ```svelte
...
``` **Svelte 5:** ```svelte
...
``` ### Capture, Passive, and NonPassive ```svelte
...
e.preventDefault()}>...
``` ### Inline Handlers ```svelte name = e.target.value} /> ``` ### Event Handler Shorthand ```svelte ``` ### Spreading Event Handlers ```svelte ``` ### Multiple Handlers for Same Event In Svelte 5, combine logic into one handler: ```svelte ``` ### TypeScript Event Typing ```svelte ``` --- ## Callback Props Pattern Svelte 5 deprecates `createEventDispatcher` in favor of callback props for component-to-parent communication. ### Basic Event Pattern **Svelte 4:** ```svelte save()} oncancel={() => reset()} onclose={() => visible = false} /> ``` ### Typed Callbacks with TypeScript ```svelte ``` ### Forwarding Native Events ```svelte ``` --- ## Context API Context functions must be called synchronously during component initialization. ### Correct Context Usage ```svelte ``` ### Reactive Context Values Pass `$state` objects for reactive context: ```svelte {@render children()}

Theme: {themeContext.current}

``` ### Type-Safe Context Pattern ```ts // context.ts import { setContext, getContext } from 'svelte'; const THEME_KEY = Symbol('theme'); interface ThemeContext { current: 'light' | 'dark'; toggle: () => void; } export function setThemeContext(context: ThemeContext) { setContext(THEME_KEY, context); } export function getThemeContext(): ThemeContext { const context = getContext(THEME_KEY); if (!context) throw new Error('Theme context not found'); return context; } ``` ### Avoid Generic Keys ```svelte ``` ### hasContext Check ```svelte ``` ### Context Boundaries Context flows down the component tree: ```svelte ```