You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/packages/svelte/CHANGELOG.md

191 KiB

svelte

5.38.0

Minor Changes

  • feat: allow await inside @const declarations (#16542)

Patch Changes

  • fix: remount at any hydration error (#16248)

  • chore: emit await_reactivity_loss in for await loops (#16521)

  • fix: emit snippet_invalid_export instead of undefined_export for exported snippets (#16539)

5.37.3

Patch Changes

  • fix: reset attribute cache after setting corresponding property (#16543)

5.37.2

Patch Changes

  • fix: double event processing in firefox due to event object being garbage collected (#16527)

  • fix: add bindable dimension attributes types to SVG and MathML elements (#16525)

  • fix: correctly differentiate static fields before emitting duplicate_class_field (#16526)

  • fix: prevent last_propagated_event from being DCE'd (#16538)

5.37.1

Patch Changes

  • chore: remove some todos (#16515)

  • fix: allow await expressions inside {#await ...} argument (#16514)

  • fix: append_styles in an effect to make them available on mount (#16509)

  • chore: remove parser.template_untrimmed (#16511)

  • fix: always inject styles when compiling as a custom element (#16509)

5.37.0

Minor Changes

  • feat: ignore component options in compileModule (#16362)

Patch Changes

  • fix: always mark props as stateful (#16504)

5.36.17

Patch Changes

  • fix: throw on duplicate class field declarations (#16502)

  • fix: add types for part attribute to svg attributes (#16499)

5.36.16

Patch Changes

  • fix: don't update a focused input with values from its own past (#16491)

  • fix: don't destroy effect roots created inside of deriveds (#16492)

5.36.15

Patch Changes

  • fix: preserve dirty status of deferred effects (#16487)

5.36.14

Patch Changes

  • fix: keep input in sync when binding updated via effect (#16482)

  • fix: rename form accept-charset attribute (#16478)

  • fix: prevent infinite async loop (#16482)

  • fix: exclude derived writes from effect abort and rescheduling (#16482)

5.36.13

Patch Changes

  • fix: ensure subscriptions are picked up correctly by deriveds (#16466)

5.36.12

Patch Changes

  • chore: move capture_signals to legacy module (#16456)

5.36.11

Patch Changes

  • fix: always mark reactions of deriveds (#16457)

  • fix: add labels to @const tags and props (#16454)

  • fix: tag stores for $inspect.trace() (#16452)

5.36.10

Patch Changes

  • fix: prevent batches from getting intertwined (#16446)

5.36.9

Patch Changes

  • fix: don't reexecute derived with no dependencies on teardown (#16438)

  • fix: disallow export { foo as default } in <script module> (#16447)

  • fix: move ownership validation into async component body (#16449)

  • fix: allow async destructured deriveds (#16444)

  • fix: move store setup/cleanup outside of async component body (#16443)

5.36.8

Patch Changes

  • fix: keep effect in the graph if it has an abort controller (#16430)

  • chore: Switch payload.out to an array (#16428)

5.36.7

Patch Changes

  • fix: allow instrinsic <svelte:...> elements to inherit from SvelteHTMLElements (#16424)

5.36.6

Patch Changes

  • fix: delegate functions with shadowed variables if declared locally (#16417)

  • fix: handle error in correct boundary after reset (#16171)

  • fix: make <svelte:boundary> reset function a noop after the first call (#16171)

5.36.5

Patch Changes

  • fix: silence $inspect errors when the effect is about to be destroyed (#16391)

  • fix: more informative error when effects run in an infinite loop (#16405)

5.36.4

Patch Changes

  • fix: avoid microtask in flushSync (#16394)

  • fix: ensure compiler state is reset before compilation (#16396)

5.36.3

Patch Changes

  • fix: don't log await_reactivity_loss warning when signal is read in untrack (#16385)

  • fix: better handle $inspect on array mutations (#16389)

  • fix: leave proxied array length untouched when deleting properties (#16389)

  • fix: update $effect.pending() immediately after a batch is removed (#16382)

5.36.2

Patch Changes

  • fix: add $effect.pending() to types (#16376)

  • fix: add pending snippet to <svelte:boundary> types (#16379)

5.36.1

Patch Changes

  • fix: only skip updating bound <input> if the input was the source of the change (#16373)

5.36.0

Minor Changes

  • feat: support await in components when using the experimental.async compiler option (#15844)

Patch Changes

  • fix: silence a11y warning for inert elements (#16339)

  • chore: clean up a11y analysis code (#16345)

5.35.7

Patch Changes

  • fix: silence autofocus a11y warning inside <dialog> (#16341)

  • fix: don't show adjusted error messages in boundaries (#16360)

  • chore: replace inline regex with variable (#16340)

5.35.6

Patch Changes

  • chore: simplify reaction/source ownership tracking (#16333)

  • chore: simplify internal component pop() (#16331)

5.35.5

Patch Changes

  • fix: associate sources in Spring/Tween/SvelteMap/SvelteSet with correct reaction (#16325)

  • fix: re-evaluate derived props during teardown (#16278)

5.35.4

Patch Changes

  • fix: abort and reschedule effect processing after state change in user effect (#16280)

5.35.3

Patch Changes

  • fix: account for mounting when select_option in attribute_effect (#16309)

  • fix: do not proxify the value assigned to a derived (#16302)

5.35.2

Patch Changes

5.35.1

Patch Changes

  • feat: add parent hierarchy to __svelte_meta objects (#16255)

5.35.0

Minor Changes

  • feat: add getAbortSignal() (#16266)

Patch Changes

  • chore: simplify props (#16270)

5.34.9

Patch Changes

  • fix: ensure unowned deriveds can add themselves as reactions while connected (#16249)

5.34.8

Patch Changes

  • fix: untrack $inspect.with and add check for unsafe mutation (#16209)

  • fix: use fine grained for template if the component is not explicitly in legacy mode (#16232)

  • lift unsafe_state_mutation constraints for SvelteSet, SvelteMap, SvelteDate, SvelteURL and SvelteURLSearchParams created inside the derived (#16221)

5.34.7

Patch Changes

  • fix: address css class matching regression (#16204)

5.34.6

Patch Changes

  • fix: match class and style directives against attribute selector (#16179)

5.34.5

Patch Changes

  • fix: keep spread non-delegated event handlers up to date (#16180)

  • fix: remove undefined attributes on hydration (#16178)

  • fix: ensure sources within nested effects still register correctly (#16193)

  • fix: avoid shadowing a variable in dynamic components (#16185)

5.34.4

Patch Changes

  • fix: don't set state withing with_parent in proxy (#16176)

  • fix: use compiler-driven reactivity in legacy mode template expressions (#16100)

5.34.3

Patch Changes

  • fix: don't eagerly execute deriveds on resume (#16150)

  • fix: prevent memory leaking signals in legacy mode (#16145)

  • fix: don't define error.message if it's not configurable (#16149)

5.34.2

Patch Changes

  • fix: add missing typings for some dimension bindings (#16142)

  • fix: prune typescript class field declarations (#16154)

5.34.1

Patch Changes

  • fix: correctly tag private class state fields (#16132)

5.34.0

Minor Changes

  • feat: add source name logging to $inspect.trace (#16060)

Patch Changes

  • fix: add command and commandfor to HTMLButtonAttributes (#16117)

  • fix: better $inspect.trace() output (#16131)

  • fix: properly hydrate dynamic css props components and remove element removal (#16118)

5.33.19

Patch Changes

  • fix: reset is_flushing if flushSync is called and there's no scheduled effect (#16119)

5.33.18

Patch Changes

  • chore: bump esrap dependency (#16106)

  • fix: destructuring state in ssr (#16102)

5.33.17

Patch Changes

  • chore: update acorn parser ecmaVersion to parse import attributes (#16098)

5.33.16

Patch Changes

  • fix: visit expression when destructuring state declarations (#16081)

  • fix: move xmlns attribute from SVGAttributes to to DOMAttributes (#16080)

5.33.15

Patch Changes

  • fix: invoke parent boundary of deriveds that throw (#16091)

5.33.14

Patch Changes

  • Revert "feat: enable TS autocomplete for Svelte HTML element definitions" (#16063)

  • fix: destructuring snippet arguments (#16068)

5.33.13

Patch Changes

  • fix: avoid recursion error in EachBlock visitor (#16058)

5.33.12

Patch Changes

  • fix: correctly transform reassignments to class fields in SSR mode (#16051)

5.33.11

Patch Changes

  • fix: treat transitive dependencies of each blocks as mutable in legacy mode if item is mutated (#16038)

5.33.10

Patch Changes

  • fix: use fill: 'forwards' on transition animations to prevent flicker (#16035)

5.33.9

Patch Changes

  • fix: put expressions in effects unless known to be static (#15792)

5.33.8

Patch Changes

  • fix: only select_option if 'value' is in next (#16032)

5.33.7

Patch Changes

  • fix: bind:value to select with stores (#16028)

5.33.6

Patch Changes

  • fix: falsy attachments on components (#16021)

  • fix: correctly mark elements as selected during SSR (#16017)

5.33.5

Patch Changes

  • fix: handle derived destructured iterators (#16015)

  • fix: avoid rerunning attachments when unrelated spread attributes change (#15961)

5.33.4

Patch Changes

  • fix: narrow defaultChecked to boolean (#16009)

  • fix: warn when using rest or identifier in custom elements without props option (#16003)

5.33.3

Patch Changes

  • fix: allow using typescript in customElement.extend option (#16001)

  • fix: cleanup event handlers on media elements (#16005)

5.33.2

Patch Changes

  • fix: correctly parse escaped unicode characters in css selector (#15976)

  • fix: don't mark deriveds as clean if updating during teardown (#15997)

5.33.1

Patch Changes

  • fix: make deriveds on the server lazy again (#15964)

5.33.0

Minor Changes

  • feat: XHTML compliance (#15538)

  • feat: add fragments: 'html' | 'tree' option for wider CSP compliance (#15538)

5.32.2

Patch Changes

  • chore: simplify <pre> cleaning (#15980)

  • fix: attach __svelte_meta correctly to elements following a CSS wrapper (#15982)

  • fix: import untrack directly from client in svelte/attachments (#15974)

5.32.1

Patch Changes

  • Warn when an invalid <select multiple> value is given (#14816)

5.32.0

Minor Changes

  • feat: warn on implicitly closed tags (#15932)

  • feat: attachments fromAction utility (#15933)

Patch Changes

  • fix: only re-run directly applied attachment if it changed (#15962)

5.31.1

Patch Changes

  • fix: avoid auto-parenthesis for special-keywords-only MediaQuery (#15937)

5.31.0

Minor Changes

  • feat: allow state fields to be declared inside class constructors (#15820)

Patch Changes

  • fix: Add missing AttachTag in Tag union type inside the AST namespace from "svelte/compiler" (#15946)

5.30.2

Patch Changes

  • fix: falsy attachments types (#15939)

  • fix: handle more hydration mismatches (#15851)

5.30.1

Patch Changes

  • fix: add typeParams to SnippetBlock for legacy parser (#15921)

5.30.0

Minor Changes

  • feat: allow generics on snippets (#15915)

5.29.0

Minor Changes

5.28.7

Patch Changes

  • fix: remove unncessary guards that require CSP privilege when removing event attributes (#15846)

  • fix: rewrite destructuring logic to handle iterators (#15813)

5.28.6

Patch Changes

  • fix: use transform.read for ownership_validator.mutation array (#15848)

  • fix: don't redeclare $slots (#15849)

5.28.5

Patch Changes

  • fix: proxify the value in assignment shorthands to the private field (#15862)

  • fix: more frequently update bind:buffered to actual value (#15874)

5.28.4

Patch Changes

  • fix: treat nullish expression as empty string (#15901)

  • fix: prevent invalid BigInt calls from blowing up at compile time (#15900)

  • fix: warn on bidirectional control characters (#15893)

  • fix: emit right error for a shadowed invalid rune (#15892)

5.28.3

Patch Changes

  • chore: avoid microtasks when flushing sync (#15895)

  • fix: improve error message for migration errors when slot would be renamed (#15841)

  • fix: allow characters in the supplementary special-purpose plane (#15823)

5.28.2

Patch Changes

  • fix: don't mark selector lists inside :global with multiple items as unused (#15817)

5.28.1

Patch Changes

  • fix: ensure <svelte:boundary> properly removes error content in production mode (#15793)

  • fix: update_version after delete if source is undefined and prop in target (#15796)

  • fix: emit error on wrong placement of the :global block selector (#15794)

5.28.0

Minor Changes

  • feat: partially evaluate more expressions (#15781)

5.27.3

Patch Changes

  • fix: use function declaration for snippets in server output to avoid TDZ violation (#15789)

5.27.2

Patch Changes

  • chore: use pkg.imports for common modules (#15787)

5.27.1

Patch Changes

  • chore: default params for html blocks (#15778)

  • fix: correct suggested type for custom events without detail (#15763)

  • fix: Throw on unrendered snippets in dev (#15766)

  • fix: avoid unnecessary read version increments (#15777)

5.27.0

Minor Changes

  • feat: partially evaluate certain expressions (#15494)

Patch Changes

  • fix: relax :global selector list validation (#15762)

5.26.3

Patch Changes

  • fix: correctly validate head snippets on the server (#15755)

  • fix: ignore mutation validation for props that are not proxies in more cases (#15759)

  • fix: allow self-closing tags within math namespace (#15761)

5.26.2

Patch Changes

  • fix: correctly validate undefined snippet params with default value (#15750)

5.26.1

Patch Changes

  • fix: update state_referenced_locally message (#15733)

5.26.0

Minor Changes

  • feat: add css.hasGlobal to compile output (#15450)

Patch Changes

  • fix: add snippet argument validation in dev (#15521)

5.25.12

Patch Changes

  • fix: improve internal_set versioning mechanic (#15724)

  • fix: don't transform reassigned state in labeled statement in $derived (#15725)

5.25.11

Patch Changes

  • fix: handle hydration mismatches in await blocks (#15708)

  • fix: prevent ownership warnings if the fallback of a bindable is used (#15720)

5.25.10

Patch Changes

  • fix: set deriveds as CLEAN if they are assigned to (#15592)

  • fix: better scope :global() with nesting selector & (#15671)

5.25.9

Patch Changes

  • fix: allow $.state and $.derived to be treeshaken (#15702)

  • fix: rework binding ownership validation (#15678)

5.25.8

Patch Changes

  • fix: address untracked_writes memory leak (#15694)

5.25.7

Patch Changes

  • fix: ensure clearing of old values happens independent of root flushes (#15664)

5.25.6

Patch Changes

  • fix: ignore generic type arguments while creating AST (#15659)

  • fix: better consider component and its snippets during css pruning (#15630)

5.25.5

Patch Changes

  • fix: add setters to $derived class properties (#15628)

  • fix: silence assignment warning on more function bindings (#15644)

  • fix: make sure CSS is preserved during SSR with bindings (#15645)

5.25.4

Patch Changes

  • fix: support TS type assertions (#15642)

  • fix: ensure undefined class still applies scoping class, if necessary (#15643)

5.25.3

Patch Changes

  • fix: prevent state runes from being called with spread (#15585)

5.25.2

Patch Changes

  • feat: migrate reassigned deriveds to $derived (#15581)

5.25.1

Patch Changes

  • fix: prevent dev server from throwing errors when attempting to retrieve the proxied value of an iframe's contentWindow (#15577)

5.25.0

Minor Changes

  • feat: make deriveds writable (#15570)

5.24.1

Patch Changes

  • fix: use get in constructor for deriveds (#15300)

  • fix: ensure toStore root effect is connected to correct parent effect (#15574)

5.24.0

Minor Changes

  • feat: allow state created in deriveds/effects to be written/read locally without self-invalidation (#15553)

Patch Changes

  • fix: check if DOM prototypes are extensible (#15569)

  • Keep inlined trailing JSDoc comments of properties when running svelte-migrate (#15567)

  • fix: simplify set calls for proxyable values (#15548)

  • fix: don't depend on deriveds created inside the current reaction (#15564)

5.23.2

Patch Changes

  • fix: don't hoist listeners that access non hoistable snippets (#15534)

5.23.1

Patch Changes

  • fix: invalidate parent effects when child effects update parent dependencies (#15506)

  • fix: correctly match :has() selector during css pruning (#15277)

  • fix: replace undefined with void 0 to avoid edge case (#15511)

  • fix: allow global-like pseudo-selectors refinement (#15313)

  • chore: don't distribute unused types definitions (#15473)

  • fix: add files and group to HTMLInputAttributes in elements.d.ts (#15492)

  • fix: throw rune_invalid_arguments_length when $state.raw() is used with more than 1 arg (#15516)

5.23.0

Minor Changes

  • fix: make values consistent between effects and their cleanup functions (#15469)

5.22.6

Patch Changes

  • fix: skip log_if_contains_state if only logging literals (#15468)

  • fix: Add closedby property to HTMLDialogAttributes type (#15458)

  • fix: null and warnings for local handlers (#15460)

5.22.5

Patch Changes

  • fix: memoize clsx calls (#15456)

  • fix: respect svelte-ignore hydration_attribute_changed on elements with spread attributes (#15443)

  • fix: always use setAttribute when setting style (#15323)

  • fix: make style: directive and CSS handling more robust (#15418)

5.22.4

Patch Changes

  • fix: never deduplicate expressions in templates (#15451)

5.22.3

Patch Changes

  • fix: run effect roots in tree order (#15446)

5.22.2

Patch Changes

  • fix: correctly set is_updating before flushing root effects (#15442)

5.22.1

Patch Changes

  • chore: switch acorn-typescript plugin (#15393)

5.22.0

Minor Changes

  • feat: Add idPrefix option to render (#15428)

Patch Changes

  • fix: make dialog element and role interactive (#15429)

5.21.0

Minor Changes

  • chore: Reduce hydration comment for {:else if} (#15250)

Patch Changes

  • fix: disallow bind:group to snippet parameters (#15401)

5.20.5

Patch Changes

  • fix: allow double hyphen css selector names (#15384)

  • fix: class:directive not working with $restProps #15386 (#15389) fix: spread add an useless cssHash on non-scoped element

  • fix: catch error on @const tag in svelte:boundary in DEV mode (#15369)

  • fix: allow for duplicate var declarations (#15382)

  • fix : bug "$0 is not defined" on svelte:element with a function call on class (#15396)

5.20.4

Patch Changes

  • fix: update types and inline docs for flushSync (#15348)

5.20.3

Patch Changes

  • fix: allow @const inside #key (#15377)

  • fix: remove unnecessary ?? '' on some expressions (#15287)

  • fix: correctly override class attributes with class directives (#15352)

5.20.2

Patch Changes

  • chore: remove unused options.uid in render (#15302)

  • fix: do not warn for binding_property_non_reactive if binding is a store in an each (#15318)

  • fix: prevent writable store value from becoming a proxy when reassigning using $-prefix (#15283)

  • fix: muted reactive without bind and select/autofocus attributes working with function calls (#15326)

  • fix: ensure input elements and elements with dir attribute are marked as non-static (#15259)

  • fix: fire delegated events on target even it was disabled in the meantime (#15319)

5.20.1

Patch Changes

  • fix: ensure AST analysis on svelte.js modules succeeds (#15297)

  • fix: ignore typescript abstract methods (#15267)

  • fix: correctly ssr component in svelte:head with $props.id() or css='injected' (#15291)

5.20.0

Minor Changes

  • feat: SSR-safe ID generation with $props.id() (#15185)

Patch Changes

  • fix: take private and public into account for constant_assignment of derived state (#15276)

  • fix: value/checked not correctly set using spread (#15239)

  • chore: tweak effect self invalidation logic, run transition dispatches without reactive context (#15275)

  • fix: use importNode to clone templates for Firefox (#15272)

  • fix: recurse into $derived for ownership validation (#15166)

5.19.10

Patch Changes

  • fix: when re-connecting unowned deriveds, remove their unowned flag (#15255)

  • fix: allow mutation of private derived state (#15228)

5.19.9

Patch Changes

  • fix: ensure unowned derived dependencies are not duplicated when reactions are skipped (#15232)

  • fix: hydrate href that is part of spread attributes (#15226)

5.19.8

Patch Changes

  • fix: properly set value property of custom elements (#15206)

  • fix: ensure custom element updates don't run in hydration mode (#15217)

  • fix: ensure tracking returns true, even if in unowned (#15214)

5.19.7

Patch Changes

  • chore: remove unused code from signal logic (#15195)

  • fix: encounter svelte:element in blocks as sibling during pruning css (#15165)

5.19.6

Patch Changes

  • fix: do not prune selectors like :global(.foo):has(.scoped) (#15140)

  • fix: don't error on slot prop inside block inside other component (#15148)

  • fix: ensure reactions are correctly attached for unowned deriveds (#15158)

  • fix: silence a11y attribute warnings when spread attributes present (#15150)

  • fix: prevent false-positive ownership validations due to hot reload (#15154)

  • fix: widen ownership when calling setContext (#15153)

5.19.5

Patch Changes

  • fix: improve derived connection to ownership graph (#15137)

  • fix: correctly look for sibling elements inside blocks and components when pruning CSS (#15106)

5.19.4

Patch Changes

  • fix: Add bind:focused property to HTMLAttributes type (#15122)

  • fix: lazily connect derievds (in deriveds) to their parent (#15129)

  • fix: disallow $state/$derived in const tags (#15115)

5.19.3

Patch Changes

  • fix: don't throw for undefined non delegated event handlers (#15087)

  • fix: consistently set value to blank string when value attribute is undefined (#15057)

  • fix: optimise || expressions in template (#15092)

  • fix: correctly handle novalidate attribute casing (#15083)

  • fix: expand boolean attribute support (#15095)

  • fix: avoid double deriveds in component props (#15089)

  • fix: add check for is attribute to correctly detect custom elements (#15086)

5.19.2

Patch Changes

  • fix: address regression with untrack (#15079)

5.19.1

Patch Changes

  • fix: omit unnecessary nullish coallescing in template expressions (#15056)

  • fix: more efficient template effect grouping (#15050)

  • fix: ensure untrack correctly retains the active reaction (#15065)

  • fix: initialize files bind on hydration (#15059)

5.19.0

Minor Changes

  • feat: Expose ClassValue from svelte/elements (#15035)

Patch Changes

  • fix: create fewer deriveds for concatenated strings (#15041)

  • fix: correctly parse leading comments in function binding (#15020)

5.18.0

Minor Changes

  • feat: allow <template> elements to contain any child (#15007)

Patch Changes

  • fix: ensure resume effects are scheduled in topological order (#15012)

  • fix: bump esrap (#15015)

  • fix: remove listener on bind_current_time teardown (#15013)

5.17.5

Patch Changes

  • feat: allow const tag inside svelte:boundary (#14993)

  • fix: ensure signal write invalidation within effects is consistent (#14989)

5.17.4

Patch Changes

  • fix: never consider inert boundary effects (#14999)

  • fix: store access on component destroy (#14968)

  • fix: correctly transform pre with no content (#14973)

  • fix: wrap each block expression in derived to encapsulate effects (#14967)

5.17.3

Patch Changes

  • fix: reset dependency read versions after reaction execution (#14964)

5.17.2

Patch Changes

  • fix: account for parent scale when animating elements (#14957)

  • fix: apply overflow: hidden style when transitioning elements, where necessary (#14930)

  • fix: properly add owners to function bindings (#14962)

5.17.1

Patch Changes

  • fix: remove bindable prop validation (#14946)

  • chore: tweak "invalid assignment" compiler error message (#14955)

  • fix: silence false-positive stale value warning (#14958)

5.17.0

Minor Changes

  • feat: allow non-numeric values to be tweened by snapping immediately to new value (#14941)

Patch Changes

  • fix: handle default values in object destructuring within "each" blocks when using characters like "}" and "]" (#14554)

  • fix: account for min-width/height in slide transition (#14942)

  • fix: prevent long delays causing erratic spring behaviour (#14940)

  • feat: warn on using slide transition with table elements (#14936)

  • chore: improve signal performance by reducing duplicate deps (#14945)

5.16.6

Patch Changes

  • fix: Make Tween duration 0 set current to target immediately (#14937)

  • fix: guard against customElements being unavailable in browser extension contexts (#14933)

  • fix: treat inert as a boolean attribute (#14935)

  • fix: remove leading newline from <pre> contents (#14922)

5.16.5

Patch Changes

  • fix: inherit correct namespace for <title> elements (#14817)

  • fix: don't throw bind_invalid_export if there's also a bindable prop with the same name (#14813)

5.16.4

Patch Changes

  • fix: use cached indexOf array prototype method internally (#14912)

  • fix: make Tween work with continuous target changes (#14895)

5.16.3

Patch Changes

  • fix: correctly parse each with loose parser (#14887)

  • fix: apply clsx logic to custom element class attributes (#14907)

5.16.2

Patch Changes

  • fix: ensure disconnected deriveds correctly connect again (#14899)

  • fix: correctly highlight sources reassigned inside trace (#14811)

5.16.1

Patch Changes

  • fix: ensure unowned deriveds correctly get re-linked to the graph (#14855)

  • fix: ensure $inspect.trace works correctly with null values (#14853)

5.16.0

Minor Changes

  • feat: allow class attribute to be an object or array, using clsx (#14714)

Patch Changes

  • fix: don't include keyframes in global scope in the keyframes to rename (#14822)

5.15.0

Minor Changes

  • feat: add "worker" exports condition to better support bundling for worker-based environments (#14779)

5.14.6

Patch Changes

  • fix: treeshake $inspect.trace code if unused in modules (#14774)

  • fix: Improve typescript DX for $inspect, $props, $bindable, and $host (#14777)

5.14.5

Patch Changes

  • fix: bump esrap dependency (#14765)

  • fix: ensure svg namespace for <a> elements is correct (#14756)

  • fix: treeshake $inspect.trace code if unused (#14770)

5.14.4

Patch Changes

  • fix: remove implements from class declarations (#14749)

  • fix: remove unwanted properties from both replaced and unreplaced nodes (#14744)

5.14.3

Patch Changes

  • fix: bump esrap, prevent malformed AST (#14742)

  • fix: compare array contents for equality mismatch detections, not the arrays themselves (#14738)

5.14.2

Patch Changes

  • fix: correctly highlight first rerun of $inspect.trace (#14734)

  • chore: more loose parser improvements (#14733)

5.14.1

Patch Changes

  • fix: improve unowned derived performance (#14724)

5.14.0

Minor Changes

  • feat: adds $inspect.trace rune (#14290)

5.13.0

Minor Changes

  • feat: add outro option to unmount (#14540)

  • feat: provide loose parser mode (#14691)

5.12.0

Minor Changes

  • feat: expose more AST types from "svelte/compiler" (#14601)

Patch Changes

  • fix: don't add parenthesis to media query if already present (#14699)

  • fix: ensure if block paths retain correct template namespacing (#14685)

5.11.3

Patch Changes

  • fix: allow unquoted slash in attributes (#14615)

  • fix: better handle hydration of script/style elements (#14683)

  • fix: make defaultValue work with spread (#14640)

  • fix: avoid mutation validation for invalidate_inner_signals (#14688)

5.11.2

Patch Changes

  • fix: correctly handle ssr for reactivity/window (#14681)

5.11.1

Patch Changes

  • fix: account for global block in is_empty (#14677)

  • fix: remove overzealous reactive_declaration_non_reactive_property warning (#14663)

5.11.0

Minor Changes

  • feat: add svelte/reactivity/window module (#14660)

Patch Changes

  • fix: take into account registration state when setting custom element props (#14508)

5.10.1

Patch Changes

  • fix: ensure snippet hoisting works in the correct scope (#14642)

  • fix: ensure $state.snapshot clones holey arrays correctly (#14657)

  • fix: restore input binding selection position (#14649)

  • fix: transform everything that is not a selector inside :global (#14577)

  • Overwrite Spring.#last_value when using .set() with {instant: true} (#14656)

  • fix: don't emit assignment warnings for bindings (#14651)

5.10.0

Minor Changes

  • feat: provide links to documentation for errors/warnings (#14629)

Patch Changes

  • fix: allow exports with source from script module even if no bind is present (#14620)

  • fix: deconflict get_name for literal class properties (#14607)

5.9.1

Patch Changes

  • fix: mark subtree dynamic for bind with sequence expressions (#14626)

5.9.0

Minor Changes

  • feat: add support for bind getters/setters (#14307)

Patch Changes

  • fix: always run if block code the first time (#14597)

5.8.1

Patch Changes

  • fix: reinstate missing prefersReducedMotion export (#14586)

5.8.0

Minor Changes

  • feat: add Spring and Tween classes to svelte/motion (#11519)

5.7.1

Patch Changes

  • fix: ensure bindings always take precedence over spreads (#14575)

5.7.0

Minor Changes

  • feat: add createSubscriber function for creating reactive values that depend on subscriptions (#14422)

  • feat: add reactive MediaQuery class, and a prefersReducedMotion class instance (#14422)

Patch Changes

  • fix: treat undefined and null the same for the initial input value (#14562)

5.6.2

Patch Changes

  • chore: make if blocks tree-shakable (#14549)

5.6.1

Patch Changes

  • fix: handle static form values in combination with default values (#14555)

5.6.0

Minor Changes

  • feat: support defaultValue/defaultChecked for inputs (#14289)

5.5.4

Patch Changes

  • fix: better error messages for invalid HTML trees (#14445)

  • fix: remove spreaded event handlers when they become nullish (#14546)

  • fix: respect the unidirectional nature of time (#14541)

5.5.3

Patch Changes

  • fix: don't try to add owners to non-$state class fields (#14533)

  • fix: capture infinite_loop_guard in error boundary (#14534)

  • fix: proxify values when assigning using ||=, &&= and ??= operators (#14273)

5.5.2

Patch Changes

  • fix: use correct reaction when lazily creating deriveds inside SvelteDate (#14525)

5.5.1

Patch Changes

  • fix: don't throw with nullish actions (#13559)

  • fix: leave update expressions untransformed unless a transformer is provided (#14507)

  • chore: turn reactive_declaration_non_reactive_property into a runtime warning (#14192)

5.5.0

Minor Changes

  • feat: allow snippets to be exported from module scripts (#14315)

Patch Changes

  • fix: ignore TypeScript generics on variables (#14509)

5.4.0

Minor Changes

  • feat: support #each without as (#14396)

5.3.2

Patch Changes

  • fix: correctly prune CSS for elements inside snippets (#14494)

  • fix: render attributes during SSR regardless of case (#14492)

5.3.1

Patch Changes

  • fix: treat spread elements the same as call expressions (#14488)

  • fix: correctly increment/decrement bigints (#14485)

5.3.0

Minor Changes

  • feat: add error boundaries with <svelte:boundary> (#14211)

5.2.12

Patch Changes

  • fix: upgrade to esm-env 1.2.1 to fix issues with non-Vite setups (#14470)

  • fix: prevent infinite loops when pruning CSS (#14474)

  • fix: generate correct code when encountering object expression statement (#14480)

5.2.11

Patch Changes

  • fix: ignore text and expressions outside the template when validating HTML (#14468)

  • fix: better account for render tags when pruning CSS (#14456)

5.2.10

Patch Changes

  • fix: correctly remove unused selectors in middle of selector lists (#14448)

  • chore: upgrade esm-env for Vite 6 support (#14460)

  • fix: strip exported TypeScript function overloads (#14458)

5.2.9

Patch Changes

  • fix: show :then block for null/undefined value (#14440)

  • fix: relax html parent validation (#14442)

  • fix: prevent memory leak when creating deriveds inside untrack (#14443)

  • fix: disregard TypeScript nodes when pruning CSS (#14446)

5.2.8

Patch Changes

  • fix: correctly prune each blocks (#14403)

  • fix: provide temporary LegacyComponentType (#14257)

  • fix: attach spread attribute events synchronously (#14387)

  • fix: ensure last empty text node correctly hydrates (#14425)

  • fix: correctly prune key blocks (#14403)

5.2.7

Patch Changes

  • fix: always use set for private identifiers (#14378)

5.2.6

Patch Changes

  • fix: remove template expression inlining (#14374)

5.2.5

Patch Changes

  • fix: correctly handle srcObject attribute on video elements (#14369)

  • add contentvisibilityautostatechange event to element definitions (#14373)

  • fix: tighten up export default validation (#14368)

  • fix: include method definitions in class private fields (#14365)

5.2.4

Patch Changes

  • fix: ensure internal cloning can work circular values (#14347)

  • fix: correctly update dynamic member expressions (#14359)

  • fix: ensure is_pure takes into account $effect.tracking() (#14333)

  • fix: coerce value to number when hydrating range/number input with changed value (#14349)

5.2.3

Patch Changes

  • fix: ensure dynamic call expressions correctly generate output (#14345)

5.2.2

Patch Changes

  • fix: treat property accesses of literals as pure (#14325)

5.2.1

Patch Changes

  • fix: mark pseudo classes nested inside :not as used (#14303)

  • fix: disallow invalid attributes for <svelte:window> and <svelte:document> (#14228)

  • fix: ensure props passed to components via mount are updateable (#14210)

  • fix: mark subtree dynamic for img with loading attribute (#14317)

  • fix: avoid relying on Node specifics within compiler (#14314)

5.2.0

Minor Changes

  • feat: better inlining of static attributes (#14269)

5.1.17

Patch Changes

  • fix: account for :has(...) as part of :root (#14229)

  • fix: prevent nested pseudo class from being marked as unused (#14229)

  • fix: use strict equality for key block comparisons in runes mode (#14285)

  • fix: bump is-reference dependency to fix import.meta bug (#14286)

5.1.16

Patch Changes

  • fix: don't wrap pseudo classes inside :global(...) with another :global(...) during migration (#14267)

  • fix: bail on named slots with that have reserved keywords during migration (#14278)

5.1.15

Patch Changes

  • fix: consider static attributes that are inlined in the template (#14249)

5.1.14

Patch Changes

  • fix: migration script messing with attributes (#14260)

  • fix: do not treat reassigned synthetic binds as state in runes mode (#14236)

  • fix: account for mutations in script module in ownership check (#14253)

  • fix: consider img with loading attribute not static (#14237)

5.1.13

Patch Changes

  • fix: add migration task when there's a variable named that would conflict with a rune (#14216)

  • fix: consider valueOf in the reactive methods of SvelteDate (#14227)

  • fix: handle sibling combinators within :has (#14213)

  • fix: consider variables with synthetic store sub as state (#14195)

  • fix: read index as a source in legacy keyed each block (#14208)

  • fix: account for shadowing children slot during migration (#14224)

  • fix: ensure explicit nesting selector is always applied (#14193)

  • fix: add lang="ts" attribute during migration if needed (#14222)

5.1.12

Patch Changes

  • fix: ignore as type expressions on property definitions (#14181)

  • fix: restore active reaction if then block throws (#14191)

  • chore: adds legacy mode flag reducing bundle size in runes mode only apps (#14180)

5.1.11

Patch Changes

  • fix: error on TypeScript's readonly modifier (#14153)

  • fix: remove scoping for :not selectors (#14177)

5.1.10

Patch Changes

  • fix: ensure non-matching elements are scoped for :not(...) selector (#13999)

  • fix: ensure video elements autoplay in safari (#14095)

  • fix: ensure trailing multiline comments on props produce correct code (#14143#issuecomment-2455702689) (#14143)

  • fix: correctly infer <a> tag namespace (#14134)

  • fix: check options namespace for top level svelte:elements (#14101)

  • fix: ensure migrate keeps inline/trailing comments in $props type definition (#14143)

  • fix: update links in JSDoc (#14165)

  • fix: ensure SvelteMap and SvelteSet work with generators in dev (#14103)

  • fix: only output the key for each_key_duplicate (#14147)

  • fix: prevent migrated snippet from shadow snippet prop (#14127)

  • fix: pass along anchor in legacy class wrappers (#14100)

  • fix: recognize all custom element prop definitions (#14084)

  • fix: migrate multiple declarations with only some exported correctly (#14126)

5.1.9

Patch Changes

  • fix: ensure transitions are applied to nested elements (#14080)

5.1.8

Patch Changes

  • fix: ensure compiler statements are correctly included (#14074)

5.1.7

Patch Changes

  • fix: ensure each block inert items are disposed of if the each block is also inert (#13930)

  • fix: allow warningFilter option for compileModule (#14066)

  • fix: ensure onMount correctly fires when new expressions are used (#14049)

  • fix: wrap :id, :where``:not and :has with :global during migration (#13850)

  • fix: ensure custom element attribute/prop changes are in their own context (#14016)

5.1.6

Patch Changes

  • fix: ensure child effects are destroyed before their deriveds (#14043)

5.1.5

Patch Changes

  • fix: replace typo in compiler error messages (#14044)

  • fix: preserve the separator between selectors when an unused selector is in between (#13954)

  • fix: more robust re-subscribe detection for fromStore (#13995)

  • fix: allow to pass in TS preference to migration (#13929)

  • fix: extend derived/state validation error to indirect exports (#14039)

  • fix: minify inject CSS in prod mode (#14006)

  • fix: ensure toStore subscription correctly syncs latest value (#14015)

  • fix: don't access requestAnimationFrame until needed to reduce need for mocks during testing (#14040)

  • fix: ensure element effects are executed in the correct order (#14038)

  • fix: make compiler error extend from Error (#14036)

5.1.4

Patch Changes

  • fix: add empty stack to CompileDiagnostic to show error on build (#13942)

  • fix: ensure effect_tracking correctly handles tracking reactions (#14005)

  • fix: update broken links (#13944)

  • fix: more exhaustive check during SvelteMap.set in deriveds (#13951)

  • fix: trim whitespace while migrating blocks (#13941)

  • fix: update links that previously pointed to preview site (#14001)

  • fix: properly migrate imports types prefixed with $ (#14007)

5.1.3

Patch Changes

  • fix: rethrow errors from await block if no catch block exists (#13819)

  • fix: ensure SVG element attributes have case preserved (#13935)

  • fix: ensure bind:group works as intended with proxied state objects (#13939)

  • fix: ensure value is correctly set to zero on the progress element (#13924)

  • fix: skip comment nodes in snippet validation logic (#13936)

  • fix: typo in Action types (#13874)

  • fix: remove metadata from legacy AST (#13927)

5.1.2

Patch Changes

  • fix: improve consistency of transitions (#13895)

  • fix: enable bound store props in runes mode components (#13887)

  • fix: ensure each block references to imports are handled correctly (#13892)

  • fix: ensure SvelteMap reactivity persists through deriveds (#13877)

  • fix: ensure snippets after empty text correctly hydrate (#13870)

  • fix: prevent migration script from adding props. to the export let identifier (#13899)

  • fix: prevent var name clashing for delegated events without params (#13896)

5.1.1

Patch Changes

  • fix: internally wrap store subscribe in untrack (#13858)

  • fix: allow binding to const with spread in legacy mode (#13849)

  • fix: ensure props internally untracks current_value on sets (#13859)

  • fix: properly traverse children when checking matches for :has (#13866)

5.1.0

Minor Changes

  • feat: export mount() options as the MountOptions type (#13674)

  • feat: allow usage of getContext() within $derived runes (#13830)

Patch Changes

  • fix: properly migrate ts with inferred type comments (#13761)

  • fix: correct property name conversion in custom transitions (#13820)

  • fix: ensure $effect.tracking returns false inside transition functions (#13775)

  • fix: migrate default slots to children snippet (#13760)

  • fix: don't print errors on migration errors (#13754)

  • fix: prevent spread attribute from overriding class directive (#13763)

  • fix: ensure :has selectors followed by other selectors match (#13824)

  • fix: ensure muted DOM property works correctly in FF (#13751)

  • fix: show filename information in legacy_recursive_reactive_block (#13764)

5.0.5

Patch Changes

  • fix: mark :has selectors with multiple preceding selectors as used (#13750)

  • fix: ensure event context is reset before invoking callback (#13737)

  • fix: add more robust check for Element prototype (#13744)

  • fix: do not comment out unused selectors that are inside an unused selector (#13746)

  • fix: more accurately detect $derived migration opportunities (#13740)

  • fix: @debug does not work with proxied-state (#13690)

  • fix: do not add jsdoc if no types found (#13738)

5.0.4

Patch Changes

  • fix: webview preload tag can be any string (#13733)

  • fix: better children snippet / default slot interop (#13734)

5.0.3

Patch Changes

  • chore: ensure transition events are dispatched without current reaction (#13719)

5.0.2

Patch Changes

  • fix: don't blank css on migration error (#13703)

5.0.1

Patch Changes

  • fix: use typedef for JSDoc props and maintain comments (#13698)

5.0.0

A new major version of Svelte has been released! 🎉

The new version brings:

  • even better performance,
  • a more granular reactivity system with runes,
  • more expressive template syntax with snippets and event attributes,
  • native TypeScript support,
  • and backwards compatibility with the previous syntax!

For more details check out the Svelte docs and the migration guide.

5.0.0-next.272

Patch Changes

  • fix: ensure user effects are correctly executed on initialisation (#13697)

  • breaking: state mutations inside the template are no longer allowed (#13660)

5.0.0-next.271

Patch Changes

  • fix: avoid chromium issue with dispatching blur on element removal (#13694)

5.0.0-next.270

Patch Changes

  • fix: bail out if slot name changes and $slots assigned to variable (#13678)

  • feat: add migration-task for impossible to migrate slots (#13658)

  • feat: tell users of @migration-task (#13668)

  • fix: correct migration of uninitialised state (#13673)

  • fix: ensure migrate correctly handles named slots (#13676)

  • feat: add migration-task comment after errors (#13659)

  • fix: migrate reactive statements with inner blocks (#13675)

  • fix: migrating rest props type includes props types (#13632)

  • fix: migrated snippet shadowing prop and let directive removal (#13679)

  • chore: CompileDiagnostic no longer extends Error (#13651)

  • fix: reset reset_element in render to prevent runtime error (#13669)

5.0.0-next.269

Patch Changes

  • fix: transitions within dynamic components now function correctly (#13646)

  • fix: use internal_set in await block (#13642)

  • fix: correctly applies autofocus to static elements (#13648)

  • fix: method attribute is case insensitive (#13639)

  • chore: avoid reporting inspections when an exception occurs (#13601)

  • fix: ensure legacy run utility does not cause cycles (#13643)

  • fix: better migration for leading and trailing comments (#13630)

5.0.0-next.268

Patch Changes

  • breaking: disallow state mutations in logic block expression (#13625)

  • breaking: stronger enumerated types (#13624)

  • chore: improve runtime performance of derived signals (#13626)

5.0.0-next.267

Patch Changes

  • fix: ensure inserted code is preserved during migration (#13617)

  • fix: ensure each block consistency to internal mutations to the collection (#13614)

  • chore: improve derived ownership model (#13623)

  • fix: ensure await block scope transforms are isolated (#13622)

5.0.0-next.266

Patch Changes

  • feat: add hidden until-found and beforematch (#13612)

  • fix: ensure local prop value is read during teardown (#13611)

  • fix: take snippets into account when scoping CSS (#13589)

  • breaking: scope :not(...) selectors (#13568)

  • breaking: scope :has(...) selectors (#13567)

5.0.0-next.265

Patch Changes

  • fix: ensure source and filename are known to compileModule's source map (#13546)

  • fix: cleanup non-branch effects created inside block effects (#13600)

  • fix: do no rerun the each block when array change from empty to empty (#13553)

  • fix: ensure effects destroy owned deriveds upon teardown (#13563)

  • fix: ensure proxied arrays correctly update their length upon deletions (#13549)

  • fix: avoid assigning input.value if the value is the same to fix minlength (#13574)

  • fix: use analysis.name when migrating <svelte:self> (#13544)

  • fix: strip BOM character from input (#13548)

5.0.0-next.264

Patch Changes

  • fix: exclude custom elements from HTML tree validation (#13540)

  • fix: apply class/style directives after attributes (#13535)

  • fix: make immutable option work more correctly (#13526)

  • breaking: use <svelte-css-wrapper> instead of <div> for style props (#13499)

  • fix: mark custom element with virtual class attribute as dynamic (#13435)

  • fix: ensure set_text applies coercion to objects before diff (#13542)

5.0.0-next.263

Patch Changes

  • fix: add media listeners immediately when using bind:paused (#13502)

  • fix: further improve reconciliation of inert each block rows (#13527)

  • feat: add types for the search element (#13489)

  • feat: support migrating svelte:self (#13504)

  • feat: support migration of single assignment labeled statements (#13461)

  • fix: correctly migrate $slots with bracket member expressions & slots with static props (#13468)

  • feat: migrate slot usages (#13500)

  • fix: recreate SvelteDate methods deriveds if they are destroyed (#13515)

  • fix: allow imports from svelte/legacy in SSR (#13523)

5.0.0-next.262

Patch Changes

  • feat: enable snippets to fill slots (#13427)

  • fix: strip internal properties from rest props during SSR (#13492)

  • fix: allow combinator at start of nested CSS selector (#13440)

5.0.0-next.261

Patch Changes

  • fix: migrate $Props without creating non existent props (#13484)

  • feat: support migration of svelte:component (#13437)

  • feat: fix accessors and support migration of accessors (#13456)

  • fix: move labeled statements that need reordering after props insertion point (#13480)

  • feat: support migration of self closing tags (#13479)

  • fix: various svelte:component migration bugs (#13473)

  • fix: exclude type-only props from instance exports when migrating (#13485)

5.0.0-next.260

Patch Changes

  • fix: ensure use directives execute in the correct sequence (#13384)

  • fix: blank CSS contents while migrating (#13403)

  • fix: avoid migrating slots in custom elements (#13406)

  • fix: don't consider children of rules when checking whether they are used or not (#13410)

  • fix: treat <img> alt attribute as content for a11y labelling purposes (#13411)

  • fix: make ownership widening more robust to userland proxies (#13377)

  • fix: validation should not fail on anonymous declarations (#13393)

5.0.0-next.259

Patch Changes

  • fix: higher fidelity event migration (#13362)

  • fix: properly remove root anchor node on unmount (#13381)

  • fix: improve reconciliation of inert each block rows (#13379)

5.0.0-next.258

Patch Changes

  • fix: only use getComputedStyle with elements (#13366)

  • fix: make each items reassignable in legacy mode (#12257)

5.0.0-next.257

Patch Changes

  • fix: only set attribute as property if element has setter (#13341)

5.0.0-next.256

Patch Changes

  • fix: only warn on context="module" in runes mode (#13332)

  • feat: deprecate <svelte:self> in runes mode (#13333)

  • fix: set strings as attributes, non-strings as properties if property exists (#13327)

5.0.0-next.255

Patch Changes

  • fix: keep bound inputs in sync in runes mode (#13328)

  • fix: silence snapshot warnings inside $inspect (#13334)

5.0.0-next.254

Patch Changes

  • feat: account for zoom when calculating animation transforms (#13317)

5.0.0-next.253

Patch Changes

  • fix: delete transformers shadowed by unreassigned state (#13316)

  • fix: don't make wheel events passive by default (#13322)

5.0.0-next.252

Patch Changes

  • fix: handle $Props interface during migration (#13305)

  • fix: attach effects-inside-deriveds to the parent of the derived (#13309)

  • fix: simplify and robustify appending styles (#13303)

5.0.0-next.251

Patch Changes

  • fix: improve performance of scheduling effects (#13300)

5.0.0-next.250

Patch Changes

  • fix: correctly migrate sequence expressions (#13291)

  • fix: avoid disconnecting deriveds that are still active (#13292)

  • feat: Add accessibility warnings for buttons and anchors without explicit labels and content (#13130)

5.0.0-next.249

Patch Changes

  • fix: ensure snapshot logs don't affect dependency graph (#13286)

  • fix: allow custom element styles to be updated in HMR mode (#13225)

  • fix: inject styles correctly when mounting inside an iframe (#13225)

5.0.0-next.248

Patch Changes

  • feat: provide guidance in browser console when logging $state objects (#13142)

  • fix: ensure correct parent effect is associated with render effects (#13274)

  • feat: unwrap function expressions where possible, and optimise bindings (#13269)

5.0.0-next.247

Patch Changes

  • fix: wait until template strings are complete before sanitizing (#13262)

  • fix: avoid flushing sync with $inspect (#13239)

  • fix: separate template_effect for dynamic class/style directive with dynamic attributes (#13171)

  • fix: treat pure call expressions as potentially reactive if they reference local bindings (#13264)

  • fix: follow spec for customElement option (#13247)

  • fix: tighten up `# svelte prefix validation (#13261)

5.0.0-next.246

Patch Changes

  • perf: inline module variables into template (#13075)

  • fix: allow custom element events on slot to bubble inside custom element (#13222)

  • fix: add missing autocomplete attribute tokens (#13229)

  • feat: add infinite loop effect callstack (#13231)

5.0.0-next.245

Patch Changes

  • fix: visit expression for svelte:component references (#13151)

  • fix: ensure signal graph is consistent before triggering $inspect signals (#13153)

  • feat: better types for the autocomplete attribute (#13201)

  • fix: widen ownership upon property access if necessary (#13175)

  • fix: don't show state_referenced_locally warning on types (#13177)

  • fix: ensure locally mutated bindable props persist with spreading props (#13190)

  • fix: try catch strict_equals to avoid error accessing STATE_SYMBOL (#13216)

  • fix: ensure types are easier to follow for TypeScript (#13140)

  • fix: ensure $inspect effects are fine-grain (#13199)

  • fix: ensure unowned derived signals correctly re-connect to graph (#13184)

  • fix: ensure inner script tags are properly removed (#13152)

  • chore: improve ssr parent validation (#13158)

  • fix: prevent nullish snippet for rendering empty content (#13083)

  • fix: allow more characters in the unicode range as component identifiers (#13198)

  • fix: allow for nesting selector in pseudoclasses (#13209)

  • fix: ensure StyleDirective and ClassDirective are marked as dynamic (#13205)

5.0.0-next.244

Patch Changes

  • fix: error on duplicate style and class directive (#13097)

  • fix: ensure $host rune correctly compiles in variable declarations (#13127)

  • fix: remove unnecessary update assignments (#13113)

  • fix: error at compile time on unsupported TypeScript language features (#12982)

  • fix: Ensure imports are above other statements (#13132)

5.0.0-next.243

Patch Changes

  • fix: ensure reactive graph is fully traversed in the marking phase for non-runes mode (#13059)

  • fix: ensure reactivity system remains consistent with removals (#13087)

  • fix: render undefined html as the empty string (#13092)

  • fix: error on incorrect attributes for svelte:body (#13084)

  • feat: provide AST node types with internal types stripped out (#12968)

5.0.0-next.242

Patch Changes

  • fix: insert comment before text in an each block, to prevent glued nodes (#13073)

  • feat: better generated each block code in SSR mode (#13060)

5.0.0-next.241

Patch Changes

  • fix: prevent div/0 when generating transition keyframes (#13058)

  • fix: error on invalid element name (#13057)

  • fix: better compile errors for invalid tag names/placement (#13045)

  • fix: ensure event currentTarget is reset after propagation logic (#13042)

5.0.0-next.240

Patch Changes

  • fix: use WAAPI to control timing of JS-based animations (#13018)

  • fix: prevent binding to imports (#13035)

  • fix: never abort bidirectional transitions (#13018)

5.0.0-next.239

Patch Changes

  • fix: properly handle proxied array length mutations (#13026)

  • fix: repair href attribute mismatches (#13032)

5.0.0-next.238

Patch Changes

  • fix: always return true from deleteProperty trap (#13008)

  • fix: handle deletions of previously-unread state proxy properties (#13008)

  • fix: make internal sources ownerless (#13013)

  • fix: join text nodes separated by comments (#13009)

5.0.0-next.237

Patch Changes

  • breaking: throw error if derived creates state and then depends on it (#12985)

  • fix: ensure assignments to state field inside constructor trigger effects (#12985)

  • fix: ensure $inspect works with SvelteMap and SvelteSet (#12994)

  • chore: default options.filename to "(unknown)" (#12997)

  • feat: allow non-synchronous legacy component instantiation (#12970)

5.0.0-next.236

Patch Changes

  • fix: properly transform destructured $derived.by declarations (#12984)

5.0.0-next.235

Patch Changes

  • chore: update client check for smaller bundle size (#12975)

  • fix: correctly hydrate empty raw blocks (#12979)

5.0.0-next.234

Patch Changes

  • fix: allow deleting non-existent $restProps properties (#12971)

  • feat: only traverse trailing static nodes during hydration (#12935)

5.0.0-next.233

Patch Changes

  • fix: more robust handling of var declarations (#12949)

  • fix: remove buggy validate_dynamic_component check (#12960)

5.0.0-next.232

Patch Changes

  • breaking: remove $state.link rune pending further design work (#12943)

  • fix: ensure $store reads are properly transformed (#12952)

  • breaking: deprecate context="module" in favor of module (#12948)

5.0.0-next.231

Patch Changes

  • breaking: remove callback from $state.link (#12942)

5.0.0-next.230

Patch Changes

  • fix: align list of passive events with browser defaults (#12933)

  • fix: ensure {#await} scope shadowing is computed in the correct order (#12945)

  • fix: don't skip custom elements with attributes (#12939)

5.0.0-next.229

Patch Changes

  • feat: add $state.link rune (#12545)

  • fix: allow mixing slots and snippets in custom elements mode (#12929)

  • fix: small legibility improvement in Snippet type hint (#12928)

  • feat: support HMR with custom elements (#12926)

  • feat: error on invalid component name (#12821)

5.0.0-next.228

Patch Changes

  • feat: skip over static nodes in compiled client code (#12914)

5.0.0-next.227

Patch Changes

  • breaking: disallow Object.defineProperty on state proxies with non-basic descriptors (#12916)

  • breaking: allow frozen objects to be proxied (#12916)

  • breaking: avoid mutations to underlying proxied object with $state (#12916)

  • breaking: remove $state.is rune (#12916)

5.0.0-next.226

Patch Changes

  • fix: ensure typings for <svelte:options> are picked up (#12903)

  • fix: exclude local declarations from non-reactive property warnings (#12909)

5.0.0-next.225

Patch Changes

  • chore: improve the performance of set_text for single expressions (#12893)

  • fix: add cleanup function signature to createRawSnippet (#12894)

  • feat: more efficient checking for missing SSR text node (#12891)

  • fix: ensure nullish expressions render empty text (#12898)

5.0.0-next.224

Patch Changes

  • chore: inline start and end node properties into effect (#12878)

  • fix: correctly ensure prop bindings are reactive when bound (#12879)

  • fix: remove sapper bindings (#12875)

  • chore: refactor internal signal dependency heuristic (#12881)

  • fix: allow store as initial value for props in ssr (#12885)

5.0.0-next.223

Patch Changes

  • fix: treat module-level imports as non-reactive in legacy mode (#12845)

  • breaking: remove foreign namespace (#12869)

  • feat: more efficient text-only fragments (#12864)

  • fix: ensure outro animation is not prematurely aborted (#12865)

  • chore: improve performance of DOM traversal operations (#12863)

  • feat: better destructuring assignments (#12872)

  • fix: stricter crossorigin and wrap attributes types (#12858)

5.0.0-next.222

Patch Changes

  • fix: avoid throwing store_invalid_subscription_module for runes (#12848)

  • fix: omit $index parameter where possible (#12851)

  • feat: skip over static subtrees (#12849)

  • chore: set binding.kind before analysis (#12843)

  • feat: better compiler warnings for non-reactive dependencies of reactive statements (#12824)

  • fix: skip unnecessary $legacy flag (#12850)

5.0.0-next.221

Patch Changes

  • fix: ensure onwheel is passive by default (#12837)

  • chore: improve signal perf by using Set rather than array for reactions (#12831)

  • fix: ensure each key validation occurs for updates (#12836)

5.0.0-next.220

Patch Changes

  • feat: warn on invalid event handlers (#12818)

5.0.0-next.219

Patch Changes

  • feat: add compiler error when encountering a $-prefixed store value outside a .svelte file (#12799)

5.0.0-next.218

Patch Changes

  • breaking: replace $state.frozen with $state.raw (#12808)

  • fix: ensure inspect effects are skipped from effect parent logic (#12810)

5.0.0-next.217

Patch Changes

  • feat: deprecate svelte:component (#12694)

  • feat: treat tag with . as a component, even if lowercase (#12798)

5.0.0-next.216

Patch Changes

  • feat: make custom element tag property optional (#12754)

  • fix: improved memory profile for transitions/animations (#12796)

5.0.0-next.215

Patch Changes

  • fix: propagate custom element component prop changes (#12774)

  • fix: prevent numerous transition/animation memory leaks (#12759)

5.0.0-next.214

Patch Changes

  • fix: ensure custom element styles append correctly during prod (#12777)

  • fix: invalidate signals following ++/-- inside each block (#12780)

  • feat: better code generation for destructuring assignments (#12780)

5.0.0-next.213

Patch Changes

  • fix: ensure custom elements do not sync flush on mount (#12787)

  • fix: ensure event handlers referencing $host are not hoisted (#12775)

  • fix: provide more hydration mismatch coverage (#12755)

  • chore: simpler fallback values (#12788)

5.0.0-next.212

Patch Changes

  • perf: speed up $.exclude_from_object (#12783)

  • chore: publish package provenance info (#12779)

  • feat: simplify derived object destructuring (#12781)

5.0.0-next.211

Patch Changes

  • fix: improve prop binding warning validation for stores (#12745)

  • chore: add error for derived self referencing (#12746)

  • fix: skip is_standalone optimisation for dynamic components (#12767)

  • fix: ensure unowned deriveds correctly update (#12747)

  • fix: order of arguments for push_element in svelte:element (#12763)

5.0.0-next.210

Patch Changes

  • fix: avoid recreating handlers for component events (#12722)

  • fix: call correct event handler for properties of non-reactive objects (#12722)

5.0.0-next.209

Patch Changes

  • fix: add css hash to custom element rendered with svelte:element (#12715)

  • fix: correctly handle SvelteDate methods with arguments (#12738)

  • fix: add touch events on microtask to avoid Chromium bug (#12735)

  • fix: allow deletion of $restProps properties (#12736)

  • feat: more efficient code generation when referencing globals (#12712)

5.0.0-next.208

Patch Changes

  • feat: add support for <svelte:options css="injected" /> (#12660)

  • feat: function called as tagged template literal is reactively called (#12692)

5.0.0-next.207

Patch Changes

  • fix: only create document.title effect if value is dynamic (#12698)

5.0.0-next.206

Patch Changes

  • fix: allow nested <dt>/<dd> elements if they are within a <dl> element (#12681)

  • chore: internal refactoring of client transform visitors (#12683)

5.0.0-next.205

Patch Changes

  • fix: always synchronously call bind:this (#12679)

5.0.0-next.204

Patch Changes

  • feat: allow ignoring runtime warnings (#12608)

  • feat: perf tweaks for actions/styles/classes (#12654)

5.0.0-next.203

Patch Changes

  • chore: internal compiler refactoring (#12651)

  • fix: widen ComponentProps constraint to accept more component shapes (#12666)

  • feat: make <svelte:component> unnecessary in runes mode (#12646)

5.0.0-next.202

Patch Changes

  • fix: remove implicit passive behavior from OnDirective events (#12645)

  • fix: always set draggable through setAttribute to avoid weird behavior (#12649)

5.0.0-next.201

Patch Changes

  • feat: remove $.unwrap calls from each block indexes (#12640)

  • fix: error on bind:this to each block parameter (#12638)

  • feat: remove $.unwrap calls from bind:group (#12642)

5.0.0-next.200

Patch Changes

  • fix: never set custom element props as attributes inside templates (#12622)

  • feat: better code generation for let: directives in SSR mode (#12611)

  • fix: correctly update stores when reassigning with operator other than = (#12614)

5.0.0-next.199

Patch Changes

  • fix: add missing hydration mismatch call-site (#12604)

  • fix: apply dynamic event fixes to OnDirective (#12582)

  • fix: ensure directives run in sequential order (#12591)

  • fix: tweak element_invalid_self_closing_tag to exclude namespace (#12585)

  • breaking: avoid flushing queued updates on mount/hydrate (#12602)

  • feat: allow :global in more places (#12560)

5.0.0-next.198

Patch Changes

  • chore: remove internal binding.expression mechanism (#12530)

  • fix: exclude bind:this from reactive state validation (#12566)

5.0.0-next.197

Patch Changes

  • fix: correctly set anchor inside HMR block (#12575)

5.0.0-next.196

Patch Changes

  • fix: ensure dynamic event handlers are wrapped in a derived (#12563)

  • chore: tidy up dynamic event handler generated code (#12553)

  • fix: dynamic event delegation for stateful call expressions (#12549)

  • fix: ensure $state.snapshot correctly clones Date objects (#12564)

  • fix: remove runtime validation of components/snippets, rely on types instead (#12507)

  • fix: properly update store values (#12562)

5.0.0-next.195

Patch Changes

  • fix: update original source in HMR update (#12547)

5.0.0-next.194

Patch Changes

  • fix: bail-out of hydrating head if no anchor is found (#12541)

  • chore: add warning for invalid render function of createRawSnippet (#12535)

  • fix: correctly set filename on HMR wrappers (#12543)

  • fix: only emit binding_property_non_reactive warning in runes mode (#12544)

5.0.0-next.193

Patch Changes

  • fix: improve validation error that occurs when using {@render ...} to render default slotted content (#12521)

  • fix: reset hydrate node after hydrate(...) (#12512)

5.0.0-next.192

Patch Changes

  • fix: make animations more robust to quick shuffling (#12496)

  • feat: warn if binding to a non-reactive property (#12500)

  • fix: ensure $state proxy invokes set accessor if present (#12503)

5.0.0-next.191

Patch Changes

  • fix: properly assign trailing comments (#12471)

  • breaking: remove deep reactivity from non-bindable props (#12484)

  • fix: ensure async initial store value is noticed (#12486)

  • fix: don't add imports to hoisted event parameters (#12493)

  • fix: set volume through DOM property rather than attribute (#12485)

5.0.0-next.190

Patch Changes

  • fix: hydrate multiple <svelte:head> elements correctly (#12475)

  • fix: assign correct scope to attributes of named slot (#12476)

  • breaking: warn on quoted single-expression attributes in runes mode (#12479)

5.0.0-next.189

Patch Changes

  • feat: add createRawSnippet API (#12425)

5.0.0-next.188

Patch Changes

  • fix: ensure $state.snapshot never errors (#12445)

  • feat: move dev-time component properties to private symbols' (#12461)

5.0.0-next.187

Patch Changes

  • fix: always pass original component to HMR wrapper (#12454)

  • fix: ensure previous transitions are properly aborted (#12460)

5.0.0-next.186

Patch Changes

  • feat: skip pending block for already-resolved promises (#12274)

  • feat: add ability to ignore warnings through warningFilter compiler option (#12296)

  • fix: run animations in microtask so that deferred transitions can measure nodes correctly (#12453)

5.0.0-next.185

Patch Changes

  • fix: allow leading and trailing comments in mustache expression (#11866)

  • fix: ensure hydration walks all nodes (#12448)

  • fix: prevent whitespaces merging across component boundaries (#12449)

  • fix: detect mutations within assignment expressions (#12429)

5.0.0-next.184

Patch Changes

  • fix: show correct errors for invalid runes in .svelte.js files (#12432)

  • breaking: use structuredClone inside $state.snapshot (#12413)

5.0.0-next.183

Patch Changes

  • fix: properly validate snippet/slot interop (#12421)

  • fix: cache call expressions in render tag arguments (#12418)

  • fix: optimize bind:group (#12406)

5.0.0-next.182

Patch Changes

  • fix: abort outro when intro starts (#12321)

  • feat: warn in dev on {@html ...} block hydration mismatch (#12396)

  • feat: only create a maximum of one document event listener per event (#12383)

  • fix: disallow using let: directives with component render tags (#12400)

  • fix: mark variables in shorthand style directives as referenced (#12392)

  • fix: handle empty else if block in legacy AST (#12397)

  • fix: properly delay intro transitions (#12389)

5.0.0-next.181

Patch Changes

  • fix: reflect SvelteURLSearchParams changes to SvelteURL (#12285)

  • fix: ensure hmr block effects are transparent for transitions (#12384)

  • feat: simpler HMR logic (#12391)

5.0.0-next.180

Patch Changes

  • fix: handle nested :global(...) selectors (#12365)

  • feat: include CSS in <head> when css: 'injected' (#12374)

  • fix: destroy effects that error on creation (#12376)

  • breaking: rename legacy.componentApi to compatibility.componentApi (#12370)

  • fix: correctly validate <svelte:component> with bind:this (#12368)

5.0.0-next.179

Patch Changes

  • fix: ensure $slots returns a record of booleans (#12359)

  • feat: single-pass hydration (#12335)

5.0.0-next.178

Patch Changes

  • fix: reconnected deep derived signals to graph (#12350)

5.0.0-next.177

Patch Changes

  • breaking: play transitions on mount by default (#12351)

  • fix: make <select> <option value> behavior consistent (#12316)

  • chore: stricter control flow syntax validation in runes mode (#12342)

  • fix: resolve legacy component props equality for mutations (#12348)

  • fix: make $state component exports settable (#12345)

5.0.0-next.176

Patch Changes

  • fix: correct start of {:else if} and {:else} (#12043)

  • fix: reverse parent/child order in invalid HTML warning (#12336)

  • fix: reorder reactive statements during migration (#12329)

  • feat: better <svelte:element> SSR output (#12339)

  • chore: align warning and error objects, add frame property (#12326)

  • fix: ensure $effect.root is ignored on the server (#12332)

  • fix: enable local transitions on svelte:element (#12346)

5.0.0-next.175

Patch Changes

  • fix: correctly compile $effect.root in svelte modules (#12315)

  • fix: ensure bind:this works with component with no return value (#12290)

5.0.0-next.174

Patch Changes

  • fix: bail out of event hoisting when referencing store subscriptions (#12301)

  • chore: make store initialization logic simpler (#12281)

  • fix: make props optional during SSR (#12284)

  • fix: ensure each blocks properly handle $state.frozen objects in prod (#12305)

  • fix: ensure rest props access on hoisted event handlers works (#12298)

  • fix: lazily create a derived for each read method on SvelteDate.prototype (#12110)

5.0.0-next.173

Patch Changes

  • chore: tidy up store logic (#12277)

5.0.0-next.172

Patch Changes

  • fix: handle duplicate signal dependencies gracefully (#12261)

5.0.0-next.171

Patch Changes

  • feat: simpler effect DOM boundaries (#12258)

5.0.0-next.170

Patch Changes

  • fix: bump dts-buddy for better type generation (#12262)

  • breaking: expose CompileError interface, not class (#12255)

5.0.0-next.169

Patch Changes

  • breaking: rename svelte/reactivity helpers to include Svelte prefix (#12248)

  • fix: avoid duplicate signal dependencies (#12245)

5.0.0-next.168

Patch Changes

  • fix: ensure HMR doesn't mess with anchor nodes (#12242)

  • fix: deconflict multiple snippets of the same name (#12221)

5.0.0-next.167

Patch Changes

  • fix: make more types from svelte/compiler public (#12189)

  • fix: support contenteditable binding undefined fallback (#12210)

  • breaking: prevent usage of arguments keyword in certain places (#12191)

  • fix(types): export CompileResult and Warning (#12212)

  • fix: ensure element dir properties persist with text changes (#12204)

  • fix: disallow accessing internal Svelte props (#12207)

  • fix: make media bindings more robust (#12206)

  • fix: allow slot attribute inside snippets (#12188)

  • feat: allow let props = $props() and optimize prop read access (#12201)

  • feat: improve type arguments for Snippet and $bindable (#12197)

5.0.0-next.166

Patch Changes

  • fix: remove correct event listener from document (#12101)

  • fix: correctly serialize object assignment expressions (#12175)

  • fix: robustify migration script around indentation and comments (#12176)

  • fix: improve await block behaviour in non-runes mode (#12179)

  • fix: improve select handling of dynamic value with placeholders (#12181)

5.0.0-next.165

Patch Changes

  • breaking: bump dts-buddy (#12134)

  • fix: throw compilation error for malformed snippets (#12144)

5.0.0-next.164

Patch Changes

  • fix: prevent a11y_label_has_associated_control false positive for component or render tag in <label> (#12119)

  • fix: allow multiple optional parameters with defaults in snippets (#12070)

5.0.0-next.163

Patch Changes

  • feat: more accurate render/mount/hydrate options (#12111)

  • fix: better binding interop between runes/non-runes components (#12123)

5.0.0-next.162

Patch Changes

  • chore: remove anchor node from each block items (#11836)

5.0.0-next.161

Patch Changes

  • fix: wait a microtask for await blocks to reduce UI churn (#11989)

  • fix: ensure state update expressions are serialised correctly (#12109)

  • fix: repair each block length even without an else (#12098)

  • fix: remove document event listeners on unmount (#12105)

5.0.0-next.160

Patch Changes

  • chore: improve runtime performance of capturing reactive signals (#12093)

5.0.0-next.159

Patch Changes

  • fix: ensure element size bindings don't unsubscribe multiple times from the resize observer (#12091)

  • fix: prevent misidentification of bindings as delegatable event handlers if used outside event attribute (#12081)

  • fix: preserve current input values when removing defaults (#12083)

  • fix: preserve component function context for nested components (#12089)

5.0.0-next.158

Patch Changes

  • fix: adjust module declaration to work around language tools bug (#12071)

5.0.0-next.157

Patch Changes

  • fix: handle is attribute on elements with spread (#12056)

  • fix: correctly process empty lines in messages (#12057)

  • fix: rewrite state_unsafe_mutation message (#12059)

  • fix: support function invocation from imported *.svelte components (#12061)

  • fix: better types for on (#12053)

5.0.0-next.156

Patch Changes

  • fix: increment derived versions when updating (#12047)

5.0.0-next.155

Patch Changes

  • fix: robustify migration script (#12019)

  • fix: relax constraint for ComponentProps (#12026)

  • fix: address event delegation duplication behaviour (#12014)

  • chore: remove createRoot references (#12018)

  • chore: clear Map/Set before triggering $inspect callbacks (#12013)

  • breaking: rename $effect.active to $effect.tracking (#12022)

5.0.0-next.154

Patch Changes

  • fix: ensure bound input content is resumed on hydration (#11986)

  • fix: better render type (#11997)

  • fix: SSR template escaping (#12007)

5.0.0-next.153

Patch Changes

  • feat: defer tasks without creating effects (#11960)

  • fix: enusre dev validation in dynamic component works as intended (#11985)

  • feat: detach inert effects (#11955)

  • feat: sort possible bindings in invalid binding error (#11950)

  • fix: apply style directives to element with empty style attribute (#11971)

5.0.0-next.152

Patch Changes

  • fix: validate form inside a form (#11947)

  • fix: more robust handling of events in spread attributes (#11942)

  • feat: simpler `svelte:element hydration (#11773)

  • fix: make legacy.componentApi option more visible (#11924)

  • feat: simpler hydration of CSS custom property wrappers (#11948)

  • chore: optimise effects that only exist to return a teardown (#11936)

  • feat: always create wrapper <div> for <svelte:component> with CSS custom properties (#11792)

  • feat: add svelte/events package and export on function (#11912)

  • feat: more efficient output for attributes in SSR (#11949)

  • fix: update reactive set when deleting initial values (#11967)

  • feat: simpler string normalization (#11954)

  • fix: always assign text.nodeValue (#11944)

5.0.0-next.151

Patch Changes

  • fix: relax Component type (#11929)

  • fix: sort {@const ...} tags topologically in legacy mode (#11908)

  • chore: deprecate html in favour of body for render() (#11927)

  • fix: append start/end info to AssignmentPattern and VariableDeclarator (#11930)

  • fix: relax slot prop validation on components (#11923)

5.0.0-next.150

Patch Changes

  • fix: populate this.#sources when constructing reactive map (#11913)

  • fix: omit state_referenced_locally warning for component exports (#11905)

  • fix: ensure event.target is correct for delegation (#11900)

  • chore: speed up regex (#11918)

  • feat: bind activeElement and pointerLockElement in <svelte:document> (#11879)

  • fix: correctly backport svelte:element to old AST (#11917)

  • fix: add unused-export-let to legacy lint replacements (#11896)

5.0.0-next.149

Patch Changes

  • fix: keep default values of props a proxy after reassignment (#11860)

  • fix: address map reactivity regression (#11882)

  • fix: assign message to error object in handle_error using Object.defineProperty (#11675)

  • fix: ensure frozen objects in state are correctly skipped (#11889)

5.0.0-next.148

Patch Changes

  • chore: improve $state.frozen performance in prod (#11852)

  • breaking: removed deferred event updates (#11855)

5.0.0-next.147

Patch Changes

  • fix: improve reactive Map and Set implementations (#11827)

  • fix: improve controlled each block cleanup performance (#11839)

5.0.0-next.146

Patch Changes

  • fix: allow for more svelte-ignore to work (#11833)

  • fix: reevaluate namespace in slots (#11849)

5.0.0-next.145

Patch Changes

  • fix: $state.is missing second argument on the server (#11835)

  • fix: prevent buggy ownership warning when reassigning state (#11812)

  • fix: address regressed memory leak (#11832)

5.0.0-next.144

Patch Changes

  • fix: address derived memory leak on disconnection from reactive graph (#11819)

  • fix: set correct scope for @const tags within slots (#11798)

  • fix: better support for onwheel events in chrome (#11808)

  • fix: coherent infinite loop guard (#11815)

  • fix: make prop fallback values deeply reactive if needed (#11804)

  • fix: robustify initial scroll value detection when scroll is smooth (#11802)

5.0.0-next.143

Patch Changes

  • feat: provide Component type that represents the new shape of Svelte components (#11775)

5.0.0-next.142

Patch Changes

  • fix: allow runelike writable as prop (#11768)

  • fix: support array.lastIndexOf without second argument (#11766)

  • fix: handle this parameter in TypeScript-annotated functions (#11795)

  • fix: allow classes to be reassigned (#11794)

  • fix: capture the correct event names when spreading attributes (#11783)

  • fix: allow global next to & for nesting (#11784)

  • fix: parse ongotpointercapture and onlostpointercapture events correctly (#11790)

  • fix: only inject push/pop in SSR components when necessary (#11771)

5.0.0-next.141

Patch Changes

  • fix: throw on invalid attribute expressions (#11736)

  • fix: use svg methods for updating svg attributes too (#11755)

  • fix: don't warn on link without href if aria-disabled (#11737)

  • fix: don't use console.trace inside dev warnings (#11744)

5.0.0-next.140

Patch Changes

  • breaking: event handlers + bindings now yield effect updates (#11706)

5.0.0-next.139

Patch Changes

  • fix: ensure we clear down each block opening anchors from document (#11740)

5.0.0-next.138

Patch Changes

  • fix: allow comments after last selector in css (#11723)

  • fix: don't add scoping modifier to nesting selectors (#11713)

  • chore: speedup hydration around input and select values (#11717)

  • fix: update value like attributes in a separate template_effect (#11720)

  • fix: improve handling of unowned derived signal (#11712)

5.0.0-next.137

Patch Changes

  • fix: migrate derivations without semicolons (#11704)

  • fix: check for invalid bindings on window and document (#11676)

  • fix: more efficient spread attributes in SSR output (#11660)

  • fix: inline pointer events now correctly work in Chrome (#11695)

  • fix: don't require warning codes to be separated by commas in non-runes mode (#11669)

5.0.0-next.136

Patch Changes

  • chore: remove handle_compile_error (#11639)

  • breaking: disallow string literal values in <svelte:element this="..."> (#11454)

  • fix: use coarse-grained updates for derived expressions passed to props in legacy mode (#11652)

  • fix: robustify bind:scrollX/Y binding (#11655)

  • feat: migrate <svelte:element this="div"> (#11659)

  • feat: more information when hydration fails (#11649)

  • fix: replay load and error events on load during hydration (#11642)

5.0.0-next.135

Patch Changes

  • fix: make messages more consistent (#11643)

  • feat: introduce rootDir compiler option, make filename relative to it (#11627)

  • fix: rename __svelte_meta.filename to __svelte_meta.file to align with svelte 4 (#11627)

  • fix: avoid state_referenced_locally warning within type annotations (#11638)

5.0.0-next.134

Patch Changes

  • chore: improve SSR invalid element error message (#11585)

  • fix: deduplicate children prop and default slot (#10800)

  • feat: error on imports to svelte/internal/* (#11632)

  • fix: better handle img loading attribute (#11635)

  • feat: add $state.is rune (#11613)

  • feat: provide $state warnings for accidental equality (#11610)

  • feat: error when snippet shadow a prop (#11631)

  • chore: use new CustomEvent instead of deprecated initCustomEvent (#11629)

5.0.0-next.133

Patch Changes

  • fix: add backwards-compat for old warning codes in legacy mode (#11607)

5.0.0-next.132

Patch Changes

  • chore: improve runtime overhead of creating comment templates (#11591)

  • fix: replicate Svelte 4 props update detection in legacy mode (#11577)

  • fix: allow for non optional chain call expression in render (#11578)

  • fix: correctly handle falsy values of style directives in SSR mode (#11583)

  • fix: improve handling of lazy image elements (#11593)

  • fix: skip deriveds for props with known safe calls (#11595)

5.0.0-next.131

Patch Changes

  • chore: optimise effects (#11569)

  • fix: ensure all effect cleanup functions are untracked (#11567)

5.0.0-next.130

Patch Changes

  • fix: improve internal mechanism for handling process_effects (#11560)

5.0.0-next.129

Patch Changes

  • fix: further adjust heuristics for effect_update_depth_exceeded (#11558)

5.0.0-next.128

Patch Changes

  • fix: improved $inspect handling of reactive Map/Set/Date (#11553)

  • fix: adjust heuristics for effect_update_depth_exceeded (#11557)

5.0.0-next.127

Patch Changes

  • fix: don't warn on writes to $state (#11540)

  • feat: provide better error messages in DEV (#11526)

  • fix: better support for lazy img elements (#11545)

  • fix: handle falsy prop aliases correctly (#11539)

  • fix: ensure spread events are added even when rerunning spread immediately (#11535)

5.0.0-next.126

Patch Changes

  • fix: improve behaviour of unowned derived signals (#11521)

  • fix: make $effect.active() true when updating deriveds (#11500)

  • fix: skip parent element validation for snippet contents (#11463)

5.0.0-next.125

Patch Changes

  • fix: coerce incremented/decremented sources (#11506)

  • feat: add support for svelte inspector (#11514)

  • fix: skip AST analysis of TypeScript AST nodes (#11513)

  • fix: use import.meta.hot.acceptExports when available to support partial hmr in vite (#11453)

  • feat: better error for bind:this legacy API usage (#11498)

5.0.0-next.124

Patch Changes

  • fix: allow to access private fields after this reassignment (#11487)

  • fix: only initiate scroll if scroll binding has existing value (#11469)

  • fix: restore value after attribute removal during hydration (#11465)

  • fix: check if svelte component exists on custom element destroy (#11488)

  • fix: ensure derived is detected as dirty correctly (#11496)

  • fix: prevent false positive ownership warning (#11490)

5.0.0-next.123

Patch Changes

  • fix: adjust order of derived function definition overloads (#11426)

5.0.0-next.122

Patch Changes

  • fix: mark function properties on runes as deprecated for better intellisense (#11439)

  • fix: only warn about non-reactive state in runes mode (#11434)

  • fix: prevent ownership validation from infering with component context (#11438)

  • fix: ensure $inspect untracks inspected object (#11432)

5.0.0-next.121

Patch Changes

  • fix: set correct component context when rendering snippets (#11401)

  • fix: detect style shorthands as stateful variables in legacy mode (#11421)

  • fix: improve unowned derived signal behaviour (#11408)

  • fix: rework binding type-checking strategy (#11420)

  • fix: improve html escaping of element attributes (#11411)

5.0.0-next.120

Patch Changes

  • feat: MathML support (#11387)

5.0.0-next.119

Patch Changes

  • fix: generate correct code for arrow functions with bodies involving object expressions (#11392)

5.0.0-next.118

Patch Changes

  • fix: ensure no data loss occurs when using reactive Set methods (#11385)

  • fix: handle reassignment of $props and $restProps (#11348)

  • fix: disallow sequence expressions in @const tags (#11357)

5.0.0-next.117

Patch Changes

  • fix: collect all necessary setters of html elements when spreading attributes (#11371)

  • fix: ensure reactions are kept dirty when marking them again (#11364)

  • feat: leave view transition pseudo selectors untouched (#11375)

  • fix: require whitespace after @const tag (#11379)

5.0.0-next.116

Patch Changes

  • fix: correctly interpret empty aria- attribute (#11325)

  • fix: disallow mixing on:click and onclick syntax (#11295)

  • fix: make hr, script and template valid select children (#11344)

  • fix: apply modifiers to bubbled events (#11369)

  • fix: allow bind:this on <select> with dynamic multiple attribute (#11378)

  • feat: allow for literal property definition with state on classes (#11326)

  • fix: disallow mounting a snippet (#11347)

  • feat: only inject push/init/pop when necessary (#11319)

  • feat: provide migration helper (#11334)

  • fix: ensure store from props is hoisted correctly (#11367)

5.0.0-next.115

Patch Changes

  • fix: remove bind_prop in runes mode (#11321)

  • fix: mark accessors and immutable as deprecated (#11277)

5.0.0-next.114

Patch Changes

  • feat: introduce types to express bindability (#11225)

5.0.0-next.113

Patch Changes

  • breaking: disallow binding to component exports in runes mode (#11238)

5.0.0-next.112

Patch Changes

  • fix: avoid hoisting error by using 'let' instead of 'var' (#11291)

5.0.0-next.111

Patch Changes

  • fix: run render functions for dynamic void elements (#11258)

  • fix: allow events to continue propagating following an error (#11263)

  • fix: resolve type definition error in svelte/compiler (#11283)

  • feat: include script and svelte:options attributes in ast (#11241)

  • fix: only destroy snippets when they have changed (#11267)

  • fix: add type arguments to Map and Set (#10820)

  • feat: implement :global {...} CSS blocks (#11276)

  • feat: add read-only bind:focused (#11271)

5.0.0-next.110

Patch Changes

  • fix: make sure event attributes run after bindings (#11230)

5.0.0-next.109

Patch Changes

  • fix: more robust moving of each item nodes (#11254)

  • fix: ensure that CSS is generated for the final frame of a transition (#11251)

  • fix: more accurate error message when creating orphan effects (#11227)

  • fix: support $state.snapshot as part of variable declarations (#11235)

  • fix: optimize object property mutations in compilation (#11243)

  • breaking: don't allow children in svelte:options (#11250)

  • fix: possible name clash in hoisted functions (#11237)

  • fix: preserve getters/setters in HMR mode (#11231)

5.0.0-next.108

Patch Changes

  • breaking: warn on slots and event handlers in runes mode, error on <slot> + {@render ...} tag usage in same component (#11203)

  • fix: fall back to component namespace when not statically determinable, add way to tell <svelte:element> the namespace at runtime (#11219)

  • fix: measure elements before taking siblings out of the flow (#11216)

  • breaking: warn on self-closing non-void HTML tags (#11114)

  • fix: take outroing elements out of the flow when animating siblings (#11208)

  • fix: widen ownership when sub state is assigned to new state (#11217)

5.0.0-next.107

Patch Changes

  • fix: refine css :global() selector checks in a compound selector (#11142)

  • fix: remove memory leak from bind:this (#11194)

  • fix: remove memory leak from retaining old DOM elements (#11197)

  • feat: add warning when using $bindable rune without calling it (#11181)

5.0.0-next.106

Patch Changes

  • feat: use state proxy ancestry for ownership validation (#11184)

  • fix: make snippet effects transparent for transitions (#11195)

  • fix: return ast from compile (like Svelte 4 does) (#11191)

  • fix: ensure bind:this unmount behavior for members is conditional (#11193)

5.0.0-next.105

Patch Changes

  • breaking: remove unstate(), replace with $state.snapshot rune (#11180)

  • fix: more accurate default value handling (#11183)

5.0.0-next.104

Patch Changes

  • fix: ssr comments in head elements that require raw content (#10936)

  • fix: improve spreading of attributes (#11177)

5.0.0-next.103

Patch Changes

  • fix: throw error when auto-subscribed store variable shadow by local variable (#11170)

  • fix: make ownership validation work correctly with HMR (#11171)

  • fix: revert ownership widening change (#11161)

  • fix: fix string name of reactive map and set iterator (#11169)

  • feat: reactive URL and URLSearchParams classes (#11157)

  • feat: update error message for snippet binding and assignments (#11168)

5.0.0-next.102

Patch Changes

  • fix: generate correct types for reactive Map/Set/Date (#11153)

5.0.0-next.101

Patch Changes

  • fix missing classes after dynamic expressions in class attribute (#11134)

  • feat: simplify HMR implementation (#11132)

  • fix: add validation around disallowed sequence expressions to element attributes (#11149)

5.0.0-next.100

Patch Changes

  • fix: further improvements to hmr component key generation (#11129)

5.0.0-next.99

Patch Changes

  • fix: use correct meta property for hmr key (#11125)

5.0.0-next.98

Patch Changes

  • fix: use keys for hmr modules (#11123)

  • fix: addresses reactive Set bug in certain engines (#11120)

5.0.0-next.97

Patch Changes

  • fix: loosen proxy signal creation heuristics (#11109)

  • fix: ensure top level snippets are defined when binding to component prop (#11104)

  • feat: hot module reloading support for Svelte 5 (#11106)

5.0.0-next.96

Patch Changes

  • feat: introduce $host rune, deprecate createEventDispatcher (#11059)

  • fix: execute sole static script tag (#11095)

  • fix: make static element property available for the SvelteComponent type (#11079)

  • fix: improve internal proxied state signal heuristic (#11102)

  • fix: keep sibling selectors when dealing with slots/render tags/svelte:element tags (#11096)

  • fix: ensure deep mutation ownership widening (#11094)

  • fix: improve compiled output of multiple call expression in single text node (#11097)

  • fix: improve hydration of svelte head blocks (#11099)

5.0.0-next.95

Patch Changes

  • breaking: robustify interop of exports and props in runes mode (#11064)

  • fix: improve handled of unowned derived signals (#11077)

  • fix: bundle CSS types (#11067)

5.0.0-next.94

Patch Changes

  • fix: add anchor support to mount() API (#11050)

5.0.0-next.93

Patch Changes

  • breaking: prevent unparenthesized sequence expressions in attributes (#11032)

  • fix: ensure transition errors are not swallowed (#11039)

5.0.0-next.92

Patch Changes

  • fix: include compiler/package.json in package (#11033)

5.0.0-next.91

Patch Changes

  • fix: improve unowned derived signal heuristics (#11029)

  • fix: ensure correct context for action update/destroy functions (#11023)

  • feat: more efficient hydration markers (#11019)

  • fix: ensure effect cleanup functions are called with null this (#11024)

  • fix: correctly handle closure passed to $derived.by when destructuring (#11028)

  • Add name to HTMLDetailsAttributes (#11013)

  • breaking: move compiler.cjs to compiler/index.js (#10988)

5.0.0-next.90

Patch Changes

  • fix: hydrate HTML with surrounding whitespace (#10996)

  • feat: faster HTML tags (#10986)

5.0.0-next.89

Patch Changes

  • fix: expose 'svelte/internal' to prevent Vite erroring on startup (#10987)

  • fix: revert SSR shorthand comments (#10980)

  • fix: child effects are removed from parent branches (#10985)

5.0.0-next.88

Patch Changes

  • fix: further improvements to effect scheduling and flushing (#10971)

  • feat: re-export built-ins from svelte/reactivity on the server (#10973)

5.0.0-next.87

Patch Changes

  • fix: apply animate on prefix/suffix each block mutations (#10965)

5.0.0-next.86

Patch Changes

  • fix: improved effect sequencing and execution order (#10949)

  • breaking: onDestroy functions run child-first (#10949)

  • fix: improve action support for nested $effect (#10962)

5.0.0-next.85

Patch Changes

  • feat: use implicit return for each block keys (#10938)

  • breaking: always run pre effects immediately (#10928)

  • fix: improve order of pre-effect execution (#10942)

  • feat: more efficient each block compiler output (#10937)

5.0.0-next.84

Patch Changes

  • fix: reliably remove undefined attributes during hydration (#10917)

  • fix: Add elementtiming HTMLAttribute, remove crossorigin from HTMLInputAttributes (#10921)

  • feat: shorter compiler output for attribute updates (#10917)

5.0.0-next.83

Patch Changes

  • feat: more efficient if block compiler output (#10906)

  • fix: update type of options.target (#10892)

  • fix: correctly hydrate controlled each-else block (#10887)

  • fix: Add dirname to HTMLInputAttributes (#10908)

5.0.0-next.82

Patch Changes

  • fix: allow runes for variable declarations in the template (#10879)

  • feat: take form resets into account for two way bindings (#10617)

  • fix: handle multiple snippet parameters with one or more being optional (#10833)

  • breaking: apply fallback value every time in runes mode (#10797)

5.0.0-next.81

Patch Changes

  • feat: add support for webkitdirectory DOM boolean attribute (#10847)

  • fix: don't override instance methods during legacy class creation (#10834)

  • fix: adjust scope parent for named slots (#10843)

  • fix: improve handling of unowned derived signals (#10842)

  • fix: improve element class attribute behaviour (#10856)

  • fix: ensure select value is updated upon select option removal (#10846)

  • fix: ensure capture events don't call delegated events (#10831)

5.0.0-next.80

Patch Changes

  • fix: add types for svelte/reactivity (#10817)

  • fix: ensure arguments are supported on all reactive Date methods (#10813)

5.0.0-next.79

Patch Changes

  • feat: add reactive Map class to svelte/reactivity (#10803)

5.0.0-next.78

Patch Changes

  • fix: invalidate store when mutated inside each block (#10785)

  • fix: make set.has(...) granular for existing properties' (#10793)

5.0.0-next.77

Patch Changes

  • fix: adjust render effect ordering (#10783)

  • fix: handle component binding mutation (#10786)

5.0.0-next.76

Patch Changes

  • feat: add reactive Set class to svelte/reactivity (#10781)

  • breaking: make $props() rune non-generic (#10694)

  • fix: improve internal render effect sequencing (#10769)

5.0.0-next.75

Patch Changes

  • fix: use getters for derived class state fields, with memoisation (#10757)

5.0.0-next.74

Patch Changes

  • fix: prevent reactive statement reruns when they have indirect cyclic dependencies (#10736)

5.0.0-next.73

Patch Changes

  • fix: improve bind:this support around proxyied state (#10732)

  • fix: bump specificity on all members of a selector list (#10730)

  • breaking: preserve slots inside templates with a shadowrootmode attribute (#10721)

  • chore: custom elements validation (#10720)

  • fix: ensure performance.now() and requestAnimationFrame() are polyfilled in ssr (#10715)

  • fix: eagerly unsubscribe when store is changed (#10727)

  • fix: error when exporting reassigned state from module context (#10728)

5.0.0-next.72

Patch Changes

  • fix: adjust keyed each block equality handling (#10699)

  • fix: improve indexed each equality (#10702)

  • fix: prevent snippet children conflict (#10700)

5.0.0-next.71

Patch Changes

  • fix: improve namespace inference when having {@render} and {@html} tags (#10631)

  • fix: don't collapse whitespace within text nodes (#10691)

5.0.0-next.70

Patch Changes

  • fix: better ownership mutation validation (#10673)

  • fix: handle TypeScript's optional parameter syntax in snippets (#10671)

  • fix: deduplicate generated props and action arg names (#10669)

5.0.0-next.69

Patch Changes

  • perf: bail early when traversing non-state (#10654)

  • feat: improve ssr html mismatch validation (#10658)

  • fix: improve ssr output of dynamic textarea elements (#10638)

  • fix: improve ssr code generation for class property $derived (#10661)

  • fix: warn when $props rune not called (#10655)

  • fix: improve derived rune destructuring support (#10665)

  • feat: allow arbitrary call expressions and optional chaining for snippets (#10656)

  • fix: add $set and $on methods in legacy compat mode (#10642)

5.0.0-next.68

Patch Changes

  • fix: improve deep_read performance (#10624)

5.0.0-next.67

Patch Changes

  • fix: improve event delegation with shadowed bindings (#10620)

  • feat: add reactive Date object to svelte/reactivity (#10622)

5.0.0-next.66

Patch Changes

  • fix: don't clear date input on temporarily invalid value (#10616)

  • fix: use safe-equals comparison for @const tags in legacy mode (#10606)

  • fix: improve proxy effect dependency tracking (#10605)

  • fix: prevent window listeners from triggering events twice (#10611)

  • feat: allow dynamic type attribute with bind:value (#10608)

  • fix: make bind_this implementation more robust (#10598)

  • fix: tweak initial bind:clientWidth/clientHeight/offsetWidth/offsetHeight update timing (#10512)

  • fix: correctly handle proxied signal writes before reads (#10612)

5.0.0-next.65

Patch Changes

  • fix: improve $inspect handling of derived objects (#10584)

  • fix: permit whitespace within template scripts (#10591)

  • fix: allow boolean contenteditable attribute (#10590)

  • fix: improve import event handler support (#10592)

5.0.0-next.64

Patch Changes

  • fix: inherit ownerlessness when creating child proxies (#10577)

5.0.0-next.63

Patch Changes

  • fix: handle member expressions in directives (#10576)

  • fix: remove memory leak (#10570)

  • fix: call beforeUpdate/afterUpdate callbacks when props are mutated (#10570)

  • fix: improve props spreading logic (#10574)

5.0.0-next.62

Patch Changes

  • feat: allow state/derived/props to be explicitly exported from components (#10523)

  • fix: replace proxy-based readonly validation with stack-trace-based ownership tracking (#10464)

  • fix: correct context applied to batch_inspect (#10569)

5.0.0-next.61

Patch Changes

  • fix: improve each block item equality for immutable mode (#10537)

  • fix: improve handling of unowned derived signals (#10565)

  • fix: better handling of empty text node hydration (#10545)

  • fix: ensure update methods of actions and reactive statements work with fine-grained $state (#10543)

  • fix: don't execute scripts inside @html when instantiated on the client (#10556)

  • fix: only escape characters in SSR template (#10555)

  • fix: wire up events in mount correctly and fix its types (#10553)

  • fix: better handling of derived signals that have no dependencies (#10558)

  • fix: improve state store mutation compiler output (#10561)

5.0.0-next.60

Patch Changes

  • fix: improve effect over-fire on store subscription init (#10535)

  • fix: use init properties when exporting non-state values in prod (#10521)

5.0.0-next.59

Patch Changes

  • chore: improve code generation for bind:this in SSR mode (#10524)

  • fix: visit expression node in directives (#10527)

5.0.0-next.58

Patch Changes

  • breaking: remove createRoot, adjust mount/hydrate APIs, introduce unmount (#10516)

5.0.0-next.57

Patch Changes

  • fix: correctly scope CSS selectors with descendant combinators (#10490)

  • feat: implement support for :is(...) and :where(...) (#10490)

  • chore: treeshake unused store subscriptions in SSR mode (#10506)

  • fix: warn against accidental global event referenced (#10442)

  • fix: improve bind:this support for each blocks (#10510)

  • feat: implement nested CSS support (#10490)

  • breaking: encapsulate/remove selectors inside :is(...) and :where(...) (#10490)

5.0.0-next.56

Patch Changes

  • feat: add hydrate method, make hydration treeshakeable (#10497)

  • fix: makes keyed each blocks consistent between dev and prod (#10500)

  • fix: subscribe to stores in transition,animation,use directives (#10481)

5.0.0-next.55

Patch Changes

  • feat: derive destructured derived objects values (#10488)

  • fix: prevent infinite loop when writing to store using shorthand (#10477)

  • fix: add proper source map support (#10459)

5.0.0-next.54

Patch Changes

  • breaking: replace $derived.call with $derived.by (#10445)

  • fix: improve global transition outro handling (#10474)

5.0.0-next.53

Patch Changes

  • fix: only throw bind error when not passing a value (#10090)

  • fix: improve global transition handling of effect cleardown (#10469)

  • fix: improve handling of object property deletions (#10456)

  • fix: ensure inspect fires on prop changes (#10468)

5.0.0-next.52

Patch Changes

  • fix: use hybrid scoping strategy for consistent specificity increase (#10443)

  • fix: throw validation error when binding to each argument in runes mode (#10441)

  • fix: make CSS animation declaration transformation more robust (#10432)

  • fix: handle sole empty expression tags (#10433)

5.0.0-next.51

Patch Changes

  • fix: align beforeUpdate/afterUpdate behavior better with that in Svelte 4 (#10408)

  • fix: disallow exporting props, derived and reassigned state from within components (#10430)

  • fix: improve indexed each array reconcilation (#10422)

  • fix: add compiler error for each block mutations in runes mode (#10428)

5.0.0-next.50

Patch Changes

  • fix: set open binding value in <details> (#10413)

5.0.0-next.49

Patch Changes

  • fix: properly analyze group expressions (#10410)

  • fix: handle nested script tags (#10416)

  • fix: only update lazy properties that have actually changed (#10415)

  • fix: correctly determine binding scope of let: directives (#10395)

  • fix: run onDestroy callbacks during SSR (#10297)

5.0.0-next.48

Patch Changes

  • chore: bump zimmerframe to fix bugs introduced in previous version (#10405)

5.0.0-next.47

Patch Changes

5.0.0-next.46

Patch Changes

  • fix: allow let: directives on slot elements (#10391)

  • fix: repair each block length mismatches during hydration (#10398)

5.0.0-next.45

Patch Changes

  • fix: correctly determine bind:group members (#10368)

  • fix: make inline doc links valid (#10365)

5.0.0-next.44

Patch Changes

  • fix: bindings with typescript assertions (#10329)

  • fix: only reuse state proxies that belong to the current value (#10343)

5.0.0-next.43

Patch Changes

  • fix: insert empty text nodes while hydrating, if necessary (#9729)

  • fix: correctly update tweened store initialized with nullish value (#10356)

5.0.0-next.42

Patch Changes

  • breaking: snippets can now take multiple arguments, support default parameters. Because of this, the type signature has changed (#9988)

  • Use generic T as the return type for $derived.call() (#10349)

  • fix: replace TODO errors (#10326)

  • fix: add proper typings for $derived.call (6145be5c695a063c70944272a42d9c63fdd71d64)

  • fix: improve handling of unowned derived signals (#10342)

  • fix: correctly reference destructured derived binding in event handler (#10333)

  • fix: add scrollend event type (#10337)

  • fix: improve unstate handling of non enumerable properties (#10348)

5.0.0-next.41

Patch Changes

  • fix: handle event delegation correctly when having sibling event listeners (#10307)

  • chore: add $derived.call rune (#10240)

5.0.0-next.40

Patch Changes

  • chore: cleanup derived destruction (#10303)

  • fix: correctly parse at-rules containing special characters in strings (#10221)

  • fix: Add missing miter-clip and arcs values to stroke-linejoin attribute (#10141)

5.0.0-next.39

Patch Changes

  • fix: handle deep assignments to $state() class properties correctly (#10289)

  • fix: prevent false positive store error in module script (#10291)

  • fix: allow type selector in :global() when it's at a start of a compound selector (#10287)

5.0.0-next.38

Patch Changes

5.0.0-next.37

Patch Changes

  • fix: skip certain slot validations for custom elements (#10207)

  • fix: add compiler error for invalid <p> contents (#10201)

  • fix: correctly apply event.currentTarget (#10216)

  • fix: ensure derived signals properly capture consumers (#10213)

5.0.0-next.36

Patch Changes

  • fix: transform textarea and contenteditable binding expressions (#10187)

  • fix: improve transition outro easing (#10190)

  • fix: ensure unstate() only deeply applies to plain objects and arrays (#10191)

  • fix: improve invalid nested interactive element error (#10199)

  • fix: react to mutated slot props in legacy mode (#10197)

5.0.0-next.35

Patch Changes

  • fix: improve nested effect heuristics (#10171)

  • fix: simplify event delegation logic, only delegate event attributes (#10169)

  • fix: prevent transition action overfiring (#10163)

  • fix: improve event handling compatibility with delegation (#10168)

  • fix: ensure topological order for render effects (#10175)

5.0.0-next.34

Patch Changes

  • fix: make @types/estree a dependency (#10150)

  • fix: improve intro transitions on dynamic mount (#10162)

  • fix: improve code generation (#10156)

  • fix: adjust $inspect.with type (c7cb90c91)

  • fix: improve how transitions are handled on mount (#10157)

  • fix: adjust parse return type (a271878ab)

5.0.0-next.33

Patch Changes

  • fix: improve ssr template code generation (#10151)

  • fix: improve template literal expression output generation (#10147)

5.0.0-next.32

Patch Changes

  • fix: improve outro behavior with transitions (#10139)

  • chore: remove internal functions from svelte/transition exports (#10132)

  • fix: further animation transition improvements (#10138)

  • fix: improve animation transition heuristics (#10119)

5.0.0-next.31

Patch Changes

  • fix: infer svg namespace correctly (#10027)

  • fix: keep intermediate number value representations (d171a39b0)

  • feat: allow modifiying derived props (#10080)

  • fix: improve signal consumer tracking behavior (#10121)

  • fix: support async/await in destructuring assignments (#9962)

  • fix: take into account member expressions when determining legacy reactive dependencies (#10128)

  • fix: make ComponentType generic optional (14dbc1be1)

  • fix: silence false positive state warning (dda4ad510)

  • fix: ensure nested blocks are inert during outro transitions (#10126)

  • fix: improve ssr template literal generation (#10127)

5.0.0-next.30

Patch Changes

  • fix: allow transition undefined payload (#10117)

  • fix: apply key animations on proxied arrays (#10113)

  • fix: improve internal signal dependency checking logic (#10111)

  • fix: correctly call exported state (#10114)

  • fix: take into account setters when spreading and binding (#10091)

  • fix: transform {@render ...} expression (#10116)

5.0.0-next.29

Patch Changes

  • fix: improve text node output (#10081)

  • fix: improve style parser whitespace handling (#10077)

  • fix: allow input elements within button elements (#10083)

  • fix: support TypeScript's satisfies operator (#10068)

  • fix: provide unstate in server environment (877ff1ee7)

  • fix: improve key block reactivity detection (#10092)

  • fix: always treat spread attributes as reactive and separate them if needed (#10071)

5.0.0-next.28

Patch Changes

  • fix: deeply unstate objects passed to inspect (#10056)

  • fix: handle delegated events of elements moved outside the container (#10060)

  • fix: improve script lang attribute detection (#10046)

  • fix: improve pseudo class parsing (#10055)

  • fix: add types for popover attributes and events (#10041)

  • fix: skip generating $.proxy() calls for unary and binary expressions (#9979)

  • fix: allow pseudo classes after :global(..) (#10055)

  • fix: bail-out event handler referencing each index (#10063)

  • fix: parse :nth-of-type(xn+y) correctly (#9970)

  • fix: ensure if block is executed in correct order (#10053)

5.0.0-next.27

Patch Changes

  • fix: evaluate transition parameters when the transition runs (#9836)

  • feat: add $state.frozen rune (#9851)

  • fix: correctly transform prop fallback values that use other props (#9985)

  • fix: escape template literal characters in text sequences (#9973)

  • fix: inject comment in place of <noscript> in client output (#9953)

5.0.0-next.26

Patch Changes

  • fix: better handle array property deletion reactivity (#9921)

  • fix: improve event delegation handler hoisting (#9929)

5.0.0-next.25

Patch Changes

  • fix: improve whitespace handling (#9912)

  • fix: improve each block fallback handling (#9914)

  • fix: cleanup each block animations on destroy (#9917)

5.0.0-next.24

Patch Changes

  • fix: improve props aliasing (#9900)

  • feat: add support for {@const} inside snippet block (#9904)

  • fix: improve attribute directive reactivity detection (#9907)

  • fix: improve $inspect batching (#9902)

  • chore: improve readonly prop messaging (#9901)

  • fix: better support for top-level snippet declarations (#9898)

5.0.0-next.23

Patch Changes

  • feat: add gamepadconnected and gamepaddisconnected events (#9861)

  • fix: improve unstate type definition (#9895)

  • fix: correctly reflect readonly proxy marker (#9893)

  • chore: improve each block fast-path heuristic (#9855)

  • fix: improve html tag svg behaviour (#9894)

  • fix: ensure class constructor values are proxied (#9888)

  • fix: improve each block index handling (#9889)

5.0.0-next.22

Patch Changes

  • fix: handle event hoisting props referencing (#9846)

  • fix: support dynamic transition functions (#9844)

  • fix: ensure action function returns object (#9848)

5.0.0-next.21

Patch Changes

  • chore: refactor props handling (#9826)

  • fix: improve each key animations (#9842)

  • chore: avoid creating thunk for call expressions when appropriate (#9841)

  • fix: improve signal consumer removal logic (#9837)

  • fix: ensure computed props are wrapped in derived (#9835)

  • fix: better handle unowned derived signals (#9832)

  • fix: improve each block with animate (#9839)

  • breaking: change $inspect API (#9838)

5.0.0-next.20

Patch Changes

  • fix: better readonly checks for proxies (#9808)

  • fix: prevent infinite loops stemming from invalidation method (#9811)

  • fix: improve non state referenced warning (#9809)

  • fix: reuse existing proxy when object has multiple references (#9821)

  • fix: improve consistency issues around binding invalidation (#9810)

  • fix: tweak css nth regex (#9806)

  • fix: adjust children snippet default type (dcdd64548)

  • fix: correctly apply scope on component children (#9824)

5.0.0-next.19

Patch Changes

  • feat: add unstate utility function (#9776)

  • fix: ensure proxied array length is updated (#9782)

  • chore: fix compiler errors test suite (#9754)

  • fix: ensure transitions properly cancel on completion (#9778)

  • feat: make fallback prop values readonly (#9789)

  • fix: tweak invalid dollar prefix rules around function args (#9792)

  • fix: ensure generated code does not use keywords as variable names (#9790)

  • feat: disallow fallback values with bindings in runes mode (#9784)

  • fix: apply event attribute validation to elements only (#9772)

  • fix: handle css nth-selector syntax (#9754)

  • feat: throw descriptive error for using runes globals outside of Svelte-compiled files (#9773)

5.0.0-next.18

Patch Changes

  • feat: proxied state (#9739)

  • chore: more validation errors (#9723)

  • fix: allow duplicate snippet declaration names (#9759)

  • fix: ensure computed props are cached with derived (#9757)

  • fix: ensure event handlers containing arguments are not hoisted (#9758)

5.0.0-next.17

Patch Changes

  • fix: improve $inspect type definition (#9731)

  • fix: correctly inspect derived values (#9731)

5.0.0-next.16

Patch Changes

  • fix: delegate events on elements with bind-this (#9696)

  • fix: ensure implicit children snippet renders correctly (#9706)

  • fix: ensure $slots exists in runes mode (#9718)

  • fix: allow bind:this with dynamic type on inputs (#9713)

  • fix: port over props that were set prior to initialisation (#9704)

  • feat: $inspect rune (#9705)

  • fix: keep fallback value after spread update not setting that prop (#9717)

  • fix: tweak const tag parsing (#9715)

  • chore: remove redundant hydration code (#9698)

  • fix: improve template text node serialization (#9722)

  • fix: improve infinite loop capturing (#9721)

5.0.0-next.15

Patch Changes

  • fix: add children to element typings (#9679)

  • fix: handle ts expressions when dealing with runes (#9681)

5.0.0-next.14

Patch Changes

  • feat: warn on references to mutated non-state in template (#9669)

  • fix: prevent reactive snippet from reinitializing unnecessarily (#9665)

  • fix: take event attributes into account when checking a11y (#9664)

  • feat: add $effect.root rune (#9638)

  • feat: support type definition in {@const} (#9609)

  • feat: ignore src, srcset, and href attributes when hydrating (#9662)

  • chore: bump esrap (#9649)

  • chore: improve <svelte:element> generated code (#9648)

  • chore: prevent some unused variable creation (#9571)

5.0.0-next.13

Patch Changes

  • fix: apply keyed validation only for keyed each (#9641)

  • fix: omit this bind this arg if we know it's not a signal (#9635)

  • fix: improve each block index handling (#9644)

5.0.0-next.12

Patch Changes

  • fix: adjust mount and createRoot types (63e583184)

  • fix: remove constructor overload (cb4b1f0a1)

  • fix: type-level back-compat for default slot and children prop (a3bc7d569)

5.0.0-next.11

Patch Changes

  • feat: add type of $effect.active (#9624)

  • fix: correct bind this multiple bindings (#9617)

  • chore: reuse common templates (#9601)

  • fix: handle undefined bubble events (#9614)

  • fix: dont error on stores looking like runes when runes explicitly turned off (#9615)

  • fix: improve member expression mutation logic (#9625)

  • chore: untrack keyed validation logic (#9618)

  • fix: ensure snippets have correct scope (#9623)

  • fix: better attribute casing logic (#9626)

5.0.0-next.10

Patch Changes

  • chore: add inline new class warning (#9583)

  • fix: prevent false positives when detecting runes mode (#9599)

  • fix: deconflict generated names against globals (#9570)

  • chore: bump esrap (#9590)

  • feat: add $effect.active rune (#9591)

  • feat: add Snippet type (#9584)

  • fix: adjust event delegation heuristics (#9581)

  • chore: remove unused code (#9593)

  • fix: adjust regex (#9572)

5.0.0-next.9

Patch Changes

  • chore: more transition code-golfing (#9536)

  • feat: native TypeScript support (#9482)

5.0.0-next.8

Patch Changes

  • chore: rename internal object properties (#9532)

5.0.0-next.7

Patch Changes

  • chore: more signal perf tuning (#9531)

  • fix: address intro transition bugs (#9528)

  • chore: tweak signals for better runtime perf (#9529)

5.0.0-next.6

Patch Changes

  • fix: do not propagate global intro transitions (#9515)

5.0.0-next.5

Patch Changes

  • fix: tweak script/style tag parsing/preprocessing logic (#9502)

  • fix: emit useful error on invalid binding to derived state (#9497)

  • fix: address unowned propagation signal issue (#9510)

  • fix: add top level snippets to instance scope (#9467)

  • fix: only treat instance context exports as accessors (#9500)

  • fix: allow setting files binding for <input type="file" /> (#9463)

  • fix: add missing visitor for assignments during compilation (#9511)

5.0.0-next.4

Patch Changes

  • revert: address bug in before/after update (#9480)

5.0.0-next.3

Patch Changes

  • chore: use internal get_descriptors helper (#9389)

  • chore: improve bundle code size (#9476)

  • fix: coerce attribute value to string before comparison (#9475)

  • fix: handle private fields in class in .svelte.js files (#9394)

  • chore: make operations lazy (#9468)

  • fix: allow svelte:self in snippets (#9439)

  • fix: check that snippet is not rendered as a component (#9423)

  • patch: ensure keyed each block fallback to indexed each block (#9441)

  • fix: allow member access on directives (#9462)

  • fix: handle dynamic selects with falsy select values (#9471)

  • fix: ensure dynamic attributes containing call expressions update (#9443)

  • fix: corrects a beforeUpdate/afterUpdate bug (#9448)

  • fix: add missing files binding (#9415)

  • fix: only escape attribute values for elements, not components (#9456)

  • fix: handle event attribute spreading with event delegation (#9433)

  • fix: support class exports (#9465)

  • fix: treat slot the same as other props (#9457)

5.0.0-next.2

Patch Changes

  • breaking: remove selector api (#9426)

  • fix: correct update_block index type (#9425)

  • fix: tighten up signals implementation (#9417)

  • fix: exclude internal props from spread attributes (#9384)

  • chore: improve keyblock treeshaking (#9422)

  • breaking: remove Component type, keep using SvelteComponent instead (#9413)

  • fix: add snippet marker symbol to children prop (#9395)

5.0.0-next.1

Patch Changes

  • breaking: svelte 5 alpha (#9381)