Last 7 days
1
Features: 0
Changes: 0
Fixes: 1
Deprecations: 0
Compiler-based framework for building concise and reactive web interfaces.
Latest Svelte changelog updates, official release notes, breaking changes, security patches, pricing changes, and developer reactions in one product feed.
Follow this Svelte release-notes page to spot useful features, risky migrations, noisy announcements, and source links before they hit your backlog.
Changes.Watch links back to official changelog and release-note sources so summaries stay easy to verify.
Use channels to follow groups of tools around a stack, workflow, or topic.
Rolling windows show how many product updates landed in the last 7, 30, 90, and 365 days, grouped by existing changelog semantics.
1
3
12
126
Fixed multiple CSS handling bugs, including escape sequences, custom property values, and namespace preservation
Fix skip controlled each fast path when another batch is pending
Fixed onerror handling and added a functional reset for failed hydration boundaries.
Added an indent option to the print function
Skip unnecessary blocker analysis during component compilation without top‑level await, improving performance.
Fixed numerous derived store and SSR transformation bugs, including proper handling of $state.eager(), declaration tags, and computed keys in keyed each blocks.
Fixed parsing and reactivity bugs: corrected {@const} end position handling, ensured reactivity context is unset after restoration, and stripped '?' from optional TypeScript script parameters for valid JavaScript output.
Ignore errors that occur in destroyed effects
Fixed effect end node tracking for async sibling components and prevented false positive reactivity loss warnings.
Fixed compile-time error on duplicate snippet/declaration tags and improved robust parsing of declaration tag contents, including whitespace and type handling.
Added support for declarations directly in Svelte templates.
Fixed multiple batch management bugs (unlinking, settling, merging, async @const blockers, component‑level effects) and improved async resolve handling and outro branch resumption.
Fix batch handling when awaiting promises and prevent false positive batch invariant errors
Fix handling of svelte:body and correct double printing of keyframe percentages.
Fixed XSS vulnerability in hydrateable content handling
Fixed multiple runtime bugs: stale promises now wait for later resolution, eager effects flush correctly in production, and obsolete async branches are aborted
Fixed derived store marking issue when an effect is updating.
Fixed child effect roots being incorrectly marked as inert
Fixed HMR updates for dynamic components.
Fix invalidation of @const tags based on visible references in legacy mode
Fix server‑side handling of bindings to prevent incorrect behavior.
Export TweenOptions, SpringOptions, SpringUpdateOptions, and Updater from svelte/motion.
Fix hydration comment handling during HMR
Added support for css, runes, and customElement compiler options as functions.
Fixed $inspect handling after top-level await to prevent build failures.
Fix select.value update on change
Fixed untrack circular dependency and added recovery from errors that corrupt the effect tree
Fixes batch processing when new root effects are scheduled
Fixes bind:this cleanup timing issue.
Fixed {@html} duplication in contenteditable elements and prevented access to inert block effects.
Fixed handling of Svelte meta after else‑if chains and preserved boundary errors for keyed each loops during async updates
Optimized parser hot paths and compiler analysis phase for faster compilation and more efficient effect scheduling
Escapes innerText and textContent bindings for contenteditable elements to prevent incorrect rendering.
Fix server context handling after async transformError
Fixed rendering of :catch in await blocks to use the correct key.
Fixed server-derived expression updates
Fix handling of shadowed function names
Added comment support in tags and enabled error‑boundary handling on the server.
Add support for TrustedHTML in {@html} expressions.
Ensure svelte:element tags are validated during SSR
Defer effects in pending boundaries proactively to improve rendering consistency
Fixed event delegation conflicts between multiple Svelte instances.
Fix handling of async functions in dev delegated event handlers
Fix crash when document.contentType is undefined
Added TrustedTypes support for HTML handling to improve security
Fix XHTML compliance: handle nodeName case sensitivity, lowercase HTML elements, and render "multiple"/"selected" attributes as empty strings
Fixed effect update depth error when using bind:value on <select> with derived state in legacy mode.
Render boolean attribute values as empty strings to ensure XHTML compliance
Added support for using createContext when instantiating components programmatically
Remove SvelteKit data‑attribute typings from elements.d.ts
Fix merging of consecutive large text nodes
Allow passing a ShadowRootInit object to the custom element shadow option
Run boundary onerror callbacks in a microtask to safely handle boundary destruction.
Fix duplication of escaped characters in the CSS AST.
Fix hydration failures with settled async blocks.
Fix export of the wait function from the internal client index
Fix hoisting of snippets above const declarations within the same block.
Exported `parseCss` from `svelte/compiler` for external use
Fix reactivity issue for selectedContent trigger.
Added customizable <select> elements.
Fix: use devalue.uneval to correctly serialize hydratable keys
Fixed reconnection of derived stores when read inside reactive contexts
Corrected type of `currentTarget` in the `on` function.
Added CSP option to the render function
Fix race condition occurring during import of AsyncLocalStorage
Fixed rescheduling of deferred effects when reviving a batch after async work.
Fix AST root start and end positions to correctly reflect the template length
Add support for <textarea wrap="off"> attribute
Fixed accessibility warning for <video> elements without src and captions
Fix correct reconciliation of each blocks after outroing branches are resumed
Move DOM effect properties to effect.nodes
Added support for locally referenced state props.
Fix array destructuring after await (issue #17254).
Fix offscreen link handling
Added a new `print(...)` utility function.
Fixed await blockers before component initialization
Introduces a new hydratable API for improved server‑side rendering hydration.
Fix eager execution of attachments and attribute effects
Fix migration of named self‑closing slots
Fix: avoid setting derived values during time traveling, preventing incorrect state updates.
Fix linked list handling of effects when updating each block
Improve performance by disabling overly eager tracing in development mode.
Fixed a bug where other batches could run while the main batch's root effects were queued.
Fixed async blocker detection, ensuring functions and await blocks respect blockers
Fixed loss of reactivity in each block when items are removed while a promise is pending
Defer document title updates until async work completes
Fixed issue where deactivating a batch also deactivated other batches
Fixed async static props/attributes to be properly awaited.
Simplify connection and disconnection logic
Fix: Fork now always accesses the correct values
Fixed treatment of blocks with async dependencies, now marking them as uncontrolled.
Fixed transformation of $bindable after await expressions
Introduced out-of-order rendering capability
Fixed handling of <svelte:head> when rendered asynchronously (issue #17052)
Improved error message for global variable assignments
Fix ignoring fork discard() after commit()
Add experimental fork API
Consider static blocks when determining transition locality
Exclude Vite‑optimized dependencies from stack traces to reduce noise
Keep batches alive until all async work finishes and ensure guards (if, each, key) run before their contents
Fix ordering of let: declarations relative to {@const} declarations
Added $state.eager(value) rune for eager state handling.
Fix hydration markers for pending SSR boundary.
Remove erroneous sync-in-async warning during server rendering
Added createContext utility for type‑safe context handling.
Add missing type definition for the `fr` attribute on SVG <radialGradient> elements.
Fix input cursor restoration for bind:value
Flush batches automatically when an async value resolves, ensuring UI updates occur promptly.
Fix hydration of each blocks inside elements
Fix flush behavior when pending boundaries resolve.
Fixed server‑side boundary pending attribute handling and allowed await in svelte:boundary without pending
Simplified batch processing logic.
Fixed derived store reads within async reactions to prevent stale values.
Fixed server rendering for {@html await ...} and async snippet content.
- Fixed restoration of hydration state after an await in <script> (issue #16806).
Fix removal of outer hydration markers
Fixed SSR context preservation when block expressions contain await.
Fixed warning emitted when unmounting a state proxy.
Add experimental asynchronous server-side rendering support.
Fixes flushing of effects scheduled during a boundary's pending phase
Fix component analysis for <object.property> syntax
Fixed $effect.pending count being sent to the correct boundary
Replace undefined with void(0) in CallExpressions to avoid unintended side‑effects.
Prevent failure when flushSync is invoked while flushing effects
Fixed async derived stores to correctly retrieve dependencies from thenable
- Fixed ordering of template effect values
Run blocks eagerly during flush to improve performance
Fix wrapping abort calls outside of reactive contexts
Added support for awaiting inside @const declarations.
Fix: Reset attribute cache after setting the related property
Fixed double event processing in Firefox caused by event objects being garbage collected.
Fixed support for await expressions inside {await ...} block arguments.
Added ability to ignore component options when using compileModule.
Throw error on duplicate class field declarations
Prevent focused input from being overwritten by its own historic values.
Fixes loss of dirty status for deferred effects.
Fixed input synchronization when bindings are updated via effect
Fix subscription detection in derived stores
Moved capture signals implementation to the legacy module.
Fixed issue where processing batches could become intertwined.
Prevent reexecution of derived stores without dependencies during component teardown
Fix: keep effect in the graph when it has an AbortController.
Fix intrinsic <svelte:...> elements to inherit from SvelteHTMLElements
Fix delegate functions with shadowed variables when declared locally
Silence $inspect errors that occur when an effect is about to be destroyed.
Avoid microtask in flushSync
Stop logging await reactivity loss warning when a signal is read inside untrack
Add $effect.pending() to Svelte's type definitions.
Fix: bound <input> elements are no longer updated when they are the source of the change.
Added support for using await in components when the experimental.async compiler option is enabled
Fix autofocus accessibility warning in <dialog>
Simplify reaction/source ownership tracking
Fixed association of sources in Spring, Tween, SvelteMap, and SvelteSet to use the correct reaction
Fix abort and reschedule of effect processing after a state change within user effects (issue 16280).
Fix mounting handling for select option in attribute effects.
Bumped esrap dependency to address issue #16295.
Add parent hierarchy to Svelte meta objects
Add new getAbortSignal() utility function (feat).
Fixes a bug where unowned derived stores couldn't add themselves as reactions while connected.
Fixed $inspect.with untracking and added a safety check for unsafe mutations.
Fix CSS class matching regression
Fixed class and style directives to correctly match attribute selectors
Updated handling of spread non‑delegated event handlers and removed undefined attributes during hydration
Fix proxy state setting within parent contexts
Stop eager execution of derived stores on resume
Add missing TypeScript typings for certain dimension bindings.
Correctly tag private class state fields
Add source name logging to $inspect.trace for better traceability.
Fix reset flushing when flushSync is called without a scheduled effect
Update esrap dependency to latest version
Updated Acorn parser ecmaVersion to enable parsing of import attributes
Fixed visit expression handling when destructuring state declarations.
Fix parent boundary invocation for derived stores that throw errors (issue #16091)
Reverted the "enable TS autocomplete for Svelte HTML element definitions" feature (issue 16063).
Fix recursion error in the EachBlock visitor to prevent crashes
Fixed correct transformation of reassigned class fields in SSR mode
Fixes handling of transitive dependencies inside each blocks when operating in legacy mode.
Fix transition flicker by applying fill:'forwards' to animations.
Fix: Correct handling of expressions in Svelte effects, ensuring they are only treated as dynamic when not known to be static.
Fixes issue where only the select option is selected when 'value' exists in the next array.
Fixed bind:value on select elements when used with stores
Fix handling of falsy attachments on components
Fix handling of derived destructured iterators.
Fixed defaultChecked handling to correctly coerce values to boolean.
Fixed TypeScript support in customElement.extend option.
Fixed parsing of escaped Unicode characters in CSS selectors.
Fixes server-side derived stores to be lazy again
Added XHTML compliance support
Simplify <pre> cleaning logic.
Warn when an invalid value is supplied to a <select multiple> element
Fix event listeners are properly removed in Component's removeEventListener method.
Added warnings for implicitly closed tags.
Fixes auto-parentheses insertion for special MediaQuery keywords
Added support for declaring state fields inside class constructors.
Fix falsy attachment types handling
Add typeParams to SnippetBlock for legacy parser
Added support for generics in snippets, enabling type-parameterized snippet definitions.
Add attachment support (PR #15000).
Fix removal of unnecessary CSP privilege guards when deleting event attributes
Fixed ownership validator mutation array by using transform.read.
Fix proxify of value in assignment shorthands for private fields
Fix handling of nullish expressions by treating them as empty strings.
Avoid unnecessary microtasks when flushing synchronously.
Fixes false positive unused warnings for selector lists inside :global with multiple items.
Fixed <svelte:boundary> to correctly remove error content in production.
Partially evaluates additional expressions, improving compile‑time optimizations.
Fix server output snippets by using a function declaration, eliminating Temporal Dead Zone (TDZ) violations.
Switch to pkg.imports for loading common modules
Add default parameters for HTML blocks.
Adds partial evaluation of certain expressions
Fixed server validation of head snippets
Fix validation of undefined snippet parameters when a default value is provided.
Fixed incorrect state reference message in local updates
Added `css.hasGlobal` flag to compile output.
Improve internal set versioning mechanism
Fixed hydration mismatches in await blocks
Set derived stores to CLEAN state when assigned
Allow $.state and $.derived to be tree‑shaken
Fix memory leak caused by untracked writes.
Fix ensures clearing of old values occurs independently of root flushes.
Fix ignored generic type arguments when generating the AST.
Add setters to $derived class properties
Fix support for TypeScript type assertions (issue #15642)
Fix: Prevent state runes from being called with spread syntax (issue #15585).
Add support for migrating reassigned derived stores to the new `$derived` syntax
Fixed dev server error when retrieving the proxied value of an iframe's contentWindow.
Added writable capability to derived stores (feat #15570).
Fix constructor to use get for derived stores.
Allow state created in deriveds/effects to be read/written locally without causing self‑invalidation
Fixes hoisting of listeners that access non‑hoistable snippets, preventing runtime errors.
Fix effect invalidation when child effects update parent dependencies.
Fix inconsistency between effect return values and their cleanup functions
Skip logging when the state contains only literals
Memoize clsx calls to improve performance.
Fixed a bug where expressions in Svelte templates were incorrectly deduplicated.
Corrected effect root scheduling to follow component tree order.
Fixes incorrect setting of the 'is updating' flag before flushing root effects.
Switches the Acorn TypeScript plugin used for parsing
Add an `idPrefix` option to the render function for custom ID prefixes
Chore: Reduce hydration comment for {:else if} blocks.
Fixed handling of double hyphen CSS selector names.
Updated TypeScript types for flushSync.
Allow @const inside object keys
Removed unused `options.uid` from render logic.
Fix AST analysis on svelte.js modules to succeed
Introduced SSR‑safe ID generation using `$props.id()`.
Fixed reconnection of unowned derived stores by removing their unowned flag.
Fix duplicate unowned derived dependencies when reactions are skipped.
Fix proper setting of the value property on custom elements.
Remove unused code from signal logic
Fixed pruning of complex selectors like :global(.foo):has(.scoped) and prevented errors with slot props inside nested blocks/components.
Improve derived connection to ownership graph
Add bind:focused property to HTMLAttributes type
Fixed crashes caused by undefined non-delegated event handlers and ensured value defaults to an empty string when the value attribute is undefined.
Fix regression with untrack behavior introduced in recent version
Removed unnecessary nullish coalescing in template expressions.
Expose ClassValue from svelte/elements for easier class handling.
Allow <template> elements to contain any child nodes (new feature)
Allow using const tag inside svelte:boundary
Avoid treating inert boundary effects as active.
Reset dependency read versions after reaction execution.
Account for parent scale when animating elements
Removed validation for bindable props
Added support for tweening non‑numeric values by snapping immediately to the new value.
Tween animations with a duration of 0 now set the current value to the target immediately.
Fix inheritance of correct namespace for <title> elements
Fixed internal usage of a cached array prototype indexOf method.
Fixed parsing of 'each' blocks using the loose parser.
Fixes re-connection of previously disconnected derived stores.
Fix unowned derived stores to correctly re-link to the graph
Allow class attribute to accept object or array using clsx.
Introduce a "worker" exports condition to the package.
Fix treeshaking of unused $inspect.trace code in modules
Updated esrap dependency to latest version.
Fix removal of `implements` clauses from class declarations (issue 14749)
Update esrap dependency to prevent malformed AST generation
Fix correctly highlights first rerun of $inspect.trace
Fix performance regression in unowned derived stores.
Adds new $inspect.trace rune for enhanced debugging
Added an outro option to unmount components
Expose additional AST types from svelte/compiler
Fixed handling of unquoted slash characters in attributes
Fix SSR handling for reactivity and window objects.
Fix handling of global block in `isEmpty` check (issue #14677)
Added svelte/reactivity/window module.
Fixed snippet hoisting scope, $state.snapshot cloning of holey arrays, and restored input binding selection position.
Added documentation links for errors and warnings.
Fixes dynamic marking of subtree for bind when using sequence expressions
Added support for binding getters/setters in components.
Restores the missing `prefersReducedMotion` export
Add Spring class to svelte/motion
Fix: bindings now always take precedence over spread attributes (issue #14575).
Added createSubscriber function for creating reactive values dependent on subscriptions.
Improved tree‑shaking for `if` blocks
Fixed handling of static form values when used with default values.
Add support for defaultValue and defaultChecked properties on input elements
Improved error messages for invalid HTML trees
Prevent adding owners to non-$state class fields
Fixed incorrect reaction when lazily creating derived stores inside SvelteDate.
Allow snippets to be exported from module scripts (feat)
Add support for the each block without requiring the 'as' keyword.
Fix CSS pruning for elements inside snippets