Svelte changelog
2.15.3
2.15.2
- Expose
stats.props
(#1837)
2.15.1
- Don't throw missing store error when store is declared in component (#1828)
2.15.0
- Event modifiers (#1088)
- Wheel and touch events are passive by default (#1088)
- Add
<svelte:document>
tag (#1484)
- Include binding values in server-rendered HTML (#1205)
- Remove attributes when value is undefined/null (#1434)
- Initialise window scroll from component data (#938)
- Remove references to unused properties in generated code (#1187)
- Add TypeScript definitions for store (#1207)
- Better error for missing store (#1807)
2.14.3
- Account for directive dependencies (#1793)
- Detach each block iterations in each blocks with no update method (#1795)
2.14.2
- Fix issue with nested
{#if}
blocks (#1780)
2.14.1
- Fix block insertion order regression (#1778)
- Fix blocks inside
<svelte:head>
(#1774)
- Better attribute parsing (#1772)
- Fix parse errors inside directives (#1788)
2.14.0
- Refactor internals (#1678)
- Deprecate
onerror
option (#1745)
- Handle edge cases where
destroy
is called before mount
(#1653)
- Make
scroll
binding more efficient (#1579)
- Make 'readonly property' store error more informative (#1761)
2.13.5
- Fix missing dependencies in shorthand class directives (#1739)
2.13.4
- Support dynamic
import()
in template expressions
2.13.3
- Fix bug with keyed each blocks and nested components (#1706)
2.13.2
- Coalesce simultaneous store/component updates (#1520)
- Fix nested transitions preventing each block item removal (#1617)
- Add
class
directive shorthand and encapsulate styles (#1695)
- Prevent erroneous updates of bound inputs (#1699)
2.13.1
- Coerce second argument to
toggleClass
(#1685)
2.13.0
- Add
class
directive (#890)
- Remove sourcemaps from npm package (#1690)
2.12.1
- Allow actions to take any expression (#1676)
- Run transitions in component context (#1675)
- Correctly set select value on mount (#1666)
- Support
{@debug}
in SSR (#1659)
- Don't treat
as empty whitespace (#1658)
- Fix outros for if blocks with no else (#1688)
- Set
style.cssText
in spread attributes (#1684)
2.12.0
- Initialise actions on mount rather than hydrate (#1653)
- Allow non-existent components to be destroyed (#1677)
- Pass AMD ID from CLI correctly (#1672)
- Minor AST tweaks (#1673, #1674)
- Reduce code duplication in component initialisation (#1670)
2.11.0
- Add
--shared
CLI option (#1649)
- Run first
onstate
before fragment is rendered (#1522)
- Exclude current computed prop from state object (#1544)
2.10.1
- Add sourcemaps to
{@debug}
tags (#1647)
2.10.0
- Add a
{@debug}
tag, for inspecting values in templates in dev mode (#1635)
- Fix dimension bindings in iOS (#1642)
2.9.11
- Pass props to custom elements rather than setting attributes, where appropriate (#875)
- Handle whitespace in lists consistently between SSR and DOM renderers (#1637)
- Improve error for invalid
ref
names (#1613)
2.9.10
- Handle
null
consistently in tags (#1598)
- Support object rest in computed properties (#1540)
- Always update dynamic components when expression changes (#1621)
- Encapsulate local styles inside global styles (#1618)
2.9.9
- Fix attribute name regex (#1623)
2.9.8
- Sanitize spread attributes in SSR — fixes vulnerability CVE-2018-6341 (#1623)
2.9.7
- Allow
<input type=file bind:files>
(#1608)
- Ensure child window exists before removing listener in
addResizeHandler
(#1600)
- Handle transitions in
else
block (#1589)
2.9.6
- Provide more useful error if SSR component attempts to render non-SSR component (#1605)
2.9.5
- Null out refs to dynamic components (#1596)
2.9.4
- Make identifier optional for
then
and catch
blocks (#1507)
- Group outros correctly (#1575)
2.9.3
- Fix bug when an each block contains transitions but its else branch does not (#1559)
- If an event handler throws an exception, don't block all future calls to that handler (#1573)
2.9.2
- Fix conflict when using multiple if-else blocks, some of which use outros and some of which do not (#1580)
- Fix some cases where
.innerHTML
was being used to create child elements when it shouldn't (#1581)
2.9.1
- Use
template.content
instead of template
where appropriate (#1571)
2.9.0
- Play outro transitions on
<svelte:component>
if nestedTransitions
is true (#1568)
- Allow illegal identifiers to be component prop names, for e.g. spreading
data-foo
props (#887)
- Abort transition when node is detached (#1561)
- Only include
transitionManager
when necessary (#1514)
2.8.1
- Fix prefixed animation name replacement (#1556)
2.8.0
- Correctly set store on nested components (to parent store, not root store) (#1538)
2.7.2
- Prevent unnecessary remounts (#1527)
- Allow
refs.*
as callee (#1526)
- Handle empty lists when outroing (#1532)
2.7.1
- Fix spread props with multiple dependencies (#1515)
2.7.0
- Add
__svelte_meta
object to elements in dev mode, containing source info (#1499)
- Fix
bind:online
in dev mode (#1502)
- Update v1 warnings/errors (#1508)
- Transform prefixed keyframes (#1504)
2.6.6
- Fix nested transition bug (#1497)
2.6.5
- Handle cases where only some
if
block branches have outros (#1492)
2.6.4
- Web worker support (#1487)
- Update dynamic component bindings when component changes (#1489)
2.6.3
- Nested transitions respect
skipIntroByDefault
(#1460)
- Always create outro for top-level block (#1470)
2.6.2
- Fix spread+bindings on dynamic components (#1433)
- Abort in-progress animations, if a new one starts (#1458)
- Allow animations to be parameterised (#1462)
2.6.1
- Absolutely position outroing animated nodes (#1457)
2.6.0
- Add
animate
directive (#1454)
- Add
skipIntroByDefault
compiler option and intro: true
init option (#1448)
- Add
nestedTransitions
compiler option (#1451)
- Component outros, if
nestedTransitions
is true (#1211)
- Allow transition functions to return a function, for inter-transition coordination (#1453)
- Pass
1 - t
as second argument to transition functions (#1452)
2.5.1
- Add new ARIA attributes (#1436)
- Add
Promise
to whitelisted globals (#1441)
- Allow spaces around reserved keyword attributes (#1445)
2.5.0
- Support transitions in
await
blocks (#956)
- Abort outros if block is recreated (#1425)
- Wait until transitions have completed before removing styles (#648)
- Support event shorthand on dynamic components (#1427)
- Various codegen improvements (#1419, #1421, #1422, #1424)
- Correctly handle
await
blocks with no dynamic content (#1417)
- Allow spread props on elements with static attribute tests (#1429)
2.4.4
- Declare missing variable in Store (#1415)
- ALways declare spread levels (#1413)
2.4.3
ref
directives prevent HTMLified content (#1407)
- Store computed properties update components immediately upon declaration (#1327)
2.4.2
- Evaluate
each
key in child scope (#1397)
- Prevent false negatives and positives when detecting cyclical computed store properties (#1399)
- Only update dynamic component props (#1394)
2.4.1
- Fix DOM event context (#1390)
2.4.0
- Integrate CLI (#1360)
- Allow arbitrary destructuring for each block items, with binding (#1385)
- Each block keys can use arbitrary expressions (#703)
bind:offsetWidth
, bind:offsetHeight
, bind:clientWidth
and bind:clientHeight
(#984)
- Leaner generated code for
each
blocks (#1287)
2.3.0
- Allow computed properties to have entire state object as dependency (#1303)
- Fix
stats
when options.generate
is false
(#1368)
- Assign custom methods to custom elements (#1369)
- Fix
this
value in custom event handlers (#1297)
- Re-evaluate
each
values lazily (#1286)
- Preserve outer context in
await
blocks (#1251)
2.2.0
- Internal refactoring (#1367)
2.1.1
- Report initial
changed
based on state, not expected props (#1356)
- Set state to empty object, not null, on destroy (#1354)
- Prevent stale state in component event handlers (#1353)
2.1.0
- Allow shorthand imports (#1038)
- Update spread props inside each blocks (#1337)
2.0.0
See the blog post for information on how to upgrade your apps
- New template syntax (#1318)
- Emit ES2015 code, not ES5 (#1348)
- Add
onstate
and onupdate
hooks, remove component.observe
method (#1197)
- Use destructuring syntax for computed properties (#1069
- Change signature of
svelte.compile
(#1298)
- Remove
validate
and Stylesheet
from public API (#1348)
- Don't typecast numeric attributes (#657)
- Always compile with
Store
support, and cascading disabled (#1348)
- Remove unused
hash
property from AST (#1348)
- Rename
loc
property to start
in warnings and errors (#1348)
1.64.1
- Fix computed properties in SSR renderer (#1349)
1.64.0
- Deprecate passing a string argument to
component.get
(#1347)
1.63.1
- Allow
observe
method to be overwritten
1.63.0
- Add
onstate
and onupdate
lifecycle hooks and deprecate component.observe
(#1197)
- Add
on
and fire
to Store
, deprecate onchange
and observe
(#1344)
- Require computed properties to have destructured argument in v2 mode (#1069)
1.62.0
- Add a
code
field to errors and warnings (#474)
- When using v2 syntax, do not use interpolation in non-root
<style>
tags (#1339)
1.61.0
- Support v2 syntax with
parser: 'v2'
option (#1318)
1.60.3
- Fix validation of
multiple
attributes on bound <select>
elements (#1331)
1.60.2
- Fix order of insertions for keyed each blocks with siblings (#1306)
- Bail out of CSS DCE if element has spread attribute (#1300)
- Allow
console
etc in component events (#1278)
- Deconflict against inherited contexts (#1275)
- Make CSS DCE case insensitive (#1269)
- Error on dynamic
multiple
attribute for bound select (#1270)
- Allow custom events on
<:Window>
(#1268)
1.60.1
- Fix spread updates on dynamic components (#1307)
1.60.0
- Spread properties (#195)
svelte.compile
returns an object with { js, css, ast }
properties, where js
and css
are { code, map }
objects (#1298)
- Fixed broken compile errors when using Rollup (#1296)
1.59.0
- Deprecate
teardown
in custom event handlers (#531)
- Allow static content in keyed
each
block (#1291)
- Allow empty content in keyed
each
block (#1295)
- Only delete applicable transitions (#1290)
1.58.5
- Allow backtick string literals for
svg
, tag
, and props
properties (#1284)
- Fix removal of transition styles under Firefox (#1288)
1.58.4
- Fix initial state regression (#1283)
1.58.3
- Actions run in the context of the component (#1279)
- Set refs when mounting dynamic components (#1280)
1.58.2
- (1.58.1 failed to publish)
1.58.1
- Actions (#1247)
- Support
preserveComments
option in SSR mode (#1265)
- Fix performance regression (#1274)
1.58.0
- Fast row swapping (#588)
- Better error messages for invalid directives (#1242)
- Fix local context variable bugs (#1240, #1254)
- Skip missing property warnings for computed/global properties in dev mode (#1246)
- Add end position to warnings (#1250)
1.57.4
- Deconflict context names (#1229)
- Use
setAttribute
to set input types (#1209)
- Scale transition duration correctly (#1221)
1.57.3
- Fix scoped CSS on static child elements (#1223)
1.57.2
- Fix scoped CSS on SVG elements (#1224)
1.57.1
- Add each_value to contextProps (#1206)
1.57.0
- Use classes (not attributes) for style encapsulation, and base36-encode hashes (#1118)
1.56.4
- Allow
component
and state
to be context names (#1213)
- Don't remove
@supports
rules when cascade: false
(#1215)
1.56.3
- Top-level transitions work inside nested components (#1188)
- Always use internal
_mount
method (#1201)
1.56.2
- Null out
key
for children of keyed each blocks (#1202)
1.56.1
- Fix if-in-each bug (#1195)
- Cross-browser
scrollX
/scrollY
support (#1175)
1.56.0
- Internal refactor (#1122)
- Use correct context for component events (#1184)
- Allow observing
$foo
in dev mode (#1181)
- Handle dynamic data in default slot (#1144)
1.55.1
- Fix cancellation of store
onchange
handlers (#1177)
- Write
["default"]
instead of .default
in legacy mode (#1166)
- Upgrade Acorn (#1182)
- Don't warn about capitalisation if
options.name
begins with non-alphabetical character (#1179)
1.55.0
- Add
immutable
compiler option for Svelte and runtime option for Store
(#1146)
- Fix component store bindings (#1100)
- Fire
oncreate
when custom element is attached (#1117)
- Downgrade empty blocks to a warning (#1156)
- Error on unclosed comment (#1156)
1.54.2
- Prevent
await
blocks using stale state (#1131)
- Prevent erroneous missing data warnings for custom elements (#1065)
- Remove empty selectors in prod mode (#1138)
- Escape attribute values in SSR mode (#1155)
- Remove
<noscript>
elements in DOM mode (#1108)
- Allow hydration of non-root
<script>
/<style>
tags (#1163)
- Allow interpolation in non-root
<style>
tags (#1163)
1.54.1
- Hoist destructured references (#1139)
- Add
bind:volume
for media elements (#1143)
1.54.0
- Run
oncreate
hooks depth-first, top-to-bottom (#1135)
- Render boolean attributes correctly in SSR mode (#1109)
- Add
feed
aria role to expected roles when doing a11y checks (#1124)
- More complete fix for case sensitive attributes (#1062)
- Handle CLRF line endings in await block comments (#1132)
1.53.0
- Base scoping selectors on
<style>
contents alone (#1091)
1.52.0
- Deconflict referenced globals (#1079)
- Validate contents of
await
blocks (#1061)
- Fire
oncreate
for components in await
blocks (#1061)
- Automatically fix attribute casing (#1062)
- Fix escaping in
<script>
and <style>
(#1082)
- Error if invalid characters are used in computed properties, and allow any valid identifier in props (#1083)
- Don't run a11y tests on components (#1110)
- Respect
store
option in SSR mode (#1107)
1.51.1
- Only escape <, > and & characters (#1082)
1.51.0
- Lock
scroll
bindings (#1071)
- Escape HTML entities when compiling to static HTML (#1066)
- Apply a11y warnings to SVG
<a>
attributes with xlink:href
(#1008)
1.50.1
- Prevent main fragment being created twice in custom elements (#1064)
1.50.0
- Detect unused/misplaced components (#1039)
- Warn on unused event definitions/transitions (#1051)
- Remove whitespace inside
<:Head>
(#1026)
- Optimise
<title>
(#1027)
- Add
bind: false
option to disable two-way binding (#54)
1.49.3
- Return
html
from SSR compiler render().toString()
methods (#1044)
- Correctly reinitialise dynamic components (#1040)
- Allow
<option>
outside <select>
(#1022)
- Fix data references in await-block event handlers (#1032)
1.49.2
- Add
store.umd.js
(#967)
- Warn on use of
this
inside computed properties (#1033)
1.49.1
- Pass
store
to children in SSR mode (#1029)
1.49.0
- Support
store
as a component property (#1028)
1.48.0
- Added
<:Head>
component for injecting contents into document head (#1013))
- SSR
render(...)
method now returns a { html, css: { code, map }, head }
object (#1013)
- SSR
renderCss(...)
method is deprecated (#1013)
- Add a
preload
function to components (#1015)
- Expose
this.root
on nested components (#1023)
1.47.2
- Deconflict computed properties against arguments to
_recompute
(#1012)
- Allow
await
blocks in slots (#1018)
- Allow components without slots to have whitespace as only child (#1007)
- Correctly set
toString
on CompileError
(#1016)
1.47.1
- Sanitize filenames in SSR mode (#1005)
1.47.0
- Support dynamic
import(...)
inside <script>
tags (#1003)
1.46.1
await...then
shorthand (#957)
- Allow dynamic components inside elements (#993)
- Don't use
dataset
on SVG nodes (#982)
- Fix erroneous
<figcaption>
a11y warning (#991)
- Handle empty classes when pruning unused selectors (#978)
- Better trimming of SSR'd output (#976)
- Don't add
event
to expectedProperties
(#972)
- Emit error on bad
set
arguments in dev mode (#990)
1.46.0
- Pass
filename
through to preprocessors (#983)
1.45.0
- Dynamic components (#971)
1.44.2
- Fix
await
blocks with siblings (#974)
- Fix
await
blocks inside if
blocks (#975)
1.44.1
- Fix bidirectional transitions that reference state (#962)
1.44.0
- Add
svelte.preprocess
(#181, #876)
- Add
{{#await ...}}
blocks (#654)
1.43.1
- Fix parameterised transitions (#962)
- Prevent boolean attributes breaking estree-walker expectations (#961)
- Throw error on cyclical store computations (#964)
1.43.0
- Export
Store
class to manage global state (#930)
- Recognise
aria-current
(#953)
- Support SSR register options including
extensions
(#939)
- Friendlier error for illegal contexts (#934)
- Remove whitespace around
<:Window>
components (#943)
1.42.1
- Correctly append items inside a slotted
each
block (#932)
- Fix
<:Window bind:online/>
(#936)
- Attach globals to state upon initialisation (#908)
1.42.0
- Implement
indeterminate
binding for checkbox inputs (#910)
- Use
<option>
children as value
attribute if none exists (#928)
- Allow quoted property names in default export and sub-properties (#914)
- Various improvements to generated code for bindings
1.41.4
- Handle self-destructive bindings (#917)
- Prevent
innerHTML
with <option>
elements (#915)
- Use
dataset
unless legacy
is true (#858)
- Add
prepare
script to facilitate installing from git (#923)
1.41.3
- Prevent argument name clashes (#911)
- Fix UMD factory arguments (#918)
- Don't attempt to set computed values (#893)
- Fix TypeScript build error (#919)
1.41.2
- Handle attribute selectors with no value (#905)
- Retain
async
keyword when extracting functions (#904)
- Shallow clone
data
on initialisation (#891)
1.41.1
- Fix updates of destructured each blocks (#897)
- Don't warn on
options.*
event handler callee (#900)
1.41.0
onwarn
and onerror
receive default handlers as second arguments (#883)
- Recognise
muted
as boolean property on <audio>
elements (#886)
- Array destructuring for
each
block contexts (#889)
1.40.2
- Ignore
@apply
and similar in CSS (#871)
- Properly escape CSS in custom elements (#872)
1.40.1
- Always use explicit closing tags with
innerHTML
(#866)
- Escape text in
textContent
and innerHTML
expressions (#868)
1.40.0
- Short fragment method names (#863)
- Extract declarations out of default export (#756)
1.39.4
- Extract shared init logic (#855)
- Allow
console.*
calls in event handlers (#782)
- Marker comments in output (#823)
- Use
textContent
and innerHTML
where appropriate (#23)
- Various improvements to generated code
1.39.3
- Allow
slot='...'
inside custom elements (#827)
- Disallow
slot='...'
inside if/each blocks (#849)
- Use correct parent node for slotted if blocks (#850)
1.39.2
- Escape CSS in shadow DOM (#840)
- Fix missing anchor bug inside SVG elements (#843)
1.39.1
- Always use anchors for slotted content (#822)
- Prevent ES6 in helpers (#838)
- Correctly determine whether to use
timeRangesToArray
(#837)
1.39.0
- Always attach fragment to shadow root (#821)
- Add
buffered
, seekable
, played
bindings to media elements (#819)
- Quote
class
properties in legacy mode (#830)
- Warn on missing
lang
attribute on <html>
(#828)
1.38.0
- Compile-time a11y warnings (#815)
- Remove redundant input blowback guards (#645)
- Use component name in debugging messages (#781)
1.37.0
- Experimental support for compiling to custom elements (#797)
1.36.0
- Optimize
style
attributes where possible (#455)
1.35.0
set
and get
continue to work until destroy
is complete (#788)
- Observers of unchanged bound values don't fire incorrectly (#804)
- Nested components with slotted content render correctly in SSR mode (#801)
- More efficient rendering of raw and slotted content (#637)
- Handle unquoted attributes in attribute selectors (#798)
1.34.0
- Support nested
<slot>
elements (#790)
- Attach
options
to instance (#550, #777)
- Error if transitions are applied to component (#791)
- Handle CSS variables in
<style>
tag (#757)
1.33.0
- Replace
{{yield}}
with <slot>
— adds fallback content named slots, and options.slots
(#763)
1.32.0
- Allow
anchor
initialisation option, alongside target
(#784)
- Remove leading CSS selectors safely (#783)
1.31.0
- Add
legacy
compile option, which adds IE9 compatibility (#773)
1.30.0
- Update all component bindings simultaneously (#760)
- Fix
@keyframes
atrules with from
and to
selectors (#774)
1.29.3
- Only recompute tag and attribute values if they could have changed (#768)
- Fix CSS scoping with multiple levels of descendant selectors (#767)
1.29.2
- Preserve space before non-parenthesized media query expression (#759)
- Call
create()
on new iterations of static each blocks (#762)
- Use
change
events as well as input
events to bind range inputs (#740)
1.29.1
- Replace
set
and destroy
with noop
when component is destroyed (#744)
1.29.0
- Add static
setup
method (#578)
- Hoist if block selectors (#751)
- More sigil escaping fixes (#750)
1.28.1
- Fix unescaping of special words in SSR mode (#741)
1.28.0
- Support
ref:foo
as a CSS selector (#693)
- Prevent magic-string bugs by only minifying CSS combinators if
cascade: false
(#743)
- Don't throw an error if component is destroyed twice (#643)
1.27.0
- Minify CSS and remove unused styles (#697)
- Optimize ternary expressions when excluding unused CSS (#696)
- Clear refs after
ondestroy
callbacks fire (#706)
- Prevent certain forms of component binding blowback (#721)
- Use helper to encapsulate styles (#375)
- Event propagation shorthand —
on:foo
equals on:foo='fire("foo", event)
(#638)
- Allow
refs.*
in event handlers, and validate them (#686)
1.26.2
- Unescape
#
characters (#722)
1.26.1
- Fix select binding regression (#724)
1.26.0
- Enforce correct order of operations when initialising (#708 and #714)
- Ensure data is up-to-date when re-rendering yield block (#711)
- Fix unescaping of strings, preserve at-rules in CSS (#712)
- Preserve whitespace at end of each blocks (#713)
1.25.1
- Better CSS sourcemaps (#716)
1.25.0
- Fix hoisted event handlers (#699)
- Fire
intro.start
and outro.start
events (#702)
- Preserve order of components in keyed each blocks (#700)
- Add
cssMap
property to compiler output (#698)
1.24.0
- Deconflict names with imports in SSR compiler (#655)
- Improved transition performance (#670)
- Run transitions on initial render (#651)
- Add dev mode warning if
hydrate
is true but hydratable
was false (#664)
- Manipulate sourcemap to make missing loop values obvious (#683)
- Only add CSS scoping attributes where necessary (#679)
- Warn on unused CSS selectors (#678)
- Fix
<select>
binding in loop (#685)
- Prevent bindings from calling
oncreate
functions prematurely (#694)
- Simpler codegen (#673)
1.23.4
- Don't recreate if blocks incorrectly (#669)
1.23.3
- Pass parameters to
get_block
(#667)
1.23.2
- Fix if blocks being recreated on update (#665)
1.23.1
- Fix each-else blocks that are empty on initial render (#662)
1.23.0
- Hydration (#649)
- Correctly transform CSS selectors with pseudo-elements (#658)
1.22.5
- Fix nested component unmounting bug (#643)
1.22.4
- Include
ast
in svelte.compile
return value (#632)
- Set initial value of
<select>
binding, if unspecified (#639)
- Mark indirect dependencies of
<select>
bindings (i.e. the dependencies of their <option>
values) (#639)
1.22.3
- Fix nested component unmounting bug (#625)
- Allow components to have computed member expression bindings (#624)
- Handle empty
<style>
tags (#634)
- Warn on missing component (#623)
- Allow dynamic
type
attribute for unbound inputs (#620)
- Rename
addEventListener
and removeEventListener
directives (#621)
1.22.2
- Escape template strings correctly in SSR output (#616)
- Prevent magic-string deprecation warning (#617)
1.22.1
- Sanitise event handler names (#612)
1.22.0
- Symmetry between
mount
and unmount
. This is potentially a breaking change if your components import other components that were precompiled with an earlier version of Svelte (#592)
- Add
cascade
option, which prevents styles affecting child components if false
, unless selectors are wrapped in :global(...)
and keyframe declaration IDs are prefixed with -global-
. This will become the default behaviour in v2 (#583)
- Support binding to computed member expressions (#602)
- Coerce empty string in
number
/range
inputs to undefined
, not 0
(#584)
- Fix insert location of DOM elements in each/if/nested component edge cases (#610)
1.21.0
- Always use
helpers
if referenced, not just for call expressions (#575)
- Fix parsing of
<textarea>
children (#599)
- Treat
<textarea>
value attributes and children as equivalent, and fail validation if both are present (#599)
- Fix
<textarea>
SSR (#599)
- Apply CSS transition styles immediately if transition has delay (#574)
- Ensure
transitionManager
is treeshakeable (#593)
- Fix for environments where
node.style.animation
is undefined (#587)
- Fix order of operations when dealing with
<select>
elements (#590)
- Downgrade 'invalid callee' to a warning (#579)
- Convert to TypeScript (#573)
1.20.2
- Fix destruction of compound if-blocks with outros (#572)
1.20.1
- Fix insertion order of
if
blocks and their anchors (#569)
1.20.0
- Faster, better updates of keyed each blocks (#373, #543)
- Use element IDs to robustly track dynamically injected
<style>
tags (#554)
- Abort outros before corresponding intros (#546)
- Generate less code for
if
blocks with else
blocks (#540)
- Ensure
{{yield}}
block content is injected into the right place (#561)
- Simpler, more readable codegen code (#559)
- Validate transition directives (#564)
- Apply delays to bidirectional transitions (#562)
- Handle all valid HTML entities (#565)
- Fix outros on compound
if
blocks (#565)
- Validation for
<:Window>
tags (#565)
- Increased test coverage (#565)
1.19.1
- Export
generateKeyframes
, so that CSS transitions work
1.19.0
- Experimental support for transitions (#7)
- Use
querySelector(':checked')
instead of selectedOptions
(#539)
- Stringify helpers before bundling them, to avoid renaming errors (#538)
1.18.2
- Parenthesize if-block conditions (#532)
- Fix parsing of parenthesized expressions (#534)
- Fix error on
bind:checked
that doesn't belong to a checkbox input (#529)
1.18.1
- Allow
destroy()
in event handlers (#523)
- Fix bug with
{{yield}}
blocks following elements (#524)
1.18.0
- Visit
<select>
attributes after children, to ensure options are in the right state (#521)
- Use sibling elements as anchors rather than creating comment nodes wherever possible (#3)
1.17.2
- Replace bad characters when creating variable names based on element names (#516)
1.17.1
- Fixes for static each-else and yield blocks (#509), (#514)
- Code generation tweaks (#504), (#507)
1.17.0
- Add
currentTime
, duration
and paused
bindings for media elements (#406)
- Don't treat helpers as dependencies (#492)
- Allow
<:Window>
event handlers to access component state (#497)
- Allow two-way binding to properties named 'component' (#495)
- Group checkbox bindings correctly, to avoid erroneously unchecking siblings (#498)
- Validate two-way bindings (#494)
- Allow dynamic each-block to have static else-block (#501)
- Initialise
<select>
value correctly (#502)
1.16.0
- Better code generation (#489), (#490), (#491)
- Prevent binding blowback on initial render (#488)
1.15.1
- Clone data before merging it with state (#479)
- Apply binding event handlers before user event handlers (#486)
1.15.0
- Dev mode — downgrade 'missing data' to a warning, and ignore whitelisted globals (#475)
- Fix
<select>
value binding when options are updated late (#476)
- Throw at compile time if event handler references invalid callee (#473)
- Check for helper function purity (#473)
- Validate
namespace
option (#473)
1.14.1
- Replace bad characters when creating variable names based on attributes (#470)
1.14.0
- Better guard against naming conflicts (#465)
- Better error if getters and setters are used with
methods
(#425)
- Don't create whitespace nodes inside elements that can't use them (#189)
- Collapse consecutive
if
statements with the same condition (#450)
- Window
scroll
bindings are bidirectional (#404)
- Add
bind:online
to window (#404)
- In dev mode, throw if read-only properties are set (#404)
- Prevent conflicts with component name (#464)
- Ensure event handler names are deconflicted (#466)
1.13.7
- Fix observers —
defer: true
now triggers callback after DOM is updated (#441)
- Handle empty
computed
property (#452)
- Correctly bind one-way
<select>
value attributes with objects (#423)
- Hoist event handlers inside each blocks, where possible (#456)
- Don't bind event handler callbacks (#433)
- Internal refactoring and neater code generation (#453)
1.13.6
- Use
assign
helper instead of Object.assign
for better performance and legacy compatibility (#431)
- Improved code generation (#419), (#440), (#442)
1.13.5
- Read
range
and number
input values as numbers (#436)
- Better error for
bind:value='{{foo}}'
(#437)
1.13.4
- Prevent unclosed
<script>
tag causing infinite loop (#435)
1.13.3
- Correctly handle
{{true}}
, {{false}}
and {{null}}
(#424)
- Update
<select>
value attributes correctly (#423)
- Bind custom event handler callbacks (#428)
- Disallow
import root
(#430)
- Prevent component bindings mutating the wrong object (#432)
1.13.2
- Fix deep component bindings (#420)
- Include
css
property in compiler output (#409)
- Treat functions as mutable objects when recomputing (#413
- Include magic-string in bundle (#410)
- Disable unneeded Bublé transformations for slimmer output (#411)
1.13.1
- Prevent infinite loops with pathological component bindings (#398)
- More robust deconflicting (#401)
1.13.0
- Add
<:Window>
meta tag with event listeners, and a handful of bindings (#371)
- Don't uncheck radios incorrectly (#399)
1.12.1
- Deconflict non-helper functions (
addCss
etc) (#388)
- Allow reserved words in tags, e.g.
{{class}}
(#383)
1.12.0
- Shorthand attributes —
<Widget :foo/>
is equivalent to <Widget foo='{{foo}}'/>
(#384)
- Support
bind:group
for radio and checkbox inputs (#311, #312)
- Better sourcemap support for two-way bindings
1.11.4
- Dev mode warning for bad
component.observe
arguments (#369)
- Translate
component.on('teardown', ...)
to component.on('destroy', ...)
and add dev warning (#365)
- Use shared prototype to save bytes (#378)
1.11.3
- Undo CSS behaviour change in 1.11.2 (#372)
- Pin version of css-tree (#370)
1.11.2
- Add component CSS to each document a component is rendered to (#331)
1.11.1
- Fix two-way binding for components inside
each
blocks (#356)
1.11.0
- Add
format: 'eval'
and svelte.create
, to create components directly from source code (#345)
- Node 4 compatibility (#109)
1.10.3
- Prevent
'</script>'
string occurence breaking pages (#349)
- Allow reference to whitelisted globals without properties (#333)
- Don't remove
incorrectly (#348)
let
-> var
in addCss
block (#351)
1.10.2
- Accept any case for doctype declarations (#336)
- Allow non-top-level
<script>
and <style>
tags to pass through without processing (#335)
1.10.1
- typecheck argument in _set when in dev mode (#342)
- Prevent duplicate helpers in non-shared mode (#337)
1.10.0
- Component self-references with
<:Self/>
(#51)
- Two-way binding with
<select multiple>
(#313)
1.9.1
- Better error for malformed event handlers (#220)
- Allow function expressions in tags (#269)
1.9.0
- Add development warnings (#13), (#320), (#177), (#249)
- Better error if parser encounters an unmatched closing tag (#321)
1.8.1
- Allow implicitly closed elements (#318)
- More informative error messages for unclosed elements/blocks (#258)
- Deprecate
onrender
and onteardown
in favour of oncreate
and ondestroy
(#40)
1.8.0
- Prevent duplicate imports (#308)
- Use
input
events (not change
) for all input elements other than checkbox
and radio
, and textareas (#309)
- Encapsulate keyframe declarations (#245)
1.7.1
- Deconflict imports and shared helpers (#222)
- Deconflict each-block contexts and reserved words (#222)
- Allow shorthand properties in expressions (#296)
1.7.0
- Include CSS AST in
svelte.parse
output (#302)
- Better handling of CSS parse errors (#302)
- Initialise
<select>
elements with two-way binding correctly (#301)
- Allow local context in component event handlers inside
each
blocks (#290)
- Fix two-way binding for components inside
each
blocks (#290)
1.6.11
- Initialise dynamic
<option>
value correctly (#291)
1.6.10
- Ensure
sources
and sourcesContent
are populated in sourcemaps, even if none of the original code is used (#295)
- Add
outputFilename
option to populate file
and sources
sourcemap properties correctly (#295)
1.6.9
- Don't trigger bindings for torn-down components (#277)
- SSR: Handle two-way bindings (#275)
- Improve performance by checking data has changed before updates (#279)
- Parse CSS with css-tree to prevent transformation errors with unconventional styles (#288)
1.6.8
- Always trigger
onrender
, including when change initiator is a nested component (#263)
- Handle default function parameters in computations (#274)
1.6.7
- SSR: Fix apostrophes (#267)
- Add
xmlns
attributes to SVGs (#262)
1.6.6
- Omit text from comment anchors (#247)
- Handle
xlink
attributes (#264)
1.6.5
- Handle
<!doctype>
declarations (#255)
1.6.4
- Fix updates of yields inside each blocks (20e1b05)
- SSR: Handle attributes with values that begin with a number (#248)
- Handle multiline comments in CSS (#252)
1.6.3
- Fix
{{yield}}
bugs for components inside if
and each
blocks (#230, #231)
- Set attributes on
<svg>
elements correctly (#233)
- Add
svelte.VERSION
property to compiler
1.6.2
- Use helpers for
addEventListener
, removeEventListener
, setAttribute
(#227)
- Escape
sharedPath
(#229)
- Handle attributes with values that begin with a number (#234)
- Update dependencies
1.6.1
- SSR: Handle component directives at arbitrary positions (#221)
- Provide useful feedback on invalid void closing tag (#224)
1.6.0
- Replace
standalone: false
with shared: true
, or shared: 'custom/path/to/shared.js'
(#218)
- Include
shared.js
in package
1.5.0
- Implement
standalone: false
(#9)
- SSR: Handle component directives (216)
1.4.0
1.3.1
- Remove file extensions from AMD dependencies (#144)
- Throw if
options.name
is illegal (#102)
1.3.0
- SSR compiler: Support
format
option (#196)
- SSR compiler: Don't self-close 'normal' elements (#200)
- Remove leading spaces from scoped CSS (#140)
- Internal refactoring
1.2.5
- Allow whitelisted globals in templates (#185)
- Intercept parse errors with
options.onerror
1.2.4
- SSR compiler: Implement
{{{triples}}}
(#197)
- SSR compiler: Escape HTML in tags (#197)
1.2.3
- Add support for
namespace
declaration for SVG (etc) components (#147)
- Throw error if methods or lifecycle hooks are arrow functions that use
this
or arguments
(#179)
- Use
setAttribute()
for list
attributes, to preserve link to <datalist>
(#178)
- Throw error if default export is not an object literal (#190)
- Internal refactoring
1.2.2
- Omit directives in server-side rendering (#163)
- Handle comments in SSR (#165)
- Support calling methods of
event
/this
in event handlers (#162)
- Remove
mount
from public API (#150)
1.2.1
- Server-side rendering is available as a compiler option (
generate: 'ssr'
) (#159)
- Allow call expressions where function is not in
helpers
(#163)
1.2.0
- Server-side rendering of HTML (#148) and CSS (#154)
1.1.3
- Handle
xmlns
attributes correctly (#142)
- Error on duplicate
<style>
/<script>
tags rather than failing silently (#142)
- Don't create whitespace text nodes inside SVG elements (#142)
- Require void elements to be lowercase, to eliminate confusion with components (#137)
1.1.2
- Deconflict variable names (#88, #126)
1.1.1
- Support multiple SVG elements in a component (#130)
1.1.0
- Separate fragment creation from
mount
(#91)
- Trigger
onrender
hook at correct time for nested components (#103)
- Fix keypath dynamic attributes in components (#46)
- Implement
{{yield}}
(#112)
- Optimise teardown (#99)
- Require computed properties to have at least one dependency (#115)
- Support
{{#each ...}}...{{else}}...{{/each}}
(#90)
- Triple mustaches (#35)
1.0.7
- Correctly escape HTML entities (#85)
1.0.6
- Generate useful sourcemaps (#60)
1.0.5
- Ensure compiler only generates ES5 code (#75)
get()
without arguments returns entire state object (#73)
1.0.4
- Handle empty attributes in elements and components (#63)
- Detach top-level text nodes inside departing each blocks (#62)
1.0.3
- Better generated code for
if
blocks, especially with else
/elseif
chains (#28)
- Trim unnecessary whitespace from
else
/elseif
blocks (#49)
- Handle trailing comments in script tags (#64)
1.0.2
Set style.cssText
rather than style
(#44)
1.0.1
- Preserve SVG namespace inside each blocks
- Always use
setAttribute
with SVG elements
1.0.0
- Generate AMD, CJS, IIFE and UMD builds
- Correctly insert text nodes before anchors (#31)
0.3.0
- Fix bug where departing element would unset
ref
incorrectly (#24)
- Basic template validation (#6)
- Fire
onrender
hooks once component is in DOM (#18)
- Only detach nodes when necessary to do so (#26)
0.2.2
- On second thoughts, don't transpile build. Was only really for Uglify's benefit, which is daft
0.2.1
0.2.0
- Only generate UMD build, for now
- Include dependencies in the build, treat as
devDependencies
- Faster initial render
- Parent data overrides child defaults
- Remove top-level text nodes on teardown
- Handle
readUntil
errors in parser
- Basic
<select>
binding
- Handle missing data
- Prevent infinite set/observe loops
- Add
bind:foo
shorthand
else
and elseif
blocks
- Hoist imports
0.1.1
- Support unquoted attributes
- Handle entities in attributes
- Inline nested components
fire
and on
methods
0.1.0
- Breaking change – Svelte compiler now generates constructor functions rather than factories (#2)
- SVG support
0.0.2
- First release capable of building TodoMVC
0.0.1
- Just squatting on the package name