# What changed in svelte

> 396 changes in svelte 5 from its official release notes, upgrade guides and advisories: 14 breaking, 14 security, 19 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/svelte/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## svelte 5

### Breaking changes

- Using let: directives on a component with a children snippet now errors. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Calling setContext after an await during SSR throws set_context_after_init. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Declaration tags and {@const} are blocked on async values read inside closures. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- This error is now reported for export let x = $derived(...) in runes mode. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Duplicate snippet or declaration tag definitions now produce a compile-time error. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- The async `blocking` strategy is replaced with `merging`. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- The introstart event is no longer dispatched for an animation of the animate directive. (5.55.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.5)
- The `idPrefix` option no longer accepts `--`. (5.55.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.2)
- The error is now emitted in production. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- SvelteKit data attributes were removed from the element type declarations. (5.49.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.2)
- Calling the get function for an unset createContext value on the server now throws. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- Invalid {@tag}s now throw. (5.45.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.2)
- These await expressions now produce an error at compile time instead of at runtime. (5.43.14) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.14)
- Reactivity context is no longer preserved across function boundaries. (5.41.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.2)

### Security

- The regular expression handling was hardened. (5.55.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.7)
- Svelte: ReDoS in `<svelte:element>` Tag Validation (5.55.7) — [security advisory](https://github.com/advisories/GHSA-9RMH-MM8F-R9H6)
- Svelte SSR vulnerable to cross-site scripting via spread attributes (5.55.7) — [security advisory](https://github.com/advisories/GHSA-PR6F-5X2Q-RWFP)
- Svelte: SSR XSS via Insecure Promise Serialization in hydratable (5.55.7) — [security advisory](https://github.com/advisories/GHSA-F3CJ-J4F6-WQ85), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.7)
- Svelte Vulnerable to XSS via DOM Clobbering of Internal Framework State (5.55.7) — [security advisory](https://github.com/advisories/GHSA-RCQX-6Q8C-2C42)
- Svelte vulnerable to XSS during SSR with contenteditable `bind:innerText` and `bind:textContent` (5.53.5) — [security advisory](https://github.com/advisories/GHSA-PHWV-C562-GVMH), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.5)
- Svelte: XSS via HTML Comment Injection in SSR Error Boundary Hydration Markers (5.53.5) — [security advisory](https://github.com/advisories/GHSA-QGVG-PR8V-6RR3), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.5)
- Svelte affected by cross-site scripting via spread attributes in Svelte SSR (5.51.5) — [security advisory](https://github.com/advisories/GHSA-F7GR-6P89-R883)
- Svelte affected by XSS in SSR `<option>` element (5.51.5) — [security advisory](https://github.com/advisories/GHSA-H7H7-MM68-GMRC), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.5)
- Svelte SSR attribute spreading includes inherited properties from prototype chain (5.51.5) — [security advisory](https://github.com/advisories/GHSA-CRPF-4HRX-3JRP)
- Svelte SSR does not validate dynamic element tag names in `<svelte:element>` (5.51.5) — [security advisory](https://github.com/advisories/GHSA-M56Q-VW4C-C2CP), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.5)
- Template-literal-special characters in SSR attribute values are sanitized. (5.51.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.0)
- HTML handling uses TrustedTypes where supported. (5.51.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.0)
- svelte vulnerable to Cross-site Scripting (5.46.4) — [security advisory](https://github.com/advisories/GHSA-6738-R8G5-QWP3)

### New APIs and options

- Exported from svelte/server for use by developers. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Added to SvelteMap. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Added to SvelteMap. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Added as a function to createContext. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Exported from svelte/server for use by developers. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- The defaultValue option is now supported on select elements. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Exported from svelte/server for use by developers. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Exported from svelte/server for use by developers. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- The print option indent is now available. (5.56.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.7)
- Exports TweenOptions, SpringOptions, SpringUpdateOptions and Updater from svelte/motion. (5.55.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.0)
- The custom element shadow option now accepts a ShadowRootInit object. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- Export parseCss from svelte/compiler so it can be imported by developers. (5.48.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.0)
- Select elements can now be customized. (5.47.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.47.0)
- Adds a csp option to render(...), and emits hashes when using hydratable. (5.46.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.0)
- Adds the print function. (5.45.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.0)
- Adds the hydratable API. (5.44.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.44.0)
- Adds out-of-order rendering. (5.43.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.0)
- An experimental fork API is available. (5.42.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.42.0)
- Adds the `$state.eager(value)` rune. (5.41.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.0)

### Performance

- Parser interactions with Acorn are faster or avoided where possible. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Regex matching is avoided in the parser where possible. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- SSR rendering reduces render-result garbage collection. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Map lookups for legacy reactive statement ordering change from O(n²) to O(n). (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- The option/select value guard reuses its cached value. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Make async blocker analysis scale linearly with the number of top-level references. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Compilation skips unnecessary blocker analysis for components without top-level await. (5.56.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.6)
- Walk `composedPath()` directly during delegated event propagation. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Avoids re-traversing the effect tree after `$:` assignments. (5.53.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.8)
- Caches element interactivity and source line splitting in the compiler. (5.53.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.7)
- Optimizes CSS selector pruning. (5.53.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.7)
- Avoids O(n²) name scanning in scope generate and unique. (5.53.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.7)
- The compiler analysis phase is optimized. (5.53.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.6)
- Parser hot paths are optimized for faster compilation. (5.53.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.6)
- Already settled promises no longer incur async overhead. (5.48.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.1)
- Tracing is used less eagerly during development. (5.43.11) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.11)
- Await expressions are optimized more effectively. (5.41.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.4)

### Behavior and default changes

- Declarations are now allowed in the template. (5.56.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.0)
- The css compiler option can now be a function. (5.54.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.54.0)
- The customElement compiler option can now be a function. (5.54.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.54.0)
- The runes compiler option can now be a function. (5.54.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.54.0)
- Comments are now allowed in tags, expanding the syntax developers can write. (5.53.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.0)
- Error boundaries now work on the server. (5.53.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.0)
- Supports TrustedHTML in {@html} expressions. (5.52.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.52.0)
- Effects are proactively deferred in a pending boundary, changing when they run. (5.51.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.4)
- Can now be used when instantiating components programmatically. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- The assignment_value_stale warning is issued more conservatively. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- Adds more CSS selectors to print(). (5.45.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.7)
- The state_referenced_locally diagnostic now applies to props. (5.45.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.3)
- Attachments and attribute effects are no longer executed eagerly. (5.43.15) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.15)
- The restriction against calling flushSync in effects has been lifted. (5.43.15) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.15)
- Vite optimized deps are excluded from stack traces, making those traces less cluttered. (5.41.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.3)

### Tooling

- Provides a proper public type for the parseCss result. (5.50.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.2)

### Fixes and other changes

- A redundant link role is no longer warned about on area elements without an href. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Await blocks with only a pending branch are printed correctly. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Await wrappers preserve location information. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Removing the focused element while using bind:activeElement no longer throws state_unsafe_mutation. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Stale boundary reset callbacks are ignored. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Hydration state is restored if a custom element attribute update throws. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Deferred transitions aborted before initialization are handled. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Reconnecting deriveds no longer creates duplicate subscriptions. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Dynamic element connections are preserved during hydration. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Each-block commits read the batch-local array. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Compilation errors if `{:else}` is followed by another `{:else}` or `{:else if ...}`. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Event handlers assigned after top-level await are attached in production. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Pending work is flushed before the flushSync callback is invoked. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Hydration recovers if an unexpected node replaces a nested boundary comment. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Error boundaries no longer intercept hydration mismatch recovery. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- When migration cannot turn a reactive assignment into a declaration, it keeps the assignment even when it has no dependencies. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Migration no longer hangs on a declaration sharing a line with its script tag. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Compilation errors when a declaration in a snippet redeclares one of its parameters. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- An unchanged spread value is no longer overwritten, preserving incomplete number input. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- URL updates no longer track SvelteURLSearchParams. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Components destroyed while waiting for top-level await no longer create async deriveds. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- Untracked derived reads no longer retain disconnected dependencies. (5.57.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.2)
- aria-braillelabel is recognized as a known ARIA attribute. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- aria-brailleroledescription is recognized as a known ARIA attribute. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Deferred event listeners are cancelled during cleanup. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- The fallback of an each block resolves in the enclosing scope. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Effect trees of batches no longer interfere with each other. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Global CSS is preserved in components without scopable elements. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Input default values are serialized during server rendering. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- Object.hasOwn reacts to ownership changes on state proxies. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- $state.eager is preserved when used as a variable initializer. (5.57.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.1)
- The accessibility check now accepts onfocusin and onfocusout. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Line feed character references are preserved in attribute values. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Omitted from SSR output because it has no HTML attribute. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Preserved on hydrated radio inputs with spread attributes. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Teardown errors are routed through invoke_error_boundary. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- CSS tree-shaking is avoided for exported Snippet. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- They are measured before their starting styles are applied. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Uppercase-X hexadecimal numeric character references are decoded. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Callbacks run when a server render throws. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- No longer fires twice when compilerOptions.hmr is true. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- They are no longer resurrected when an ancestor block is paused and resumed. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Dependencies of a reaction that throws are kept, preventing deriveds it read from being leaked or stuck in their error. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Static value attributes no longer produce malformed AST output. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Mutating selectedcontent no longer changes the selected option. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Warnings are now emitted for undeclared shorthand event handlers on svelte:window, svelte:document, and svelte:body. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- The transition no longer produces NaN keyframe values for elements without a layout box. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Failed snippets are scoped to their boundary. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Component instances stored in $state are no longer turned into state proxies. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Template store subscriptions are blocked on the promise that assigns the store. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Rendering of Svelte custom element slots is more robust. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Anchors are removed on unmount. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Elements inside svelte:head no longer receive a class hash. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Snapshots are now tracked in reactions. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- The port signal is synchronized when the protocol setter clears the port. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Static textarea value attributes are properly applied during CSR. (5.57.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.57.0)
- Correctly print await blocks with catch clauses. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Apply CSS custom properties with falsy values on components. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Preserve CSS escape sequences when printing selectors. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Preserve namespaces in CSS type selectors. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Allow custom elements to receive async values as props. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Avoid double-calling a derived reference when destructuring `$derived` of another `$derived` during server-side rendering. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Give effect teardowns the value from before the first write in a flush. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Release `last_propagated_event` after propagation settles so it no longer retains the last event's target subtree. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Strip comments from inline style values in linear time. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Transform expressions inside labeled statements during server compilation. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Ignore Program node comments during migration. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Parse `:nth-child(2n of.foo)` when `of` is not followed by whitespace. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Increment private state fields through a non-`this` receiver and preserve short-circuiting for logical assignments. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Clean up removed capture event handlers from spread attributes. (5.56.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.10)
- Comments in attributes are no longer duplicated. (5.56.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.9)
- The controlled each fast path is skipped while another batch is pending, fixing behavior in that situation. (5.56.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.9)
- The AST printer now preserves CSS comments. (5.56.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.9)
- Whitespace handling inside the printer was improved. (5.56.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.9)
- Hydrating a failed boundary now calls onerror and provides a working reset. (5.56.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.8)
- Reset now works when hydrating a failed boundary. (5.56.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.8)
- Select selection is now preserved when spread attributes omit value. (5.56.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.8)
- A derived with an abort controller is rerun when it reconnects. (5.56.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.6)
- Declaration tags no longer trigger a warning in event handlers. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- Declaration tags are correctly transformed during SSR. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- Declaration tags are no longer treated as parts inside each blocks. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- Deriveds read inside branch or root effects are no longer incorrectly reconnected. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- An unnecessary derived effect is skipped in an earlier batch. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- A derived's own AbortSignal is aborted when it disconnects. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- Computed keys in keyed each-block destructuring patterns are now transformed correctly. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- Sourcemaps are chained with an empty `sources[0]` instead of being dropped. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- The compiler now correctly transforms `$state.eager()` for SSR output. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- Clearing the previous task reference after abort prevents a memory leak on interrupted tweens. (5.56.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.5)
- The declarator end position now includes wrapping parentheses, improving source position information for {@const} declarations. (5.56.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.4)
- Reactivity context is now always unset after being restored, preventing context from being left set. (5.56.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.4)
- Optional parameters are stripped so the generated JavaScript is valid. (5.56.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.4)
- Subscribers are no longer notified when the URL changes without affecting the search string. (5.56.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.4)
- Errors that occur in destroyed effects are now ignored. (5.56.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.3)
- BigInts in `$state.snapshot(...)` return values are now correctly typed. (5.56.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.3)
- Declaration tags are ignored for the animation directive. (5.56.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.2)
- Pending async deriveds are rejected when discarded. (5.56.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.2)
- Declaration tag contents are parsed more robustly, including when they contain `type`. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- References to earlier declarators in a declaration tag are transformed correctly. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- The compiler no longer emits spurious `state_referenced_locally` warnings for `$derived` declarations in declaration tags. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- Whitespace before `let` or `const` in declaration tags is now tolerated. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- Reference checks for blockers now run on the server as well. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- Setting duplicate keys to the same joined value now updates `SvelteURLSearchParams` correctly. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- Parsing no longer enters an infinite loop when a tag expression ends with a trailing `/` at end of input. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- Newlines in spread input values are preserved when the `type` attribute follows `value`. (5.56.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.1)
- Include the tag name in this accessibility warning. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Correctly coordinate component-level effects inside async blocks. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Async blockers propagate through closure references, so template expressions correctly wait for awaited values. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Allow `$derived(await ...)` in disconnected effect roots. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Declare `let:` directives before `{@const}` declarations on slotted elements. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Resume branches that were kept around after being outro-ed. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Avoid emitting a waterfall warning when an async operation resolves to the same value. (5.55.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.10)
- Promise-ifies `{#await await ...}` expressions on the server and correctly hydrates them on the client. (5.55.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.9)
- An uninitialized derived now executes even if it has been destroyed. (5.55.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.8)
- Context is unset synchronously in run. (5.55.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.8)
- Teardown effects no longer run when deriveds are unfrozen. (5.55.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.8)
- Empty attribute names are disallowed during SSR. (5.55.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.7)
- Updating `bind:this` accounts for proxified instances. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Component member expressions compile correctly for SSR. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Comments are ignored when reading CSS values. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- `@debug` tags can reference awaited variables. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Eager effects are flushed in production. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Errors from failed iterables are rethrown after calling `return()`. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Fallback props rerun when their dependencies update. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- False-positive errors from `$inspect` dependencies are ignored. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Running obsolete async branches are aborted. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- The typings allow `null` for `pending`. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- `Promise.all` is wrapped in `save` during SSR. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Context is reapplied after an error is transformed during SSR. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Stale deriveds resolve with the latest value. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Stale promises are left to wait for a later resolution instead of being rejected. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Dependencies of `$state.eager/pending` are kept. (5.55.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.6)
- Deriveds are no longer marked while an effect is updating. (5.55.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.5)
- Child effect roots are no longer marked as inert. (5.55.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.4)
- Context is reset after waiting on blockers of @const expressions. (5.55.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.4)
- New eager effects continue to be flushed. (5.55.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.4)
- Blockers for @const are now calculated correctly. (5.55.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.3)
- Deriveds are frozen once their containing effects are destroyed. (5.55.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.3)
- HMR updates for dynamic components are now handled properly. (5.55.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.3)
- Error boundary rendering is deferred in forks. (5.55.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.3)
- Prevents a false-positive reactivity loss warning. (5.55.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.56.2), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.3)
- In legacy mode, @const tags are invalidated based on visible references. (5.55.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.2)
- In dev mode, `$destroy`, `set`, and `on` instance methods are no longer overridden. (5.55.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.2)
- Types for `ontoggle` on `<details>` elements are corrected. (5.55.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.2)
- Parentheses in template expressions are handled more robustly. (5.55.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.2)
- Improves the error message for duplicate module imports. (5.55.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.1)
- New effects are rescheduled in prior batches. (5.55.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.1)
- Prevents a hydration error when using async {@html ...}. (5.55.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.1)
- Bindings are now correctly handled on the server. (5.55.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.1)
- Forwards the correct start and end nodes to the active effect. (5.55.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.55.0)
- Defers batch resolution until earlier intersecting batches have committed. (5.54.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.54.1)
- Fixes hydration comments during HMR, addressing incorrect hydration behavior during hot module replacement. (5.54.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.54.1)
- Properly invokes iterator.return() during the reactivity loss check. (5.54.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.54.1)
- Reactivity loss tracking has been reinstated. (5.54.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.54.0)
- Nodes are removed in a boundary when work is pending and HMR is active. (5.53.13) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.13)
- Using $inspect after top-level await no longer breaks builds. (5.53.13) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.13)
- Batches made obsolete by a commit are discarded. (5.53.13) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.13)
- Inert effects resume when they come from offscreen. (5.53.13) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.13)
- The standalone-child state is correctly reset. (5.53.13) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.13)
- Templates no longer eagerly access functions that have not yet been initialized. (5.53.13) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.13)
- Handles asynchronous right-hand sides in assignment_value_stale. (5.53.12) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.12)
- Ensures derived values remain correct across batches. (5.53.12) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.12)
- Updates the select’s internal value on change, fixing select value behavior. (5.53.12) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.12)
- Lazily evaluates the right-hand side when checking for assignment_value_stale. (5.53.11) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.11)
- Recovers from errors that leave the effect tree corrupted. (5.53.11) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.11)
- Resolves the boundary in the correct batch during hydration. (5.53.11) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.11)
- Removes a circular dependency involving untrack. (5.53.11) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.11)
- Batches are re-processed when new root effects are scheduled. (5.53.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.10)
- Improves cleanup timing for bind:this. (5.53.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.9)
- Handles async updates within a pending boundary. (5.53.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.8)
- {@html} no longer duplicates content inside contenteditable elements. (5.53.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.8)
- Preserves original boundary errors when keyed each rows are removed during async updates. (5.53.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.7)
- Preserves each items that are needed by pending batches. (5.53.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.7)
- Event handlers are always case insensitive during SSR. (5.53.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.6)
- Fixes incorrect handling of keys with undefined values. (5.53.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.6)
- The search setter now returns the normalized value, matching native URL behavior. (5.53.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.6)
- Default parameters no longer cause scope leaks. (5.53.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.4)
- Flushed effects no longer run again. (5.53.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.4)
- If blocks hydrate correctly. (5.53.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.4)
- Server context is set after async transformError. (5.53.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.4)
- The :catch branch of an #await block now renders with the correct key. (5.53.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.3)
- String coercion is now consistent with toString. (5.53.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.3)
- Fixes update expressions on server deriveds. (5.53.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.2)
- Handles shadowed function names correctly. (5.53.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.1)
- Head effects are now kept in the effect tree. (5.53.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.0)
- TrustedHTML is used to test for customizable <select> support where necessary. (5.53.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.53.0)
- Repairs truthy/falsy hydration mismatches for dynamic components. (5.52.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.52.0)
- Re-runs non-render-bound deriveds on the server. (5.52.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.52.0)
- Fixes miscellaneous option escaping and backwards compatibility. (5.51.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.5)
- Event handlers are stripped during SSR. (5.51.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.5)
- In dev mode, non-idempotent each block keys are detected and reported as errors. (5.51.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.4)
- Treats CSS attribute selectors as case-insensitive for HTML enumerated attributes. (5.51.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.3)
- Prevents event delegation logic from conflicting between Svelte instances. (5.51.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.3)
- Runs effects in pending snippets. (5.51.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.3)
- Locates the Rollup annotation so it is friendly to JavaScript downgraders. (5.51.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.3)
- Dev delegated handlers now take async into consideration. (5.51.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.2)
- The state_referenced_locally warning is now emitted for non-destructured props. (5.51.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.2)
- Fixes a crash when document.contentType is undefined. (5.51.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.1)
- Uses symbols for encapsulated event delegation. (5.51.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.1)
- Delegated event handlers are preserved while one or more root components are using them. (5.51.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.0)
- Block-level elements are flushed into separate sequences when formatting output. (5.51.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.51.0)
- Freezes effects inside deriveds when disconnecting and unfreezes them on reconnect. (5.50.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.3)
- Always lowercases HTML elements for XHTML compliance. (5.50.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.3)
- Renders multiple and selected attributes as empty strings for XHTML compliance. (5.50.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.3)
- Accounts for nodeName case sensitivity on XHTML pages. (5.50.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.3)
- Propagates $effect errors to the boundary. (5.50.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.3)
- Doesn't swallow DOMException when media.play() fails. (5.50.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.2)
- Resolves effect_update_depth_exceeded when using bind:value on a <select> with derived state in legacy mode. (5.50.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.2)
- Prevents hydration mismatches for async render tags. (5.50.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.1)
- Boolean attribute values are rendered as empty strings for XHTML compliance. (5.50.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.1)
- Already-resolved async blocks are properly hydrated. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- Infinite effect loops are cleared after flushing. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- Key blocks now allow NaN as their key. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- Accessibility role checks treat <menu> like <ul> and <ol>. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- Hydration exits resolved async blocks on the correct node. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- Stores in each block expressions are detected regardless of AST shape. (5.50.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.50.0)
- Avoids generating erroneous async derived expressions for blocks. (5.49.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.2)
- Effects inside unskipped branches are rescheduled. (5.49.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.2)
- Avoids Cloudflare warnings about the missing node:crypto module. (5.49.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.2)
- Consecutive large text nodes are merged. (5.49.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.1)
- Multiline HTML blocks are properly separated from each other in print output. (5.49.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.1)
- Prevents unhandled exceptions arising from dangling promises in script blocks. (5.49.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.1)
- Async functions are created in SSR output only when necessary. (5.49.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.1)
- Effects inside skipped branches are reset. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- The introstart event fires after the specified delay. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- The outrostart event fires after the specified delay. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- Popover elements are disregarded when determining whether an element has content. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- Updating a reaction inside a fork now preserves its old dependencies. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- Signal versions are incremented when forks are discarded. (5.49.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.49.0)
- Fixes each blocks breaking when effects are interspersed among items. (5.48.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.5)
- Prevents unintended exports from namespaces. (5.48.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.5)
- Boundary onerror callbacks now run in a microtask in case they result in the boundary's destruction. (5.48.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.5)
- Avoids duplicating escaped characters in the CSS AST. (5.48.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.4)
- The warning now includes pointer and touch events. (5.48.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.3)
- Avoids unnecessary block effect re-runs after async work completes. (5.48.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.3)
- Fixes handling of false dynamic components during server-side rendering. (5.48.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.3)
- Fixes hydration failing with settled async blocks. (5.48.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.3)
- The wait function is now exported from the internal client index, making it available to importers of that index. (5.48.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.2)
- Resolution of async work is batched. (5.48.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.1)
- Code generation is improved for const tags with async dependencies. (5.48.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.1)
- Await expressions inside {@html} are hydrated properly. (5.48.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.1)
- Snippets are hoisted above const declarations in the same block, fixing their handling when declared after a const. (5.48.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.1)
- Handle non-string values in the this attribute. (5.48.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.48.0)
- Fixes triggering reactivity for selectedcontent. (5.47.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.47.1)
- Static elements are no longer reset when used with debug or snippets. (5.47.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.47.0)
- The subtree of a Svelte boundary is now marked as dynamic. (5.47.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.47.0)
- Hydratable keys are serialized using devalue.uneval. (5.46.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.4)
- Clean derived values reconnect when read in a reactive context. (5.46.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.3)
- Prevents an infinite loop when HMRing a component with an `await`. (5.46.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.1)
- The `currentTarget` type in the `on` function is fixed. (5.46.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.1)
- Static optimisation is skipped for stateless deriveds after `await`. (5.46.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.46.1)
- Fixes a race condition when importing AsyncLocalStorage. (5.45.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.10)
- Deferred effects are correctly rescheduled when a batch is revived after async work. (5.45.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.9)
- Correctly prints `!doctype` during print. (5.45.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.9)
- The AST root's end is set to `template.length`. (5.45.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.8)
- The AST root's start is set to 0. (5.45.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.8)
- Prevents erroneous `state_referenced_locally` warnings on prop fallbacks. (5.45.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.8)
- Prevents a crash when hydratable serialization fails. (5.45.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.7)
- Accepts off as a valid value for the textarea wrap attribute. (5.45.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.7)
- srcObject is now permitted as an attribute on <audio> and <video> elements. (5.45.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.6)
- Svelte no longer issues an accessibility warning for a <video> without captions when it has no src. (5.45.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.6)
- Blocks are now correctly reconciled after outroing branches are resumed. (5.45.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.5)
- Items are now destroyed after their siblings are resumed. (5.45.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.5)
- Allows `$props.id()` to occur after an `await`. (5.45.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.4)
- Keeps reactions up to date even when read outside of an effect. (5.45.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.4)
- Cross-realm Promises are now handled in hydratable. (5.45.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.3)
- Node locations are preserved to improve sourcemaps. (5.45.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.3)
- Fixes array destructuring after await. (5.45.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.2)
- Blockers are awaited before const declarations are initialized, preventing incorrect initialization behavior. (5.44.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.44.1)
- Generated code for simple destructurings is corrected. (5.44.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.44.1)
- Animations in each blocks no longer interfere with transitions. (5.44.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.44.1)
- Offscreen items and the last effect in each block are linked correctly. (5.44.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.45.1), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.44.1)
- Forked derived values are now stored. (5.43.15) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.15)
- Async blockers are now taken into account for bindings, transitions, animations, and attachments. (5.43.14) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.14)
- Named self-closing slots are now migrated correctly. (5.43.14) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.14)
- Derived values are no longer set during time traveling. (5.43.13) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.13)
- Maintains the correct linked list of effects when updating each blocks. (5.43.12) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.12)
- Transitions of elements that are already outroing are no longer canceled. (5.43.11) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.11)
- Prevents other batches from running while the main batch has queued root effects. (5.43.10) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.10)
- Functions are now handled correctly when determining async blockers. (5.43.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.9)
- Blockers are now taken into account when creating #await blocks. (5.43.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.9)
- Async @const in a boundary now hydrates correctly. (5.43.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.9)
- Async @const expressions in templates are now parallelized. (5.43.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.9)
- Deriveds remain reactive after their original parent effect is destroyed. (5.43.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.9)
- Eager effects no longer break the reactions chain. (5.43.9) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.9)
- Fixes each blocks losing reactivity when items are removed while a promise is pending. (5.43.8) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.8)
- Blockers of components are taken into account. (5.43.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.7)
- Deferred effects can be rescheduled later on. (5.43.7) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.7)
- Fixes batch deactivation so other batches are not deactivated. (5.43.6) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.6)
- Dependencies of async bindings are now awaited. (5.43.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.5)
- Async static props and attributes are now awaited. (5.43.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.5)
- Dependencies of style directives are now awaited. (5.43.5) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.5)
- Deriveds reconnect to the effect tree when time-travelling. (5.43.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.4)
- Symbols are preserved when creating derived rest properties. (5.43.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.3)
- The document title is deferred until async work is complete. (5.43.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.7), [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.3)
- Forks now always access the correct values. (5.43.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.3)
- Each blocks with async dependencies are treated as uncontrolled. (5.43.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.2)
- Fixes transformation of $bindable after await expressions. (5.43.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.1)
- Settles a batch after DOM updates. (5.43.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.43.0)
- Fixes batch restoration in #await. (5.42.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.42.3)
- Fixes handling of <svelte:head> when rendered asynchronously. (5.42.3) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.42.3)
- Error messages for global variable assignments are clearer. (5.42.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.42.2)
- Calling discard on a fork after commit is ignored. (5.42.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.42.1)
- Inspect errors now have less confusing names. (5.42.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.42.0)
- setContext is now always allowed before the first await in a component. (5.42.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.42.0)
- Pending changes are flushed after rendering a failed snippet. (5.41.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.4)
- Mounting snippets is coordinated with await expressions. (5.41.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.4)
- Static blocks are now taken into account when determining transition locality. (5.41.4) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.4)
- Batches stay alive until all async work is complete. (5.41.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.2)
- Guards such as if, each, and key run before their contents. (5.41.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.2)
- $inspect logs now come from the callsite. (5.41.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.2)
- Fixes declaration placement by placing let: declarations before {@const} declarations. (5.41.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.1)
- Improves the each_key_without_as error. (5.41.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.1)
- Reports an error when an `each` block has a `key` but no `as` clause. (5.41.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.0)
- Preserves `<select>` state while the element is focused. (5.41.0) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.41.0)
- Adds hydration markers in the pending branch of an SSR boundary. (5.40.2) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.40.2)
- The sync-in-async warning is removed for server rendering. (5.40.1) — [release notes](https://github.com/sveltejs/svelte/releases/tag/svelte%405.40.1)
