Svelte

Frameworks & Libraries

Cybernetically enhanced web apps.

Latest 5.56.8 · by SvelteWebsitesveltejs/svelte

Release activity

Release activity — 100 releases across 79 days since Oct 18, 2025. Each cell is one day; darker means more releases that day. Nothing is recorded before Oct 18, 2025. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 19, 2026No releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 20261 release on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
MondayNo releases on Apr 20, 2026No releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 20261 release on May 18, 2026No releases on May 25, 20261 release on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 20261 release on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
TuesdayNo releases on Apr 21, 2026No releases on Apr 28, 2026No releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 20261 release on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 20261 release on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
WednesdayNo releases on Apr 22, 2026No releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 20261 release on May 20, 20261 release on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
Thursday1 release on Apr 23, 2026No releases on Apr 30, 2026No releases on May 7, 20262 releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 20261 release on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 20261 release on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on Apr 24, 2026No releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 20261 release on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 20261 release on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on Apr 25, 2026No releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

100 releases since Oct 18, 2025, busiest day 4

Changelog

5.56.8

Fixed 2
  • Call `onerror` and provide a working `reset` when hydrating a failed boundary
  • Preserve select selection when spread attributes omit value
Patch Changes
  • fix: call onerror and provide a working reset when hydrating a failed boundary (#18556)

  • fix: preserve select selection when spread attributes omit value (#18561)

View originalPermalink
How 5.56.8 went

5.56.7

Added 1
  • Provide `indent` option for `print`
Patch Changes
  • chore: provide indent option for print (#18474)
View originalPermalink
How 5.56.7 went

5.56.6

Changed 1
  • skip unnecessary blocker analysis when compiling components without top-level await
Fixed 1
  • rerun derived that had an abort controller on reconnection
Patch Changes
  • perf: skip unnecessary blocker analysis when compiling components without top-level await (#18548)

  • fix: rerun derived that had an abort controller on reconnection (#18551)

View originalPermalink
How 5.56.6 went

5.56.5

Fixed 10
  • Don't (re)connect deriveds when read inside branch/root effects
  • Skip unnecessary derived effect in earlier batch
  • Avoid declaration tag warning in event handlers
  • Abort deriveds own AbortSignal when it disconnects
  • Ensure $state.eager() is correctly transformed for SSR output
  • Correctly transform declaration tags during SSR
Patch Changes
  • chore: drop dead code that make TSGO fail (#18496)

  • fix: don't (re)connect deriveds when read inside branch/root effects (#18527)

  • fix: skip unnecessary derived effect in earlier batch (#18525)

  • fix: avoid declaration tag warning in event handlers (#18500)

  • fix: abort deriveds own AbortSignal when it disconnects (#18400)

  • fix: ensure $state.eager() is correctly transormed for SSR output (#18530)

  • fix: correctly transform declaration tags during SSR (#18492)

  • fix: transform computed keys in keyed {#each} destructuring patterns (#18521)

  • fix: chain preprocessor sourcemaps with an empty sources[0] instead of dropping them (#18518)

  • fix: clear previous_task reference after abort in Tween to prevent memory leak on interrupted tweens (#18541)

  • fix: don't treat declaration tags as parts inside each blocks (#18507)

View originalPermalink
How 5.56.5 went

5.56.4

Fixed 4
  • Include wrapping parentheses in {@const} declarator end position
  • Always unset reactivity context after restoring it
  • Don't notify searchParams subscribers when the URL changes without affecting the search string
  • Strip ? from optional parameters in <script lang="ts"> so generated JavaScript is valid
Patch Changes
  • fix: include wrapping parentheses in {@const} declarator end position (#18436)

  • fix: always unset reactivity context after restoring it (#18453)

  • fix: don't notify searchParams subscribers when the URL changes without affecting the search string (#18425)

  • fix: strip ? from optional parameters in <script lang="ts"> so generated JavaScript is valid (#18448)

View originalPermalink
How 5.56.4 went

5.56.3

Fixed 2
  • Ignore errors that occur in destroyed effects
  • Type BigInts in $state.snapshot(...) return values
Patch Changes
  • fix: ignore errors that occur in destroyed effects (#18384)

  • fix: type BigInts in $state.snapshot(...) return values (#18388)

View originalPermalink
How 5.56.3 went

5.56.2

Fixed 4
  • Properly track effect end node for async sibling component
  • Prevent false-positive reactivity loss warning
  • Ignore declaration tags for animation directive
  • Reject pending async deriveds on discard
Patch Changes
  • fix: properly track effect end node for async sibling component (#18371)

  • fix: prevent false-positive reactivity loss warning (#18373)

  • chore: bump esrap dependency (#18372)

  • fix: ignore declaration tags for animation directive (#18366)

  • fix: reject pending async deriveds on discard (#18308)

View originalPermalink
How 5.56.2 went

5.56.1

Fixed 10
  • Error at compile time on duplicate snippet/declaration tag definitions
  • Parse declaration tag contents more robustly
  • Correctly transform references to earlier declarators in a declaration tag
  • Avoid spurious state_referenced_locally warnings for $derived declarations in declaration tags
  • Tolerate whitespace before let/const in declaration tags
  • Prevent infinite loop when a tag's expression ends with a trailing / at the end of the input
Patch Changes
  • fix: error at compile time on duplicate snippet/declaration tag definitions (#18351)

  • fix: parse declaration tag contents more robustly (#18353)

  • fix: correctly transform references to earlier declarators in a declaration tag (e.g. {let a = $state(0), b = $derived(a * 2)}) (#18348)

  • fix: avoid spurious state_referenced_locally warnings for $derived declarations in declaration tags (#18348)

  • fix: tolerate whitespace before let/const in declaration tags (#18348)

  • fix: prevent infinite loop when a tag's expression ends with a trailing / at the end of the input (#18350)

  • fix: more robust parsing of declaration tags with regards to type (#18330)

  • fix: preserve newlines in spread input values when the type attribute is applied after value (#18345)

  • fix: update SvelteURLSearchParams when setting duplicate keys to the same joined value (#18336)

  • fix: check references for blockers on server, too (#18352)

View originalPermalink
How 5.56.1 went

5.56.0

Added 1
  • Allow declarations in the template
Changed 4
  • Use createElement instead of createElementNS for HTML elements
  • Store current_sources as a Set for O(1) membership checks
  • Deduplicate identical hoisted templates within a component
  • Hoist rest_props exclude list as a module-scope Set
Minor Changes
  • feat: allow declarations in the template (#18282)
Patch Changes
  • perf: use createElement instead of createElementNS for HTML elements (#18262)

  • perf: store current_sources as a Set for O(1) membership checks (#18278)

  • perf: deduplicate identical hoisted templates within a component (#18320)

  • perf: hoist rest_props exclude list as a module-scope Set (#18252)

View originalPermalink
How 5.56.0 went

5.55.10

Changed 2
  • Walk composedPath() directly in delegated event propagation for improved performance
  • Add tag name to a11y_click_events_have_key_events warning
Fixed 13
  • Unlink errored and otherwise finished batch
  • Transfer effects when merging batches
  • Allow $derived(await ...) in disconnected effect roots
  • Remove temporary raw-text hydration markers
  • Propagate async @const blockers through closure references so template expressions like {(() => host)()} correctly wait for the awaited value
  • Properly unlink batches
Patch Changes
  • fix: unlink errored and otherwise finished batch (#18264)

  • perf: walk composedPath() directly in delegated event propagation (#18268)

  • fix: transfer effects when merging batches (#18254)

  • fix: allow $derived(await ...) in disconnected effect roots (#18273)

  • fix: remove temporary raw-text hydration markers (#18269)

  • fix: propagate async @const blockers through closure references so template expressions like {(() => host)()} correctly wait for the awaited value (#18309)

  • fix: properly unlink batches (#18298)

  • fix: settle discarded batch (#18290)

  • fix: declare let: directives before {@const} declarations on slotted elements (#18271)

  • fix: resume outro-ed branches if they were kept around (#18291)

  • fix: avoid waterfall-warning when async resolves to same value (#18297)

  • fix: correctly coordinate component-level effects inside async blocks (#18260)

  • fix: make unnecessary commit work less likely (#18263)

  • chore: add tag name to a11y_click_events_have_key_events warning (#18272)

  • fix: catch rejected promises while merging/committing (#18266)

View originalPermalink
How 5.55.10 went

5.55.9

Fixed 5
  • Don't unset batch when calling {#await ...} promise
  • Promise-ify {#await await ...} expressions on the server and correctly hydrate them on the client
  • Deduplicate dependencies that are added outside the init/update cycle
  • Avoid false-positive batch invariant error
  • Inline primitive constants in attribute values during SSR
Patch Changes
  • fix: don't unset batch when calling {#await ...} promise (#18243)

  • fix: promise-ify {#await await ...} expressions on the server and correctly hydrate them on the client (#18243)

  • fix: deduplicate dependencies that are added outside the init/update cycle (#18243)

  • fix: avoid false-positive batch invariant error (#18246)

  • fix: inline primitive constants in attribute values during SSR (#18232)

View originalPermalink
How 5.55.9 went

5.55.8

Fixed 5
  • Handle svelte:body and fix keyframe percentage double-printing
  • Execute uninitialized derived even if it's destroyed
  • Use named symbols everywhere
  • Don't run teardown effects when deriveds are unfreezed
  • Unset context synchronously in run
Patch Changes
  • fix(print): handle svelte:body and fix keyframe percentage double-printing (#18234)

  • fix: execute uninitialized derived even if it's destroyed (#18228)

  • fix: use named symbols everywhere (#18238)

  • fix: don't run teardown effects when deriveds are unfreezed (#18227)

  • fix: unset context synchronously in run (#18236)

View originalPermalink
How 5.55.8 went

5.55.7

Fixed 1
  • Move Svelte runtime properties to symbols
Security 3
  • Prevent XSS on hydratable from user contents
  • Disallow empty attribute names during SSR
  • Harden regex
Patch Changes
View originalPermalink
How 5.55.7 went

5.55.6

Changed 1
  • Allow null for pending in typings
Fixed 18
  • Leave stale promises to wait for a later resolution, instead of rejecting
  • Keep dependencies of $state.eager/pending
  • Reapply context after transforming error during SSR
  • Don't rebase just-created batches
  • Flush eager effects in production
  • Rethrow error of failed iterable after calling return()
Patch Changes
  • fix: leave stale promises to wait for a later resolution, instead of rejecting (#18180)

  • fix: keep dependencies of $state.eager/pending (#18218)

  • fix: reapply context after transforming error during SSR (#18099)

  • fix: don't rebase just-created batches (#18117)

  • chore: allow null for pending in typings (#18201)

  • fix: flush eager effects in production (#18107)

  • fix: rethrow error of failed iterable after calling return() (#18169)

  • fix: account for proxified instance when updating bind:this (#18147)

  • fix: ensure scheduled batch is flushed if not obsolete (#18131)

  • fix: resolve stale deriveds with latest value (#18167)

  • chore: remove unnecessary increment_pending calls (#18183)

  • fix: correctly compile component member expressions for SSR (#18192)

  • fix: reset source.updated stack traces after flush (#18196)

  • fix: replacing async 'blocking' strategy with 'merging' (#18205)

  • fix: allow @debug tags to reference awaited variables (#18138)

  • fix: re-run fallback props if dependencies update (#18146)

  • fix: abort running obsolete async branches (#18118)

  • fix: ignore comments when reading CSS values (#18153)

  • fix: wrap Promise.all in save during SSR (#18178)

  • fix: ignore false-positive errors of $inspect dependencies (#18106)

View originalPermalink
How 5.55.6 went

5.55.5

Fixed 2
  • don't mark deriveds while an effect is updating
  • do not dispatch introstart event with animation of animate directive
Patch Changes
  • fix: don't mark deriveds while an effect is updating (#18124)

  • fix: do not dispatch introstart event with animation of animate directive (#18122)

View originalPermalink
How 5.55.5 went

5.55.4

Fixed 3
  • Never mark a child effect root as inert
  • Reset context after waiting on blockers of @const expressions
  • Keep flushing new eager effects
Patch Changes
  • fix: never mark a child effect root as inert (#18111)

  • fix: reset context after waiting on blockers of @const expressions (#18100)

  • fix: keep flushing new eager effects (#18102)

View originalPermalink
How 5.55.4 went

5.55.3

Fixed 5
  • ensure proper HMR updates for dynamic components
  • correctly calculate @const blockers
  • freeze deriveds once their containing effects are destroyed
  • defer error boundary rendering in forks
  • avoid false positives for reactivity loss warning
Patch Changes
  • fix: ensure proper HMR updates for dynamic components (#18079)

  • fix: correctly calculate @const blockers (#18039)

  • fix: freeze deriveds once their containing effects are destroyed (#17921)

  • fix: defer error boundary rendering in forks (#18076)

  • fix: avoid false positives for reactivity loss warning (#18088)

View originalPermalink
How 5.55.3 went

5.55.2

Fixed 9
  • Invalidate @const tags based on visible references in legacy mode
  • Handle parens in template expressions more robustly
  • Disallow -- in idPrefix
  • Correct types for ontoggle on <details> elements
  • Don't override $destroy/set/on instance methods in dev mode
  • Unskip branches of earlier batches after commit
Patch Changes
  • fix: invalidate @const tags based on visible references in legacy mode (#18041)

  • fix: handle parens in template expressions more robustly (#18075)

  • fix: disallow -- in idPrefix (#18038)

  • fix: correct types for ontoggle on <details> elements (#18063)

  • fix: don't override $destroy/set/on instance methods in dev mode (#18034)

  • fix: unskip branches of earlier batches after commit (#18048)

  • fix: never set derived.v inside fork (#18037)

  • fix: skip rebase logic in non-async mode (#18040)

  • fix: don't reset status of uninitialized deriveds (#18054)

View originalPermalink
How 5.55.2 went

5.55.1

Fixed 5
  • correctly handle bindings on the server
  • prevent hydration error on async {@html ...}
  • cleanup superTypeParameters in ClassDeclarations/ClassExpression
  • improve duplicate module import error message
  • reschedule new effects in prior batches
Patch Changes
  • fix: correctly handle bindings on the server (#18009)

  • fix: prevent hydration error on async {@html ...} (#17999)

  • fix: cleanup superTypeParameters in ClassDeclarations/ClassExpression (#18015)

  • fix: improve duplicate module import error message (#18016)

  • fix: reschedule new effects in prior batches (#18021)

View originalPermalink
How 5.55.1 went

5.55.0

Added 1
  • Export TweenOptions, SpringOptions, SpringUpdateOptions and Updater from svelte/motion
Fixed 1
  • Ensure HMR wrapper forwards correct start/end nodes to active effect
Minor Changes
  • feat: export TweenOptions, SpringOptions, SpringUpdateOptions and Updater from svelte/motion (#17967)
Patch Changes
  • fix: ensure HMR wrapper forwards correct start/end nodes to active effect (#17985)
View originalPermalink
How 5.55.0 went

5.54.1

Fixed 6
  • hydration comments during hmr
  • null out effect.b in destroy_effect
  • group sync statements
  • defer batch resolution until earlier intersecting batches have committed
  • properly invoke iterator.return() during reactivity loss check
  • remove trailing semicolon from {@const} tag printer
Patch Changes
  • fix: hydration comments during hmr (#17975)

  • fix: null out effect.b in destroy_effect (#17980)

  • fix: group sync statements (#17977)

  • fix: defer batch resolution until earlier intersecting batches have committed (#17162)

  • fix: properly invoke iterator.return() during reactivity loss check (#17966)

  • fix: remove trailing semicolon from {@const} tag printer (#17962)

View originalPermalink
How 5.54.1 went

5.54.0

Added 1
  • Allow `css`, `runes`, `customElement` compiler options to be functions
Fixed 1
  • Reinstate reactivity loss tracking
Minor Changes
  • feat: allow css, runes, customElement compiler options to be functions (#17951)
Patch Changes
  • fix: reinstate reactivity loss tracking (#17801)
View originalPermalink
How 5.54.0 went

5.53.13

Fixed 6
  • Ensure $inspect after top level await doesn't break builds
  • Resume inert effects when they come from offscreen
  • Don't eagerly access not-yet-initialized functions in template
  • Discard batches made obsolete by commit
  • Ensure 'is standalone child' is correctly reset
  • Remove nodes in boundary when work is pending and HMR is active
Patch Changes
  • fix: ensure $inspect after top level await doesn't break builds (#17943)

  • fix: resume inert effects when they come from offscreen (#17942)

  • fix: don't eagerly access not-yet-initialized functions in template (#17938)

  • fix: discard batches made obsolete by commit (#17934)

  • fix: ensure "is standalone child" is correctly reset (#17944)

  • fix: remove nodes in boundary when work is pending and HMR is active (#17932)

View originalPermalink
How 5.53.13 went

5.53.12

Added 1
  • add `invariant` helper for debugging
Fixed 4
  • update `select.__value` on `change` event
  • ensure derived values are correct across batches
  • handle async RHS in `assignment_value_stale`
  • avoid traversing clean roots
Patch Changes
  • fix: update select.__value on change (#17745)

  • chore: add invariant helper for debugging (#17929)

  • fix: ensure deriveds values are correct across batches (#17917)

  • fix: handle async RHS in assignment_value_stale (#17925)

  • fix: avoid traversing clean roots (#17928)

View originalPermalink
How 5.53.12 went

5.53.11

Changed 1
  • Rebase batches after process, not during
Fixed 4
  • Remove untrack circular dependency
  • Recover from errors that leave a corrupted effect tree
  • Properly lazily evaluate RHS when checking for assignment_value_stale
  • Resolve boundary in correct batch when hydrating
Patch Changes
  • fix: remove untrack circular dependency (#17910)

  • fix: recover from errors that leave a corrupted effect tree (#17888)

  • fix: properly lazily evaluate RHS when checking for assignment_value_stale (#17906)

  • fix: resolve boundary in correct batch when hydrating (#17914)

  • chore: rebase batches after process, not during (#17900)

View originalPermalink
How 5.53.11 went

5.53.10

Fixed 1
  • Re-process batch if new root effects were scheduled
Patch Changes
  • fix: re-process batch if new root effects were scheduled (#17895)
View originalPermalink
How 5.53.10 went

5.53.9

Fixed 1
  • better bind:this cleanup timing
Patch Changes
  • fix: better bind:this cleanup timing (#17885)
View originalPermalink
How 5.53.9 went

5.53.8

Changed 1
  • avoid re-traversing the effect tree after $: assignments
Fixed 3
  • {@html} no longer duplicates content inside contenteditable elements
  • don't access inert block effects
  • handle async updates within pending boundary
Patch Changes
  • fix: {@html} no longer duplicates content inside contenteditable elements (#17853)

  • fix: don't access inert block effects (#17882)

  • fix: handle asnyc updates within pending boundary (#17873)

  • perf: avoid re-traversing the effect tree after $: assignments (#17848)

  • chore: simplify scheduling logic (#17805)

View originalPermalink
How 5.53.8 went

5.53.7

Changed 3
  • Cache element interactivity and source line splitting in compiler
  • Optimize CSS selector pruning
  • Avoid O(n²) name scanning in scope generate and unique
Fixed 3
  • Correctly add __svelte_meta after else-if chains
  • Preserve original boundary errors when keyed each rows are removed during async updates
  • Preserve each items that are needed by pending batches
Patch Changes
  • fix: correctly add __svelte_meta after else-if chains (#17830)

  • perf: cache element interactivity and source line splitting in compiler (#17839)

  • chore: avoid rescheduling effects during branch commit (#17837)

  • perf: optimize CSS selector pruning (#17846)

  • fix: preserve original boundary errors when keyed each rows are removed during async updates (#17843)

  • perf: avoid O(n²) name scanning in scope generate and unique (#17844)

  • fix: preserve each items that are needed by pending batches (#17819)

View originalPermalink
How 5.53.7 went

5.53.6

Changed 4
  • Optimize parser hot paths for faster compilation
  • More efficient effect scheduling
  • Optimize compiler analysis phase
  • Null out current_batch before committing branches
Fixed 5
  • SvelteMap incorrectly handles keys with undefined values
  • SvelteURL search setter now returns the normalized value, matching native URL behavior
  • Visit synthetic value node during ssr
  • Always case insensitive event handlers during ssr
  • Skip redundant batch.apply
Patch Changes
  • perf: optimize parser hot paths for faster compilation (#17811)

  • fix: SvelteMap incorrectly handles keys with undefined values (#17826)

  • fix: SvelteURL search setter now returns the normalized value, matching native URL behavior (#17828)

  • fix: visit synthetic value node during ssr (#17824)

  • fix: always case insensitive event handlers during ssr (#17822)

  • chore: more efficient effect scheduling (#17808)

  • perf: optimize compiler analysis phase (#17823)

  • fix: skip redundant batch.apply (#17816)

  • chore: null out current_batch before committing branches (#17809)

View originalPermalink
How 5.53.6 went

5.53.4

Fixed 4
  • Set server context after async transformError
  • Hydrate if blocks correctly
  • Handle default parameters scope leaks
  • Prevent flushed effects from running again
Patch Changes
  • fix: set server context after async transformError (#17799)

  • fix: hydrate if blocks correctly (#17784)

  • fix: handle default parameters scope leaks (#17788)

  • fix: prevent flushed effects from running again (#17787)

View originalPermalink
How 5.53.4 went

5.53.3

Fixed 2
  • Render `:catch` of `#await` block with correct key
  • Make string coercion consistent to `toString`
Patch Changes
  • fix: render :catch of #await block with correct key (#17769)

  • chore: pin aria-query@5.3.1 (#17772)

  • fix: make string coercion consistent to toString (#17774)

View originalPermalink
How 5.53.3 went

5.53.2

Fixed 2
  • Update expressions on server deriveds
  • Further obfuscate node:crypto import from overzealous static analysis
Patch Changes
  • fix: update expressions on server deriveds (#17767)

  • fix: further obfuscate node:crypto import from overzealous static analysis (#17763)

View originalPermalink
How 5.53.2 went

5.53.1

Fixed 1
  • Handle shadowed function names correctly
Patch Changes
  • fix: handle shadowed function names correctly (#17753)
View originalPermalink
How 5.53.1 went

5.53.0

Added 2
  • Allow comments in tags
  • Allow error boundaries to work on the server
Fixed 2
  • Use TrustedHTML to test for customizable select support, where necessary
  • Ensure head effects are kept in the effect tree
Minor Changes
  • feat: allow comments in tags (#17671)

  • feat: allow error boundaries to work on the server (#17672)

Patch Changes
  • fix: use TrustedHTML to test for customizable support, where necessary (#17743)

  • fix: ensure head effects are kept in the effect tree (#17746)

  • chore: deactivate current_batch by default in unset_context (#17738)

View originalPermalink
How 5.53.0 went

5.52.0

Added 1
  • Support TrustedHTML in {@html} expressions
Fixed 2
  • Repair dynamic component truthy/falsy hydration mismatches
  • Re-run non-render-bound deriveds on the server
Minor Changes
  • feat: support TrustedHTML in {@html} expressions (#17701)
Patch Changes
  • fix: repair dynamic component truthy/falsy hydration mismatches (#17737)

  • fix: re-run non-render-bound deriveds on the server (#17674)

View originalPermalink
How 5.52.0 went

5.51.5

Changed 1
  • Upgrade devalue
Fixed 5
  • Check to make sure svelte:element tags are valid during SSR
  • Misc option escaping and backwards compatibility
  • Strip event handlers during SSR
  • Replace usage of for in with for of Object.keys
  • Always escape option body in SSR
Patch Changes
View originalPermalink
How 5.51.5 went

5.51.4

Fixed 1
  • Detect and error on non-idempotent each block keys in dev mode
Patch Changes
  • chore: proactively defer effects in pending boundary (#17734)

  • fix: detect and error on non-idempotent each block keys in dev mode (#17732)

View originalPermalink
How 5.51.4 went

5.51.3

Fixed 4
  • prevent event delegation logic conflicting between svelte instances
  • treat CSS attribute selectors as case-insensitive for HTML enumerated attributes
  • locate Rollup annotation friendly to JS downgraders
  • run effects in pending snippets
Patch Changes
  • fix: prevent event delegation logic conflicting between svelte instances (#17728)

  • fix: treat CSS attribute selectors as case-insensitive for HTML enumerated attributes (#17712)

  • fix: locate Rollup annontaion friendly to JS downgraders (#17724)

  • fix: run effects in pending snippets (#17719)

View originalPermalink
How 5.51.3 went

5.51.2

Fixed 2
  • Take async into consideration for dev delegated handlers
  • Emit state_referenced_locally warning for non-destructured props
Patch Changes
  • fix: take async into consideration for dev delegated handlers (#17710)

  • fix: emit state_referenced_locally warning for non-destructured props (#17708)

View originalPermalink
How 5.51.2 went

5.51.1

Fixed 2
  • don't crash on undefined document.contentType
  • use symbols for encapsulated event delegation
Patch Changes
  • fix: don't crash on undefined document.contentType (#17707)

  • fix: use symbols for encapsulated event delegation (#17703)

View originalPermalink
How 5.51.1 went

5.51.0

Added 1
  • Use TrustedTypes for HTML handling where supported
Fixed 3
  • Sanitize template-literal-special-characters in SSR attribute values
  • Follow-up formatting in print() — flush block-level elements into separate sequences
  • Preserve delegated event handlers as long as one or more root components are using them
Minor Changes
  • feat: Use TrustedTypes for HTML handling where supported (#16271)
Patch Changes
  • fix: sanitize template-literal-special-characters in SSR attribute values (#17692)

  • fix: follow-up formatting in print() — flush block-level elements into separate sequences (#17699)

  • fix: preserve delegated event handlers as long as one or more root components are using them (#17695)

View originalPermalink
How 5.51.0 went

5.50.3

Fixed 5
  • Take into account nodeName case sensitivity on XHTML pages
  • Render multiple and selected attributes as empty strings for XHTML compliance
  • Always lowercase HTML elements for XHTML compliance
  • Freeze effects-inside-deriveds when disconnecting, unfreeze on reconnect
  • Propagate $effect errors to <svelte:boundary>
Patch Changes
  • fix: take into account nodeName case sensitivity on XHTML pages (#17689)

  • fix: render multiple and selected attributes as empty strings for XHTML compliance (#17689)

  • fix: always lowercase HTML elements, for XHTML compliance (#17664)

  • fix: freeze effects-inside-deriveds when disconnecting, unfreeze on reconnect (#17682)

  • fix: propagate $effect errors to <svelte:boundary> (#17684)

View originalPermalink
How 5.50.3 went

5.50.2

Changed 1
  • Provide proper public type for parseCss result
Fixed 4
  • Resolve effect_update_depth_exceeded when using bind:value on <select> with derived state in legacy mode
  • Don't swallow DOMException when media.play() fails in bind:paused
  • Robustify blocker calculation
  • Reduce if block nesting
Patch Changes
  • fix: resolve effect_update_depth_exceeded when using bind:value on <select> with derived state in legacy mode (#17645)

  • fix: don't swallow DOMException when media.play() fails in bind:paused (#17656)

  • chore: provide proper public type for parseCss result (#17654)

  • fix: robustify blocker calculation (#17676)

  • fix: reduce if block nesting (#17662)

View originalPermalink
How 5.50.2 went

5.50.1

Fixed 2
  • Render boolean attribute values as empty strings for XHTML compliance
  • Prevent async render tag hydration mismatches
Patch Changes
  • fix: render boolean attribute values as empty strings for XHTML compliance (#17648)

  • fix: prevent async render tag hydration mismatches (#17652)

View originalPermalink
How 5.50.1 went

5.50.0

Added 1
  • Allow use of createContext when instantiating components programmatically
Fixed 8
  • Ensure infinite effect loops are cleared after flushing
  • Allow {#key NaN}
  • Detect store in each block expression regardless of AST shape
  • Treat <menu> like <ul>/<ol> for a11y role checks
  • Add vite-ignore comment inside dynamic crypto import
  • Properly hydrate already-resolved async blocks
  • Emit each_key_duplicate error in production
  • Exit resolved async blocks on correct node when hydrating
Minor Changes
  • feat: allow use of createContext when instantiating components programmatically (#17575)
Patch Changes
  • fix: ensure infinite effect loops are cleared after flushing (#17601)

  • fix: allow {#key NaN} (#17642)

  • fix: detect store in each block expression regardless of AST shape (#17636)

  • fix: treat <menu> like <ul>/<ol> for a11y role checks (#17638)

  • fix: add vite-ignore comment inside dynamic crypto import (#17623)

  • chore: wrap JSDoc URLs in @see and @link tags (#17617)

  • fix: properly hydrate already-resolved async blocks (#17641)

  • fix: emit each_key_duplicate error in production (#16724)

  • fix: exit resolved async blocks on correct node when hydrating (#17640)

View originalPermalink
How 5.50.0 went

5.49.2

Fixed 3
  • Avoid erroneous async derived expressions for blocks
  • Avoid Cloudflare warnings about not having the node:crypto module
  • Reschedule effects inside unskipped branches
Removed 1
  • Remove SvelteKit data attributes from elements.d.ts
Patch Changes
  • chore: remove SvelteKit data attributes from elements.d.ts (#17613)

  • fix: avoid erroneous async derived expressions for blocks (#17604)

  • fix: avoid Cloudflare warnings about not having the "node:crypto" module (#17612)

  • fix: reschedule effects inside unskipped branches (#17604)

View originalPermalink
How 5.49.2 went

5.49.1

Fixed 4
  • Merge consecutive large text nodes
  • Only create async functions in SSR output when necessary
  • Properly separate multiline html blocks from each other in print()
  • Prevent unhandled exceptions arising from dangling promises in <script>
Patch Changes
  • fix: merge consecutive large text nodes (#17587)

  • fix: only create async functions in SSR output when necessary (#17593)

  • fix: properly separate multiline html blocks from each other in print() (#17319)

  • fix: prevent unhandled exceptions arising from dangling promises in (#17591)

View originalPermalink
How 5.49.1 went

5.49.0

Added 1
  • Allow passing ShadowRootInit object to custom element shadow option
Fixed 7
  • Throw for unset createContext get on the server
  • Reset effects inside skipped branches
  • Preserve old dependencies when updating reaction inside fork
  • Make assignment_value_stale warnings more conservative
  • Disregard popover elements when determining whether an element has content
  • Fire introstart/outrostart events after delay, if specified
  • Increment signal versions when discarding forks
Minor Changes
  • feat: allow passing ShadowRootInit object to custom element shadow option (#17088)
Patch Changes
  • fix: throw for unset createContext get on the server (#17580)

  • fix: reset effects inside skipped branches (#17581)

  • fix: preserve old dependencies when updating reaction inside fork (#17579)

  • fix: more conservative assignment_value_stale warnings (#17574)

  • fix: disregard popover elements when determining whether an element has content (#17367)

  • fix: fire introstart/outrostart events after delay, if specified (#17567)

  • fix: increment signal versions when discarding forks (#17577)

View originalPermalink
How 5.49.0 went

5.48.5

Fixed 3
  • Run boundary onerror callbacks in a microtask, in case they result in the boundary's destruction
  • Prevent unintended exports from namespaces
  • Each block breaking with effects interspersed among items
Patch Changes
  • fix: run boundary onerror callbacks in a microtask, in case they result in the boundary's destruction (#17561)

  • fix: prevent unintended exports from namespaces (#17562)

  • fix: each block breaking with effects interspersed among items (#17550)

View originalPermalink
How 5.48.5 went

5.48.4

Fixed 1
  • avoid duplicating escaped characters in CSS AST
Patch Changes
  • fix: avoid duplicating escaped characters in CSS AST (#17554)
View originalPermalink
How 5.48.4 went

5.48.3

Fixed 5
  • Hydration failing with settled async blocks
  • Add pointer and touch events to a11y_no_static_element_interactions warning
  • Handle false dynamic components in SSR
  • Avoid unnecessary block effect re-runs after async work completes
  • Avoid using dev-mode array.includes wrapper on internal array checks
Patch Changes
  • fix: hydration failing with settled async blocks (#17539)

  • fix: add pointer and touch events to a11y_no_static_element_interactions warning (#17551)

  • fix: handle false dynamic components in SSR (#17542)

  • fix: avoid unnecessary block effect re-runs after async work completes (#17535)

  • fix: avoid using dev-mode array.includes wrapper on internal array checks (#17536)

View originalPermalink
How 5.48.3 went

5.48.2

Fixed 1
  • export `wait` function from internal client index
Patch Changes
  • fix: export wait function from internal client index (#17530)
View originalPermalink
How 5.48.2 went

5.48.1

Fixed 6
  • Hoist snippets above const in same block
  • Properly hydrate await in {@html}
  • Batch resolution of async work
  • Account for empty statements when visiting in transform async
  • Avoid async overhead for already settled promises
  • Better code generation for const tags with async dependencies
Patch Changes
  • fix: hoist snippets above const in same block (#17516)

  • fix: properly hydrate await in {@html} (#17528)

  • fix: batch resolution of async work (#17511)

  • fix: account for empty statements when visiting in transform async (#17524)

  • fix: avoid async overhead for already settled promises (#17461)

  • fix: better code generation for const tags with async dependencies (#17518)

View originalPermalink
How 5.48.1 went

5.48.0

Added 1
  • Export `parseCss` from `svelte/compiler`
Fixed 2
  • Handle non-string values in `svelte:element` `this` attribute
  • Faster deduplication of dependencies
Minor Changes
  • feat: export parseCss from svelte/compiler (#17496)
Patch Changes
  • fix: handle non-string values in svelte:element this attribute (#17499)

  • fix: faster deduplication of dependencies (#17503)

View originalPermalink
How 5.48.0 went

5.47.1

Fixed 1
  • Trigger selectedcontent reactivity
Patch Changes
  • fix: trigger selectedcontent reactivity (#17486)
View originalPermalink
How 5.47.1 went

5.47.0

Added 1
  • Customizable <select> elements
Fixed 2
  • Mark subtree of svelte boundary as dynamic
  • Don't reset static elements with debug/snippets
Minor Changes
  • feat: customizable <select> elements (#17429)
Patch Changes
  • fix: mark subtree of svelte boundary as dynamic (#17468)

  • fix: don't reset static elements with debug/snippets (#17477)

View originalPermalink
How 5.47.0 went

5.46.3

Fixed 1
  • Reconnect clean deriveds when they are read in a reactive context
Patch Changes
  • fix: reconnect clean deriveds when they are read in a reactive context (#17362)
View originalPermalink
How 5.46.3 went

5.46.1

Fixed 3
  • Type currentTarget in on function
  • Skip static optimisation for stateless deriveds after await
  • Prevent infinite loop when HMRing a component with an await
Patch Changes
  • fix: type currentTarget in on function (#17370)

  • fix: skip static optimisation for stateless deriveds after await (#17389)

  • fix: prevent infinite loop when HMRing a component with an await (#17380)

View originalPermalink
How 5.46.1 went

5.46.0

Added 1
  • Add csp option to render() function
Changed 1
  • Emit hashes when using hydratable
Minor Changes
  • feat: Add csp option to render(...), and emit hashes when using hydratable (#17338)
View originalPermalink
How 5.46.0 went

5.45.10

Fixed 1
  • fix race condition when importing AsyncLocalStorage
Patch Changes
  • fix: race condition when importing AsyncLocalStorage (#17350)
View originalPermalink
How 5.45.10 went

5.45.9

Fixed 2
  • Correctly reschedule deferred effects when reviving a batch after async work
  • Correctly print !doctype during print
Patch Changes
  • fix: correctly reschedule deferred effects when reviving a batch after async work (#17332)

  • fix: correctly print !doctype during print (#17341)

View originalPermalink
How 5.45.9 went

5.45.8

Fixed 2
  • Set AST root.start to 0 and root.end to template.length
  • Prevent erroneous state_referenced_locally warnings on prop fallbacks
Patch Changes
  • fix: set AST root.start to 0 and root.end to template.length (#17125)

  • fix: prevent erroneous state_referenced_locally warnings on prop fallbacks (#17329)

View originalPermalink
How 5.45.8 went

5.45.7

Fixed 3
  • Add <textarea wrap="off"> as a valid attribute value
  • Add more css selectors to print()
  • Don't crash on hydratable serialization failure
Patch Changes
  • fix: Add <textarea wrap="off"> as a valid attribute value (#17326)

  • fix: add more css selectors to print() (#17330)

  • fix: don't crash on hydratable serialization failure (#17315)

View originalPermalink
How 5.45.7 went

5.45.6

Fixed 2
  • Don't issue a11y warning for <video> without captions if it has no src
  • Add srcObject to permitted <audio>/<video> attributes
Patch Changes
  • fix: don't issue a11y warning for <video> without captions if it has no src (#17311)

  • fix: add srcObject to permitted <audio>/<video> attributes (#17310)

View originalPermalink
How 5.45.6 went

5.45.5

Fixed 2
  • correctly reconcile each blocks after outroing branches are resumed
  • destroy each items after siblings are resumed
Patch Changes
  • fix: correctly reconcile each blocks after outroing branches are resumed (#17258)

  • fix: destroy each items after siblings are resumed (#17258)

View originalPermalink
How 5.45.5 went

5.45.4

Changed 1
  • Move DOM-related effect properties to effect.nodes
Fixed 2
  • Allow $props.id() to occur after an await
  • Keep reactions up to date even when read outside of effect
Patch Changes
  • chore: move DOM-related effect properties to effect.nodes (#17293)

  • fix: allow $props.id() to occur after an await (#17285)

  • fix: keep reactions up to date even when read outside of effect (#17295)

View originalPermalink
How 5.45.4 went

5.45.3

Added 1
  • Add props to state_referenced_locally
Fixed 2
  • Preserve node locations for better sourcemaps
  • Handle cross-realm Promises in hydratable
Patch Changes
  • add props to state_referenced_locally (#17266)

  • fix: preserve node locations for better sourcemaps (#17269)

  • fix: handle cross-realm Promises in hydratable (#17284)

View originalPermalink
How 5.45.3 went

5.45.2

Fixed 2
  • array destructuring after await
  • throw on invalid {@tag}s
Patch Changes
  • fix: array destructuring after await (#17254)

  • fix: throw on invalid {@tag}s (#17256)

View originalPermalink
How 5.45.2 went

5.45.1

Fixed 1
  • Link offscreen items and last effect in each block correctly
Patch Changes
  • fix: link offscreen items and last effect in each block correctly (#17240)
View originalPermalink
How 5.45.1 went

5.45.0

Added 1
  • Add print(...) function
Minor Changes
  • feat: add print(...) function (#16188)
View originalPermalink
How 5.45.0 went

5.44.1

Fixed 4
  • Await blockers before initializing const
  • Link offscreen items and last effect in each block correctly
  • Generate correct code for simple destructurings
  • Ensure each block animations don't mess with transitions
Patch Changes
  • fix: await blockers before initialising const (#17226)

  • fix: link offscreen items and last effect in each block correctly (#17244)

  • fix: generate correct code for simple destructurings (#17237)

  • fix: ensure each block animations don't mess with transitions (#17238)

View originalPermalink
How 5.44.1 went

5.44.0

Added 1
  • Add hydratable API for marking components as hydratable
Minor Changes
  • feat: hydratable API (#17154)
View originalPermalink
How 5.44.0 went

5.43.15

Changed 1
  • Lift the restriction that flushSync cannot be called in effects
Fixed 2
  • Don't execute attachments and attribute effects eagerly
  • Store forked derived values
Patch Changes
  • fix: don't execute attachments and attribute effects eagerly (#17208)

  • chore: lift "flushSync cannot be called in effects" restriction (#17139)

  • fix: store forked derived values (#17212)

View originalPermalink
How 5.43.15 went

5.43.14

Fixed 3
  • Correctly migrate named self closing slots
  • Error at compile time instead of at runtime on await expressions inside bindings/transitions/animations/attachments
  • Take async blockers into account for bindings/transitions/animations/attachments
Patch Changes
  • fix: correctly migrate named self closing slots (#17199)

  • fix: error at compile time instead of at runtime on await expressions inside bindings/transitions/animations/attachments (#17198)

  • fix: take async blockers into account for bindings/transitions/animations/attachments (#17198)

View originalPermalink
How 5.43.14 went

5.43.13

Fixed 1
  • don't set derived values during time traveling
Patch Changes
  • fix: don't set derived values during time traveling (#17200)
View originalPermalink
How 5.43.13 went

5.43.12

Fixed 1
  • maintain correct linked list of effects when updating each blocks
Patch Changes
  • fix: maintain correct linked list of effects when updating each blocks (#17191)
View originalPermalink
How 5.43.12 went

5.43.11

Changed 1
  • don't use tracing overeager during dev
Fixed 1
  • don't cancel transition of already outroing elements
Patch Changes
  • perf: don't use tracing overeager during dev (#17183)

  • fix: don't cancel transition of already outroing elements (#17186)

View originalPermalink
How 5.43.11 went

5.43.10

Fixed 1
  • Avoid other batches running with queued root effects of main batch
Patch Changes
  • fix: avoid other batches running with queued root effects of main batch (#17145)
View originalPermalink
How 5.43.10 went

5.43.9

Fixed 6
  • correctly handle functions when determining async blockers
  • keep deriveds reactive after their original parent effect was destroyed
  • ensure eager effects don't break reactions chain
  • ensure async @const in boundary hydrates correctly
  • take blockers into account when creating #await blocks
  • parallelize async @const's in the template
Patch Changes
  • fix: correctly handle functions when determining async blockers (#17137)

  • fix: keep deriveds reactive after their original parent effect was destroyed (#17171)

  • fix: ensure eager effects don't break reactions chain (#17138)

  • fix: ensure async @const in boundary hydrates correctly (#17165)

  • fix: take blockers into account when creating #await blocks (#17137)

  • fix: parallelize async @consts in the template (#17165)

View originalPermalink
How 5.43.9 went

5.43.8

Fixed 1
  • each block losing reactivity when items removed while promise pending
Patch Changes
  • fix: each block losing reactivity when items removed while promise pending (#17150)
View originalPermalink
How 5.43.8 went

5.43.7

Patch Changes
  • fix: properly defer document title until async work is complete (#17158)

  • fix: ensure deferred effects can be rescheduled later on (#17147)

  • fix: take blockers of components into account (#17153)

View originalPermalink
How 5.43.7 went

5.43.5

Patch Changes
  • fix: ensure async static props/attributes are awaited (#17120)

  • fix: wait on dependencies of async bindings (#17120)

  • fix: await dependencies of style directives (#17120)

View originalPermalink
How 5.43.5 went

5.43.4

Patch Changes
  • chore: simplify connection/disconnection logic (#17105)

  • fix: reconnect deriveds to effect tree when time-travelling (#17105)

View originalPermalink
How 5.43.4 went

5.43.3

Patch Changes
  • fix: ensure fork always accesses correct values (#17098)

  • fix: change title only after any pending work has completed (#17061)

  • fix: preserve symbols when creating derived rest properties (#17096)

View originalPermalink
How 5.43.3 went

5.43.2

Patch Changes
  • fix: treat each blocks with async dependencies as uncontrolled (#17077)
View originalPermalink
How 5.43.2 went

5.43.1

Patch Changes
  • fix: transform $bindable after await expressions (#17066)
View originalPermalink
How 5.43.1 went

5.43.0

Minor Changes
  • feat: out-of-order rendering (#17038)
Patch Changes
  • fix: settle batch after DOM updates (#17054)
View originalPermalink
How 5.43.0 went

5.42.3

Patch Changes
  • fix: handle <svelte:head> rendered asynchronously (#17052)

  • fix: don't restore batch in #await (#17051)

View originalPermalink
How 5.42.3 went

5.42.2

Patch Changes
  • fix: better error message for global variable assignments (#17036)

  • chore: tweak memoizer logic (#17042)

View originalPermalink
How 5.42.2 went

5.42.0

Minor Changes
  • feat: experimental fork API (#17004)
Patch Changes
  • fix: always allow setContext before first await in component (#17031)

  • fix: less confusing names for inspect errors (#17026)

View originalPermalink
How 5.42.0 went

5.41.4

Patch Changes
  • fix: take into account static blocks when determining transition locality (#17018)

  • fix: coordinate mount of snippets with await expressions (#17021)

  • fix: better optimization of await expressions (#17025)

  • fix: flush pending changes after rendering failed snippet (#16995)

View originalPermalink
How 5.41.4 went

5.41.3

Patch Changes
  • chore: exclude vite optimized deps from stack traces (#17008)

  • perf: skip repeatedly traversing the same derived (#17016)

View originalPermalink
How 5.41.3 went

5.41.2

Patch Changes
  • fix: keep batches alive until all async work is complete (#16971)

  • fix: don't preserve reactivity context across function boundaries (#17002)

  • fix: make $inspect logs come from the callsite (#17001)

  • fix: ensure guards (eg. if, each, key) run before their contents (#16930)

View originalPermalink
How 5.41.2 went

5.41.1

Patch Changes
  • fix: place let: declarations before {@const} declarations (#16985)

  • fix: improve each_key_without_as error (#16983)

  • chore: centralise branch management (#16977)

View originalPermalink
How 5.41.1 went

5.41.0

Minor Changes
  • feat: add $state.eager(value) rune (#16849)
Patch Changes
  • fix: preserve <select> state while focused (#16958)

  • chore: run boundary async effects in the context of the current batch (#16968)

  • fix: error if each block has key but no as clause (#16966)

View originalPermalink
How 5.41.0 went
View all

Discussion