UNPKG

125 kBMarkdownView Raw
1# Svelte changelog
2
3## 3.31.2
4
5* Rework SSR store handling to subscribe and unsubscribe as in DOM mode ([#3375](https://github.com/sveltejs/svelte/issues/3375), [#3582](https://github.com/sveltejs/svelte/issues/3582), [#3636](https://github.com/sveltejs/svelte/issues/3636))
6* Fix error when removing elements that are already transitioning out ([#5789](https://github.com/sveltejs/svelte/issues/5789), [#5808](https://github.com/sveltejs/svelte/issues/5808))
7* Fix duplicate content race condition with `{#await}` blocks and out transitions ([#5815](https://github.com/sveltejs/svelte/issues/5815))
8* Deconflict variable names used for contextual actions ([#5839](https://github.com/sveltejs/svelte/issues/5839))
9
10## 3.31.1
11
12* Fix scrolling of element with resize listener by making the `<iframe>` have `z-index: -1` ([#5448](https://github.com/sveltejs/svelte/issues/5448))
13* Fix location of automatically declared reactive variables ([#5749](https://github.com/sveltejs/svelte/issues/5749))
14* Warn when using `className` or `htmlFor` attributes ([#5777](https://github.com/sveltejs/svelte/issues/5777))
15* Fix checkbox `bind:group` in keyed `{#each}` where the array can be reordered ([#5779](https://github.com/sveltejs/svelte/issues/5779))
16* Fix checkbox `bind:group` in nested `{#each}` contexts ([#5811](https://github.com/sveltejs/svelte/issues/5811))
17* Add graphics roles as known ARIA roles ([#5822](https://github.com/sveltejs/svelte/pull/5822))
18* Fix local transitions if a parent has a cancelled outro transition ([#5829](https://github.com/sveltejs/svelte/issues/5829))
19* Support `use:obj.some.deep.function` as actions ([#5844](https://github.com/sveltejs/svelte/issues/5844))
20
21## 3.31.0
22
23* Use a separate `SvelteComponentTyped` interface for typed components ([#5738](https://github.com/sveltejs/svelte/pull/5738))
24
25## 3.30.1
26
27* Support consuming decoded sourcemaps as created by the `source-map` library's `SourceMapGenerator` ([#5722](https://github.com/sveltejs/svelte/issues/5722))
28* Actually export `hasContext` ([#5726](https://github.com/sveltejs/svelte/issues/5726))
29
30## 3.30.0
31
32* Add a typed `SvelteComponent` interface ([#5431](https://github.com/sveltejs/svelte/pull/5431))
33* Support spread into `<slot>` props ([#5456](https://github.com/sveltejs/svelte/issues/5456))
34* Fix setting reactive dependencies which don't appear in the template to `undefined` ([#5538](https://github.com/sveltejs/svelte/issues/5538))
35* Support preprocessor sourcemaps during compilation ([#5584](https://github.com/sveltejs/svelte/pull/5584))
36* Fix ordering of elements when using `{#if}` inside `{#key}` ([#5680](https://github.com/sveltejs/svelte/issues/5680))
37* Add `hasContext` lifecycle function ([#5690](https://github.com/sveltejs/svelte/pull/5690))
38* Fix missing `walk` types in `svelte/compiler` ([#5696](https://github.com/sveltejs/svelte/pull/5696))
39
40## 3.29.7
41
42* Include `./register` in exports map ([#5670](https://github.com/sveltejs/svelte/issues/5670))
43
44## 3.29.6
45
46* Include `./package.json` in export map ([#5659](https://github.com/sveltejs/svelte/issues/5659))
47
48## 3.29.5
49
50* Fix `$$props` and `$$restProps` when compiling to a custom element ([#5482](https://github.com/sveltejs/svelte/issues/5482))
51* Include an export map in `package.json` ([#5556](https://github.com/sveltejs/svelte/issues/5556))
52* Fix function calls in `<slot>` props that use contextual values ([#5565](https://github.com/sveltejs/svelte/issues/5565))
53* Fix handling aborted transitions in `{:else}` blocks ([#5573](https://github.com/sveltejs/svelte/issues/5573))
54* Add `Element` and `Node` to known globals ([#5586](https://github.com/sveltejs/svelte/issues/5586))
55* Fix `$$slots` when compiling to custom elements ([#5594](https://github.com/sveltejs/svelte/issues/5594))
56* Fix internal `import`s so that we're exposing a valid ES module ([#5617](https://github.com/sveltejs/svelte/issues/5617))
57
58## 3.29.4
59
60* Fix code generation error with `??` alongside logical operators ([#5558](https://github.com/sveltejs/svelte/issues/5558))
61
62## 3.29.3
63
64* Hopefully actually republish with proper UMD build for use in the REPL
65
66## 3.29.2
67
68* Republish with proper UMD build for use in the REPL
69
70## 3.29.1
71
72* Fix compiler hanging on `<slot slot="...">` ([#5475](https://github.com/sveltejs/svelte/issues/5475))
73* Fix types on `get` function in `svelte/store` ([#5483](https://github.com/sveltejs/svelte/pull/5483))
74* Add missing `end` field on ASTs for non-top-level `<style>` elements ([#5487](https://github.com/sveltejs/svelte/pull/5487))
75* Fix `{#if}` inside `{#await}` with destructuring ([#5508](https://github.com/sveltejs/svelte/issues/5508))
76* Fix types on lifecycle hooks ([#5529](https://github.com/sveltejs/svelte/pull/5529))
77
78## 3.29.0
79
80* Support `<slot slot="...">` ([#2079](https://github.com/sveltejs/svelte/issues/2079))
81* Fix unmounting components with a bidirectional transition with a delay ([#4954](https://github.com/sveltejs/svelte/issues/4954))
82* Add types to `get` function in `svelte/store` ([#5269](https://github.com/sveltejs/svelte/pull/5269))
83* Add a warning when a component looks like it's trying to use another component without beginning with a capital letter ([#5302](https://github.com/sveltejs/svelte/pull/5302))
84* Add `EventSource` to known globals ([#5463](https://github.com/sveltejs/svelte/issues/5463))
85* Fix compiler exception with `~`/`+` combinators and `{...spread}` attributes ([#5465](https://github.com/sveltejs/svelte/issues/5465))
86
87## 3.28.0
88
89* Add `{#key}` block for keying arbitrary content on an expression ([#1469](https://github.com/sveltejs/svelte/issues/1469))
90
91## 3.27.0
92
93* Add `|nonpassive` event modifier, explicitly passing `passive: false` ([#2068](https://github.com/sveltejs/svelte/issues/2068))
94* Scope CSS selectors with `~` and `+` combinators ([#3104](https://github.com/sveltejs/svelte/issues/3104))
95* Fix keyed `{#each}` not reacting to key changing ([#5444](https://github.com/sveltejs/svelte/issues/5444))
96* Fix destructuring into store values ([#5449](https://github.com/sveltejs/svelte/issues/5449))
97* Fix erroneous `missing-declaration` warning with `use:obj.method` ([#5451](https://github.com/sveltejs/svelte/issues/5451))
98
99## 3.26.0
100
101* Support `use:obj.method` as actions ([#3935](https://github.com/sveltejs/svelte/issues/3935))
102* Support `_` as numeric separator ([#5407](https://github.com/sveltejs/svelte/issues/5407))
103* Fix assignments to properties on store values ([#5412](https://github.com/sveltejs/svelte/issues/5412))
104* Add special style scoping handling of `[open]` selectors on `<details>` elements ([#5421](https://github.com/sveltejs/svelte/issues/5421))
105* Support `import.meta` in template expressions ([#5422](https://github.com/sveltejs/svelte/issues/5422))
106
107## 3.25.1
108
109* Fix specificity of certain styles involving a child selector ([#4795](https://github.com/sveltejs/svelte/issues/4795))
110* Fix transitions that are parameterised with stores ([#5244](https://github.com/sveltejs/svelte/issues/5244))
111* Fix scoping of styles involving child selector and `*` ([#5370](https://github.com/sveltejs/svelte/issues/5370))
112* Fix destructuring which reassigns stores ([#5388](https://github.com/sveltejs/svelte/issues/5388))
113* Fix `{#await}`s with no `{:catch}` getting stuck unresolved if the promise rejects ([#5401](https://github.com/sveltejs/svelte/issues/5401))
114
115## 3.25.0
116
117* Use `null` rather than `undefined` for coerced bound value of `<input type="number">` ([#1701](https://github.com/sveltejs/svelte/issues/1701))
118* Expose object of which slots have received content in `$$slots` ([#2106](https://github.com/sveltejs/svelte/issues/2106))
119* Correctly disallow using lifecycle hooks after synchronous component initialisation ([#4259](https://github.com/sveltejs/svelte/issues/4259), [#4899](https://github.com/sveltejs/svelte/issues/4899))
120* Re-throw an unhandled rejection when an `{#await}` block with no `{:catch}` gets a rejection ([#5129](https://github.com/sveltejs/svelte/issues/5129))
121* Add types to `createEventDispatcher` ([#5211](https://github.com/sveltejs/svelte/issues/5211))
122* In SSR mode, do not automatically declare variables for reactive assignments to member expressions ([#5247](https://github.com/sveltejs/svelte/issues/5247))
123* Include selector in message of `unused-css-selector` warning ([#5252](https://github.com/sveltejs/svelte/issues/5252))
124* Fix using `<Namespaced.Component/>`s in child `{#await}`/`{#each}` contexts ([#5255](https://github.com/sveltejs/svelte/issues/5255))
125* Fix using `<svelte:component>` in `{:catch}` ([#5259](https://github.com/sveltejs/svelte/issues/5259))
126* Fix setting one-way bound `<input>` `value` to `undefined` when it has spread attributes ([#5270](https://github.com/sveltejs/svelte/issues/5270))
127* Fix deep two-way bindings inside an `{#each}` involving a store ([#5286](https://github.com/sveltejs/svelte/issues/5286))
128* Use valid XHTML for elements that are optimised and inserted with `.innerHTML` ([#5315](https://github.com/sveltejs/svelte/issues/5315))
129* Fix reactivity of `$$props` in slot fallback content ([#5367](https://github.com/sveltejs/svelte/issues/5367))
130
131## 3.24.1
132
133* Prevent duplicate invalidation with certain two-way component bindings ([#3180](https://github.com/sveltejs/svelte/issues/3180), [#5117](https://github.com/sveltejs/svelte/issues/5117), [#5144](https://github.com/sveltejs/svelte/issues/5144))
134* Fix reactivity when passing `$$props` to a `<slot>` ([#3364](https://github.com/sveltejs/svelte/issues/3364))
135* Fix transitions on `{#each}` `{:else}` ([#4970](https://github.com/sveltejs/svelte/issues/4970))
136* Fix unneeded invalidation of `$$props` and `$$restProps` ([#4993](https://github.com/sveltejs/svelte/issues/4993), [#5118](https://github.com/sveltejs/svelte/issues/5118))
137* Provide better compiler error message when mismatched tags are due to autoclosing of tags ([#5049](https://github.com/sveltejs/svelte/issues/5049))
138* Add `a11y-label-has-associated-control` warning ([#5074](https://github.com/sveltejs/svelte/pull/5074))
139* Add `a11y-media-has-caption` warning ([#5075](https://github.com/sveltejs/svelte/pull/5075))
140* Fix `bind:group` when using contextual reference ([#5174](https://github.com/sveltejs/svelte/issues/5174))
141
142## 3.24.0
143
144* Support nullish coalescing (`??`) and optional chaining (`?.`) operators ([#1972](https://github.com/sveltejs/svelte/issues/1972))
145* Support `import.meta` ([#4379](https://github.com/sveltejs/svelte/issues/4379))
146* Fix only setting `<input>` values when they're changed when there are spread attributes ([#4418](https://github.com/sveltejs/svelte/issues/4418))
147* Fix placement of `{@html}` when used at the root of a slot, at the root of a component, or in `<svelte:head>` ([#5012](https://github.com/sveltejs/svelte/issues/5012), [#5071](https://github.com/sveltejs/svelte/pull/5071))
148* Fix certain handling of two-way bound `contenteditable` elements ([#5018](https://github.com/sveltejs/svelte/issues/5018))
149* Fix handling of `import`ed value that is used as a store and is also mutated ([#5019](https://github.com/sveltejs/svelte/issues/5019))
150* Do not display `a11y-missing-content` warning on elements with `contenteditable` bindings ([#5020](https://github.com/sveltejs/svelte/issues/5020))
151* Fix handling of `this` in inline function expressions in the template ([#5033](https://github.com/sveltejs/svelte/issues/5033))
152* Fix collapsing HTML with static content ([#5040](https://github.com/sveltejs/svelte/issues/5040))
153* Prevent use of `$store` at compile time when top-level `store` has been shadowed ([#5048](https://github.com/sveltejs/svelte/issues/5048))
154* Update `<select>` with one-way `value` binding when the available `<option>`s change ([#5051](https://github.com/sveltejs/svelte/issues/5051))
155* Fix published `tweened` types so the `.set()` and `.update()` options are optional ([#5062](https://github.com/sveltejs/svelte/issues/5062))
156* Fix contextual `bind:this` inside `{#each}` block ([#5067](https://github.com/sveltejs/svelte/issues/5067))
157* Preprocess self-closing `<script>` and `<style>` tags ([#5080](https://github.com/sveltejs/svelte/issues/5080))
158* Fix types for animation- and transition-related param objects so each param is optional ([#5083](https://github.com/sveltejs/svelte/pull/5083))
159
160## 3.23.2
161
162* Fix `bind:group` inside `{#each}` ([#3243](https://github.com/sveltejs/svelte/issues/3243))
163* Don't crash when using an arrow function as a statement ([#4617](https://github.com/sveltejs/svelte/issues/4617))
164* Deconflict `bind:this` variable ([#4636](https://github.com/sveltejs/svelte/issues/4636))
165
166## 3.23.1
167
168* Fix checkbox `bind:group` when multiple options have the same value ([#4397](https://github.com/sveltejs/svelte/issues/4397))
169* Fix `bind:this` to the value of an `{#each}` block ([#4517](https://github.com/sveltejs/svelte/issues/4517))
170* Fix reactivity when assigning to contextual `{#each}` variable ([#4574](https://github.com/sveltejs/svelte/issues/4574), [#4744](https://github.com/sveltejs/svelte/issues/4744))
171* Fix binding to contextual `{#each}` values that shadow outer names ([#4757](https://github.com/sveltejs/svelte/issues/4757))
172* Work around EdgeHTML DOM issue when removing attributes during hydration ([#4911](https://github.com/sveltejs/svelte/pull/4911))
173* Throw CSS parser error when `:global()` does not contain a selector ([#4930](https://github.com/sveltejs/svelte/issues/4930))
174
175## 3.23.0
176
177* Update `<select>` with `bind:value` when the available `<option>`s change ([#1764](https://github.com/sveltejs/svelte/issues/1764))
178* Add `muted` binding for media elements ([#2998](https://github.com/sveltejs/svelte/issues/2998))
179* Fix inconsistencies when setting a two-way bound `<input>` to `undefined` ([#3569](https://github.com/sveltejs/svelte/issues/3569))
180* Fix setting `<select multiple>` when there are spread attributes ([#4392](https://github.com/sveltejs/svelte/issues/4392))
181* Fix let-less `<slot>` with context overflow ([#4624](https://github.com/sveltejs/svelte/issues/4624))
182* Fix resize listening on certain older browsers ([#4752](https://github.com/sveltejs/svelte/issues/4752))
183* Add `a11y-no-onchange` warning ([#4788](https://github.com/sveltejs/svelte/pull/4788))
184* Fix `use:` actions being recreated when a keyed `{#each}` is reordered ([#4693](https://github.com/sveltejs/svelte/issues/4693))
185* Fix `{@html}` when using tags that can only appear inside certain tags ([#4852](https://github.com/sveltejs/svelte/issues/4852))
186* Fix reactivity when binding directly to `{#each}` context ([#4879](https://github.com/sveltejs/svelte/issues/4879))
187
188## 3.22.3
189
190* Support default values and trailing commas in destructuring `{#await}` ([#4560](https://github.com/sveltejs/svelte/issues/4560), [#4810](https://github.com/sveltejs/svelte/issues/4810))
191* Fix handling of `tweened` store when set using `duration: 0` ([#4799](https://github.com/sveltejs/svelte/issues/4799), [#4846](https://github.com/sveltejs/svelte/issues/4846))
192* Fix setting `value` attribute with `bind:group` and attribute spread ([#4803](https://github.com/sveltejs/svelte/issues/4803))
193* Fix issue with compound `{#if}` block involving static condition, dynamic condition, and inline component ([#4840](https://github.com/sveltejs/svelte/issues/4840))
194* Update a11y warnings per ARIA 1.2 working draft ([#4844](https://github.com/sveltejs/svelte/issues/4844))
195
196## 3.22.2
197
198* Fix compiler exception with `a11y-img-redundant-alt` and value-less `alt` attribute ([#4777](https://github.com/sveltejs/svelte/issues/4777))
199
200## 3.22.1
201
202* Fix compiler exception with `a11y-img-redundant-alt` and dynamic `alt` attribute ([#4770](https://github.com/sveltejs/svelte/issues/4770))
203
204## 3.22.0
205
206* Fix misaligned line numbers in source maps ([#3906](https://github.com/sveltejs/svelte/issues/3906))
207* Make setting a `tweened` store using `duration: 0` instantly update the value ([#4399](https://github.com/sveltejs/svelte/issues/4399))
208* Fix reactivity with imported values that are then mutated ([#4555](https://github.com/sveltejs/svelte/issues/4555))
209* Fix contextual dynamic `bind:this` inside `{#each}` block ([#4686](https://github.com/sveltejs/svelte/issues/4686))
210* Do not display a11y warning about missing `href` for `<a>` with `name` or `id` ([#4697](https://github.com/sveltejs/svelte/issues/4697))
211* Disable infinite loop guard inside generators ([#4698](https://github.com/sveltejs/svelte/issues/4698))
212* Display `a11y-invalid-attribute` warning for `href="javascript:..."` ([#4733](https://github.com/sveltejs/svelte/pull/4733))
213* Implement `a11y-img-redundant-alt` warning ([#4750](https://github.com/sveltejs/svelte/pull/4750))
214* Fix variable name conflict with component called `<Anchor>` ([#4768](https://github.com/sveltejs/svelte/issues/4768))
215
216## 3.21.0
217
218* Support dimension bindings in cross-origin environments ([#2147](https://github.com/sveltejs/svelte/issues/2147))
219* Fix several related outro bugs ([#3202](https://github.com/sveltejs/svelte/issues/3202), [#3410](https://github.com/sveltejs/svelte/issues/3410), [#3685](https://github.com/sveltejs/svelte/issues/3685), [#4620](https://github.com/sveltejs/svelte/issues/4620), [#4630](https://github.com/sveltejs/svelte/issues/4630))
220* Try using `globalThis` rather than `globals` for the benefit of non-Node servers and web workers ([#3561](https://github.com/sveltejs/svelte/issues/3561), [#4545](https://github.com/sveltejs/svelte/issues/4545))
221* Support `{#await ... catch ...}` syntax shorthand ([#3623](https://github.com/sveltejs/svelte/issues/3623))
222* Fix attaching of JS debugging comments to HTML comments ([#4565](https://github.com/sveltejs/svelte/issues/4565))
223* Fix `<svelte:component/>` within `<slot/>` ([#4597](https://github.com/sveltejs/svelte/issues/4597))
224* Fix bug with updating simple `{#if}` blocks ([#4629](https://github.com/sveltejs/svelte/issues/4629))
225* Fix issues with `<input type="number">` updates ([#4631](https://github.com/sveltejs/svelte/issues/4631), [#4687](https://github.com/sveltejs/svelte/issues/4687))
226* Prevent illegal attribute names ([#4648](https://github.com/sveltejs/svelte/issues/4648))
227* Fix `{#if}` block directly within `<slot/>` ([#4703](https://github.com/sveltejs/svelte/issues/4703))
228
229## 3.20.1
230
231* Fix compiler regression with slots ([#4562](https://github.com/sveltejs/svelte/issues/4562))
232
233## 3.20.0
234
235* Allow destructuring in `{#await}` blocks ([#1851](https://github.com/sveltejs/svelte/issues/1851))
236* Allow `<svelte:self>` to be used in a slot ([#2798](https://github.com/sveltejs/svelte/issues/2798))
237* Expose object of unknown props in `$$restProps` ([#2930](https://github.com/sveltejs/svelte/issues/2930))
238* Prevent passing named slots other than from the top level within a component ([#3385](https://github.com/sveltejs/svelte/issues/3385))
239* Allow transitions and animations to work within iframes ([#3624](https://github.com/sveltejs/svelte/issues/3624))
240* Fix initialising slot fallbacks when unnecessary ([#3763](https://github.com/sveltejs/svelte/issues/3763))
241* Disallow binding directly to `const` variables ([#4479](https://github.com/sveltejs/svelte/issues/4479))
242* Fix re-attaching event handlers on keyed `{#each}` blocks ([#4491](https://github.com/sveltejs/svelte/issues/4491))
243* Fix updating keyed `{#each}` blocks with `{:else}` ([#4536](https://github.com/sveltejs/svelte/issues/4536), [#4549](https://github.com/sveltejs/svelte/issues/4549))
244* Fix hydration of top-level content ([#4542](https://github.com/sveltejs/svelte/issues/4542))
245
246## 3.19.2
247
248* In `dev` mode, display a runtime warning when a component is passed an unexpected slot ([#1020](https://github.com/sveltejs/svelte/issues/1020), [#1447](https://github.com/sveltejs/svelte/issues/1447))
249* In `vars` array, correctly indicate whether `module` variables are `mutated` or `reassigned` ([#3215](https://github.com/sveltejs/svelte/issues/3215))
250* Fix spread props not updating in certain situations ([#3521](https://github.com/sveltejs/svelte/issues/3521), [#4480](https://github.com/sveltejs/svelte/issues/4480))
251* Use the fallback content for slots if they are passed only whitespace ([#4092](https://github.com/sveltejs/svelte/issues/4092))
252* Fix bitmask overflow for `{#if}` blocks ([#4263](https://github.com/sveltejs/svelte/issues/4263))
253* In `dev` mode, check for unknown props even if the component has no writable props ([#4323](https://github.com/sveltejs/svelte/issues/4323))
254* Exclude global variables from `$capture_state` ([#4463](https://github.com/sveltejs/svelte/issues/4463))
255* Fix bitmask overflow for slots ([#4481](https://github.com/sveltejs/svelte/issues/4481))
256
257## 3.19.1
258
259* Do not treat modifications to `$$props` as updates to a store called `$props` ([#4368](https://github.com/sveltejs/svelte/issues/4368))
260* Deconflict `value` parameter name used in contextual bindings ([#4445](https://github.com/sveltejs/svelte/issues/4445))
261* Fix dev mode validation of `{#each}` blocks using strings ([#4450](https://github.com/sveltejs/svelte/issues/4450))
262
263## 3.19.0
264
265* Fix indirect bindings involving elements with spreads ([#3680](https://github.com/sveltejs/svelte/issues/3680))
266* `$capture_state`/`$inject_state` now act on the component's entire state, rather than its props ([#3822](https://github.com/sveltejs/svelte/pull/3822))
267* Warn when using `<Foo/>` and `Foo` is dynamic ([#4331](https://github.com/sveltejs/svelte/issues/4331))
268* Display compilation warnings in `svelte/register` in dev mode ([#4364](https://github.com/sveltejs/svelte/issues/4364))
269* Fix unneeded updating of keyed each blocks ([#4373](https://github.com/sveltejs/svelte/issues/4373))
270* Throw runtime error in dev mode for non-array-like values in `{#each}` blocks ([#4408](https://github.com/sveltejs/svelte/issues/4408))
271
272## 3.18.2
273
274* Fix binding to module-level variables ([#4086](https://github.com/sveltejs/svelte/issues/4086))
275* Improve parsing error messages when there is a pending unclosed tag ([#4131](https://github.com/sveltejs/svelte/issues/4131))
276* Disallow attribute/prop names from matching two-way-bound names or `{shorthand}` attribute/prop names ([#4325](https://github.com/sveltejs/svelte/issues/4325))
277* Improve performance of `flush()` by not using `.shift()` ([#4356](https://github.com/sveltejs/svelte/pull/4356))
278* Permit reserved keywords as destructuring keys in `{#each}` ([#4372](https://github.com/sveltejs/svelte/issues/4372))
279* Disallow reserved keywords in `{expressions}` ([#4372](https://github.com/sveltejs/svelte/issues/4372))
280* Fix code generation error with precedence of arrow functions ([#4384](https://github.com/sveltejs/svelte/issues/4384))
281* Fix event handlers that are dynamic via reactive declarations or stores ([#4388](https://github.com/sveltejs/svelte/issues/4388))
282* Fix invalidation in expressions like `++foo.bar` ([#4393](https://github.com/sveltejs/svelte/issues/4393))
283
284## 3.18.1
285
286* Fix code generation error with adjacent inline and block comments ([#4312](https://github.com/sveltejs/svelte/issues/4312))
287* Fix detection of unused CSS selectors that begin with a `:global()` but contain a scoped portion ([#4314](https://github.com/sveltejs/svelte/issues/4314))
288
289## 3.18.0
290
291* Fix infinite loop when instantiating another component during `onMount` ([#3218](https://github.com/sveltejs/svelte/issues/3218))
292* Make autosubscribing to a nullish store a no-op ([#2181](https://github.com/sveltejs/svelte/issues/2181))
293
294## 3.17.3
295
296* Fix updating a `<slot>` inside an `{#if}` or other block ([#4292](https://github.com/sveltejs/svelte/issues/4292))
297* Fix using RxJS observables in `derived` stores ([#4298](https://github.com/sveltejs/svelte/issues/4298))
298* Add dev mode check to disallow duplicate keys in a keyed `{#each}` ([#4301](https://github.com/sveltejs/svelte/issues/4301))
299* Fix hydration of `<title>` when starting from SSR-generated code with `hydratable: true` ([#4310](https://github.com/sveltejs/svelte/issues/4310))
300
301## 3.17.2
302
303* Fix removing attributes during hydration ([#1733](https://github.com/sveltejs/svelte/issues/1733))
304* Disallow two-way binding to a variable declared by an `{#await}` block ([#4012](https://github.com/sveltejs/svelte/issues/4012))
305* Allow access to `let:` variables in sibling attributes on slot root ([#4173](https://github.com/sveltejs/svelte/issues/4173))
306* Fix `~=` and class selector matching against values separated by any whitespace characters ([#4242](https://github.com/sveltejs/svelte/issues/4242))
307* Fix code generation for `await`ed expressions that need parentheses ([#4267](https://github.com/sveltejs/svelte/issues/4267))
308* Preserve JavaScript comments from the original component source where possible ([#4268](https://github.com/sveltejs/svelte/issues/4268))
309* Add some more known globals ([#4276](https://github.com/sveltejs/svelte/pull/4276))
310* Correctly apply event modifiers to `<svelte:body>` events ([#4278](https://github.com/sveltejs/svelte/issues/4278))
311
312## 3.17.1
313
314* Only attach SSR mode markers to a component's `<head>` elements when compiling with `hydratable: true` ([#4258](https://github.com/sveltejs/svelte/issues/4258))
315
316## 3.17.0
317
318* Remove old `<head>` elements during hydration so they aren't duplicated ([#1607](https://github.com/sveltejs/svelte/issues/1607))
319* Prevent text input cursor jumping in Safari with one-way binding ([#3449](https://github.com/sveltejs/svelte/issues/3449))
320* Expose compiler version in dev events ([#4047](https://github.com/sveltejs/svelte/issues/4047))
321* Don't run actions before their element is in the document ([#4166](https://github.com/sveltejs/svelte/issues/4166))
322* Fix reactive assignments with destructuring and stores where the destructured value should be undefined ([#4170](https://github.com/sveltejs/svelte/issues/4170))
323* Fix hydrating `{:else}` in `{#each}` ([#4202](https://github.com/sveltejs/svelte/issues/4202))
324* Do not automatically declare variables in reactive declarations when assigning to a member expression ([#4212](https://github.com/sveltejs/svelte/issues/4212))
325* Fix stringifying of attributes in SSR mode when there are spread attributes ([#4240](https://github.com/sveltejs/svelte/issues/4240))
326* Only render one `<title>` in SSR mode when multiple components provide one ([#4250](https://github.com/sveltejs/svelte/pull/4250))
327
328## 3.16.7
329
330* Also apply actions in the order they're given along with other directives ([#2446](https://github.com/sveltejs/svelte/issues/2446), [#4156](https://github.com/sveltejs/svelte/pull/4156))
331* Check whether a dynamic event handler is a function before calling it ([#4090](https://github.com/sveltejs/svelte/issues/4090))
332* Correctly mark event handlers as dynamic when they involve an expression used in a `bind:` elsewhere ([#4155](https://github.com/sveltejs/svelte/pull/4155))
333
334## 3.16.6
335
336* Fix CSS specificity bug when encapsulating styles ([#1277](https://github.com/sveltejs/svelte/issues/1277))
337* Apply directives in the order they're given ([#2446](https://github.com/sveltejs/svelte/issues/2446))
338* Fix destructuring in `let:` directives ([#2751](https://github.com/sveltejs/svelte/issues/2751))
339* Preserve whitespace around `<tspan>`s in `<svg>`s ([#3998](https://github.com/sveltejs/svelte/issues/3998))
340
341## 3.16.5
342
343* Better fix for cascading invalidations and fix some regressions ([#4098](https://github.com/sveltejs/svelte/issues/4098), [#4114](https://github.com/sveltejs/svelte/issues/4114), [#4120](https://github.com/sveltejs/svelte/issues/4120))
344
345## 3.16.4
346
347* Fix slots with props not propagating through to inner slots ([#4061](https://github.com/sveltejs/svelte/issues/4061))
348* Fix noting autosubscribed stores as `referenced` in `vars` for tooling ([#4081](https://github.com/sveltejs/svelte/issues/4081))
349* Fix cascading invalidations in certain situations ([#4094](https://github.com/sveltejs/svelte/issues/4094))
350
351## 3.16.3
352
353* Fix bitmask overflow when using slotted components ([#4077](https://github.com/sveltejs/svelte/issues/4077))
354* Remove unnecessary `$$invalidate` calls from init block ([#4018](https://github.com/sveltejs/svelte/issues/4018))
355
356## 3.16.2
357
358* Handle slot updates when parent component has a bitmask overflow ([#4078](https://github.com/sveltejs/svelte/pull/4078))
359
360## 3.16.1
361
362* Fix unused export warning for props used as stores ([#4021](https://github.com/sveltejs/svelte/issues/4021))
363* Fix `{:then}` without resolved value containing `{#each}` ([#4022](https://github.com/sveltejs/svelte/issues/4022))
364* Fix incorrect code generated with `loopGuardTimeout` ([#4034](https://github.com/sveltejs/svelte/issues/4034))
365* Fix handling of bitmask overflow and globals ([#4037](https://github.com/sveltejs/svelte/issues/4037))
366* Fix `{:then}` containing `{#if}` ([#4044](https://github.com/sveltejs/svelte/issues/4044))
367* Fix bare `import`s in `format: 'cjs'` output mode ([#4055](https://github.com/sveltejs/svelte/issues/4050))
368* Warn when using a known global as a component name ([#4070](https://github.com/sveltejs/svelte/issues/4070))
369
370## 3.16.0
371
372* Use bitmasks to track changes ([#3945](https://github.com/sveltejs/svelte/pull/3945))
373* Fix heisenbug with component styles ([#3977](https://github.com/sveltejs/svelte/issues/3977))
374* Do not warn about missing expected props for `export function foo() {}` ([#3954](https://github.com/sveltejs/svelte/issues/3954))
375* Fix `context="module"` exports with the same name as an instance variable ([#3983](https://github.com/sveltejs/svelte/issues/3983))
376* Fix binding to contextual values from `{#each}` blocks referring to global variables ([#3992](https://github.com/sveltejs/svelte/issues/3992))
377* Use `requestAnimationFrame` callback argument for smoother transitions ([#4014](https://github.com/sveltejs/svelte/pull/4014))
378* Fix `listen_dev` argument order ([#4016](https://github.com/sveltejs/svelte/pull/4016))
379
380## 3.15.0
381
382* Hide commented sections from preprocessors ([#3894](https://github.com/sveltejs/svelte/pull/3894))
383* Add `seeking` and `ended` bindings to media elements ([#3650](https://github.com/sveltejs/svelte/pull/3650))
384* Add `videoWidth` and `videoHeight` bindings to video elements ([#3927](https://github.com/sveltejs/svelte/pull/3927))
385* Fix for dynamic event handlers ([#3934](https://github.com/sveltejs/svelte/pull/3934))
386* Handle scale transforms when using the `flip` animation ([#3555](https://github.com/sveltejs/svelte/issues/3555))
387* Fix some code generation bugs ([#3929](https://github.com/sveltejs/svelte/issues/3929), [#3939](https://github.com/sveltejs/svelte/issues/3939))
388* Add `aria-hidden="true"` to objects generated when adding resize-listeners, to improve accessibility ([#3948](https://github.com/sveltejs/svelte/issues/3948))
389
390## 3.14.1
391
392* Deconflict block method names with other variables ([#3900](https://github.com/sveltejs/svelte/issues/3900))
393* Fix entity encoding issue in text nodes with constant expressions ([#3911](https://github.com/sveltejs/svelte/issues/3911))
394* Make code for unknown prop warnings compatible with older js engines ([#3914](https://github.com/sveltejs/svelte/issues/3914))
395
396## 3.14.0
397
398* Add `loopGuardTimeout` option that augments `for`/`while` loops to prevent infinite loops, primarily for use in the REPL ([#3887](https://github.com/sveltejs/svelte/pull/3887))
399* Keep component bindings in sync when changed in reactive statements ([#3382](https://github.com/sveltejs/svelte/issues/3382))
400* Update attributes before bindings ([#3857](https://github.com/sveltejs/svelte/issues/3857))
401* Prevent variable naming conflict ([#3899](https://github.com/sveltejs/svelte/issues/3899))
402
403
404## 3.13.0
405
406* New structured code generation, which eliminates a number of edge cases and obscure bugs ([#3539](https://github.com/sveltejs/svelte/pull/3539))
407
408Also:
409
410* Fix `{#each}` context not shadowing outer scope when using `bind:` ([#1565](https://github.com/sveltejs/svelte/issues/1565))
411* Fix edge cases in matching selectors against elements ([#1710](https://github.com/sveltejs/svelte/issues/1710))
412* Fix several bugs related to interaction of `{...spread}` attributes with other features ([#2721](https://github.com/sveltejs/svelte/issues/2721), [#2916](https://github.com/sveltejs/svelte/issues/2916), [#3421](https://github.com/sveltejs/svelte/issues/3421), [#3681](https://github.com/sveltejs/svelte/issues/3681), [#3764](https://github.com/sveltejs/svelte/issues/3764), [#3790](https://github.com/sveltejs/svelte/issues/3790))
413* Allow exiting a reactive block early with `break $` ([#2828](https://github.com/sveltejs/svelte/issues/2828))
414* Fix binding to props that have been renamed with `export { ... as ... }` ([#3508](https://github.com/sveltejs/svelte/issues/3508))
415* Fix application of style scoping class in cases of ambiguity ([#3544](https://github.com/sveltejs/svelte/issues/3544))
416* Check attributes have changed before setting them to avoid image flicker ([#3579](https://github.com/sveltejs/svelte/pull/3579))
417* Fix generating malformed code for `{@debug}` tags with no dependencies ([#3588](https://github.com/sveltejs/svelte/issues/3588))
418* Fix generated code in specific case involving compound ifs and child components ([#3595](https://github.com/sveltejs/svelte/issues/3595))
419* Fix `bind:this` binding to a store ([#3591](https://github.com/sveltejs/svelte/issues/3591))
420* Use safer `HTMLElement` check before extending class ([#3608](https://github.com/sveltejs/svelte/issues/3608))
421* Add `location` as a known global ([#3619](https://github.com/sveltejs/svelte/pull/3619))
422* Support `{#await}` with `{:catch}` but no `{:then}` ([#3623](https://github.com/sveltejs/svelte/issues/3623))
423* Clean up dead code emitted for `<slot/>`s ([#3631](https://github.com/sveltejs/svelte/issues/3631))
424* Fix tracking of dependencies of compound assignments in reactive statements ([#3634](https://github.com/sveltejs/svelte/issues/3634))
425* Flush changes in newly attached block when using `{#await}` ([#3660](https://github.com/sveltejs/svelte/issues/3660))
426* Throw exception immediately when calling `createEventDispatcher()` after component instantiation ([#3667](https://github.com/sveltejs/svelte/pull/3667))
427* Fix globals shadowing contextual template scope ([#3674](https://github.com/sveltejs/svelte/issues/3674))
428* Fix `<svelte:window>` bindings to stores ([#3832](https://github.com/sveltejs/svelte/issues/3832))
429* Deconflict generated var names with builtins ([#3724](https://github.com/sveltejs/svelte/issues/3724))
430* Allow spring/tweened values to be initially undefined ([#3761](https://github.com/sveltejs/svelte/issues/3761))
431* Warn if using `<svelte:options tag="...">` without `customElement: true` option ([#3782](https://github.com/sveltejs/svelte/pull/3782))
432* Add `Event` to list of known globals ([#3810](https://github.com/sveltejs/svelte/pull/3810))
433* Throw helpful error on empty CSS declaration ([#3801](https://github.com/sveltejs/svelte/issues/3801))
434* Support `easing` param on `fade` transition ([#3823](https://github.com/sveltejs/svelte/pull/3823))
435* Generate valid names from filenames with unicode characters ([#3845](https://github.com/sveltejs/svelte/issues/3845))
436* Don't generate any code for markup-less components ([#2200](https://github.com/sveltejs/svelte/issues/2200))
437* Deconflict with internal name `block` ([#3854](https://github.com/sveltejs/svelte/issues/3854))
438* Set attributes before bindings, to prevent erroneous assignments to `input.files` ([#3828](https://github.com/sveltejs/svelte/issues/3828))
439* Smarter unused CSS detection ([#3825](https://github.com/sveltejs/svelte/pull/3825))
440* Allow dynamic event handlers ([#3040](https://github.com/sveltejs/svelte/issues/3040))
441* Prevent erroneous `"undefined"` class name ([#3876](https://github.com/sveltejs/svelte/pull/3876))
442* Prevent resetting of `src` attribute unless changed ([#3579](https://github.com/sveltejs/svelte/pull/3579))
443* Prevent hydration of void element 'children' ([#3882](https://github.com/sveltejs/svelte/issues/3882))
444* Hoist globals even if mentioned in `<script>` block ([#3745](https://github.com/sveltejs/svelte/pull/3745))
445
446
447## 3.12.1
448
449* Escape `@` symbols in props, again ([#3545](https://github.com/sveltejs/svelte/issues/3545))
450
451## 3.12.0
452
453* Fire events on `document` in development to facilitate dev tooling ([#3005](https://github.com/sveltejs/svelte/pull/3005))
454* Remove old props when the keys in spread props are removed ([#2282](https://github.com/sveltejs/svelte/issues/2282))
455
456## 3.11.0
457
458* `$capture_state` and `$inject_state` HMR hooks in dev mode ([#3148](https://github.com/sveltejs/svelte/pull/3148))
459* Allow unclosed tags inside if/each/etc blocks ([#2807](https://github.com/sveltejs/svelte/issues/2807))
460* Invalidate unreferenced store values inside `<script>` ([#3537](https://github.com/sveltejs/svelte/issues/3537))
461* Print `null` text when hydrating ([#3379](https://github.com/sveltejs/svelte/pull/3379))
462
463## 3.10.1
464
465* Preserve reactivity inside if block heads etc ([#3512](https://github.com/sveltejs/svelte/issues/3512))
466* Fix store bindings inside each blocks ([#3455](https://github.com/sveltejs/svelte/issues/3455))
467* Generate correct code for if-else blocks with static conditions ([#3505](https://github.com/sveltejs/svelte/issues/3505))
468* Avoid generating unnecessary component update code ([#3526](https://github.com/sveltejs/svelte/issues/3526))
469* Make `bind:currentTime` more reliable ([#3524](https://github.com/sveltejs/svelte/issues/3524))
470* Prevent errors when setting spread props on SVG elements ([#3522](https://github.com/sveltejs/svelte/issues/3522))
471
472## 3.10.0
473
474* Add `blur` transition ([#3477](https://github.com/sveltejs/svelte/pull/3477))
475* Prevent `<input type="number">` edge case with spread props ([#3426](https://github.com/sveltejs/svelte/issues/3426))
476* Robustify cyclical dependency detection, improve errors ([#3459](https://github.com/sveltejs/svelte/issues/3459))
477
478## 3.9.2
479
480* Fix handling of additional @-rules in style blocks ([#2995](https://github.com/sveltejs/svelte/pull/2995))
481* Fix if blocks with complex but static conditions ([#3447](https://github.com/sveltejs/svelte/issues/3447))
482
483## 3.9.1
484
485* Only update style properties if necessary ([#3433](https://github.com/sveltejs/svelte/issues/3433))
486* Only update if/await blocks if necessary ([#2355](https://github.com/sveltejs/svelte/issues/2355))
487* Set context correctly inside await blocks ([#2443](https://github.com/sveltejs/svelte/issues/2443))
488* Handle `!important` inline styles ([#1834](https://github.com/sveltejs/svelte/issues/1834))
489* Make index references reactive in event handlers inside keyed each blocks ([#2569](https://github.com/sveltejs/svelte/issues/2569))
490
491## 3.9.0
492
493* Support `is` attribute on elements, with a warning ([#3182](https://github.com/sveltejs/svelte/issues/3182))
494* Handle missing slot prop ([#3322](https://github.com/sveltejs/svelte/issues/3322))
495* Don't set undefined/null input values, unless previous value exists ([#1233](https://github.com/sveltejs/svelte/issues/1233))
496* Fix style attribute optimisation bailout ([#1830](https://github.com/sveltejs/svelte/issues/1830))
497
498## 3.8.1
499
500* Set SVG namespace for slotted elements ([#3321](https://github.com/sveltejs/svelte/issues/3321))
501
502## 3.8.0
503
504* Add `self` event modifier ([#3372](https://github.com/sveltejs/svelte/issues/3372))
505* Generate valid code when spreading literal ([#3185](https://github.com/sveltejs/svelte/issues/3185))
506* Coerce tag values to string before checking equality ([#2290](https://github.com/sveltejs/svelte/issues/2290))
507
508## 3.7.1
509
510* Assume `let` variables are dynamic for slots ([#3354](https://github.com/sveltejs/svelte/issues/3354))
511* Allow transition functions to return nothing ([#2246](https://github.com/sveltejs/svelte/pull/2246))
512
513## 3.7.0
514
515* Disable warnings via `svelte-ignore` comments ([#3351](https://github.com/sveltejs/svelte/pull/3351))
516* Throw if `$` or `$$...` is referenced as global ([#3272](https://github.com/sveltejs/svelte/issues/3272))
517* Remount HTML tags correctly ([#3329](https://github.com/sveltejs/svelte/pull/3329))
518* Treat data attributes like other attributes ([#3337](https://github.com/sveltejs/svelte/issues/3337))
519
520## 3.6.11
521
522* Handle reassigned RxJS observables ([#3304](https://github.com/sveltejs/svelte/issues/3304))
523* Remove commas from HTMLified attributes with multiple chunks ([#3341](https://github.com/sveltejs/svelte/issues/3341))
524* Prevent `class` on element with scoped styles from rendering as `undefined` ([#3283](https://github.com/sveltejs/svelte/issues/3283))
525* Allow references to index in key expression ([#3274](https://github.com/sveltejs/svelte/issues/3274))
526* Mark attribute selectors as used if corresponding binding exists ([#3281](https://github.com/sveltejs/svelte/issues/3281))
527* Preserve `async`/`*` when hoisting functions ([#3179](https://github.com/sveltejs/svelte/issues/3179))
528* Make `raf` a noop on server ([#3324](https://github.com/sveltejs/svelte/issues/3324))
529* Prevent erroneous a11y warning for image input with alt attribute ([#3331](https://github.com/sveltejs/svelte/issues/3331))
530* Add several well-known globals ([#3316](https://github.com/sveltejs/svelte/pull/3316))
531
532## 3.6.10
533
534* Use `change` event for file inputs ([#3226](https://github.com/sveltejs/svelte/issues/3226))
535* Always fire reactive declarations with `$$props` ([#3286](https://github.com/sveltejs/svelte/issues/3286))
536* More conservative spread prop updates ([#3289](https://github.com/sveltejs/svelte/issues/3289))
537* Quote props if necessary in SSR mode ([#3312](https://github.com/sveltejs/svelte/issues/3312))
538
539## 3.6.9
540
541* Always update derived stores with a derived input whose value does not change ([#3191](https://github.com/sveltejs/svelte/issues/3191))
542
543## 3.6.8
544
545* Preserve global keyframes that don't match local elements ([#3228](https://github.com/sveltejs/svelte/issues/3228))
546* Fix spread/`class:` combination ([#3242](https://github.com/sveltejs/svelte/pull/3242))
547* Never scope `:root` selector ([#3250](https://github.com/sveltejs/svelte/pull/3250))
548* Prevent trailing commas in function arguments ([#3255](https://github.com/sveltejs/svelte/pull/3260))
549
550## 3.6.7
551
552* Prevent corruption of outro callbacks with nested keyed each blocks ([#3209](https://github.com/sveltejs/svelte/pull/3209))
553* Prevent cursor jumping in bound input in Safari ([#3199](https://github.com/sveltejs/svelte/issues/3199))
554* Make resize listener object unfocusable ([#3206](https://github.com/sveltejs/svelte/issues/3206))
555
556## 3.6.6
557
558* Prevent dynamic components being detached twice ([#3113](https://github.com/sveltejs/svelte/issues/3113), [#2086](https://github.com/sveltejs/svelte/issues/2086))
559
560## 3.6.5
561
562* Handle RxJS-style observables with `get` ([#3153](https://github.com/sveltejs/svelte/issues/3153))
563* Pass `let` values to bindings ([#3140](https://github.com/sveltejs/svelte/issues/3140))
564* Escape `@` symbols in props ([#3173](https://github.com/sveltejs/svelte/issues/3173))
565* Scale crossfaded elements ([#3175](https://github.com/sveltejs/svelte/pull/3175))
566
567## 3.6.4
568
569* Run `onMount` functions in correct order, and before initial `afterUpdate` functions ([#2281](https://github.com/sveltejs/svelte/issues/2281))
570* Fix code transformation for shorthand methods ([#2906](https://github.com/sveltejs/svelte/issues/2906))
571* Fix assignments in inline functions ([#3038](https://github.com/sveltejs/svelte/issues/3038))
572
573## 3.6.3
574
575* Fix await block mounting inside removed if block ([#1496](https://github.com/sveltejs/svelte/issues/1496))
576* Update when element references are removed ([#2034](https://github.com/sveltejs/svelte/issues/2034))
577* Don't attempt to serialize non-string values in server-rendered bindings ([#2135](https://github.com/sveltejs/svelte/issues/2135))
578* Recognise dependencies in function expressions ([#2693](https://github.com/sveltejs/svelte/issues/2693))
579* Scope pseudo-class selectors without class/type ([#1705](https://github.com/sveltejs/svelte/issues/1705))
580* Allow nested at-rules ([#3135](https://github.com/sveltejs/svelte/issues/3135))
581* Allow attributes to contain `=` characters ([#3149](https://github.com/sveltejs/svelte/pull/3149))
582
583## 3.6.2
584
585* Fix placement of each-else block ([#2917](https://github.com/sveltejs/svelte/issues/2917))
586* Make context accessible to `bind:this` ([#2806](https://github.com/sveltejs/svelte/issues/2806))
587* Pass hoisted values to slots ([#2586](https://github.com/sveltejs/svelte/issues/2586))
588
589## 3.6.1
590
591* Fix escaping of `@` in dev mode debug filename ([#3114](https://github.com/sveltejs/svelte/pull/3114))
592
593## 3.6.0
594
595* Add `innerHTML` and `textContent` bindings for `contenteditable` elements ([#2996](https://github.com/sveltejs/svelte/pull/2996))
596* Fix destructuring assignments where targets are member expressions ([#3092](https://github.com/sveltejs/svelte/issues/3092))
597* Deconflict with used globals ([#2963](https://github.com/sveltejs/svelte/pull/2963))
598* Always run `onDestroy` functions, not just for detaching components ([#3058](https://github.com/sveltejs/svelte/issues/3058))
599* Fix scope analysis around catch clauses ([#3064](https://github.com/sveltejs/svelte/issues/3064))
600* Add error constructors to known globals ([#3064](https://github.com/sveltejs/svelte/issues/3064))
601* Always bail out of hoisting on encountering local state in function definition ([#3044](https://github.com/sveltejs/svelte/issues/3044))
602* Fix incorrect merging of top-level text nodes ([#3027](https://github.com/sveltejs/svelte/issues/3027))
603* Handle removal of components in each blocks without props ([#3035](https://github.com/sveltejs/svelte/issues/3035))
604* Only call subscriber once when resubscribing to a store ([#3022](https://github.com/sveltejs/svelte/issues/3022))
605* Check for existence of dynamic component before introing ([#3054](https://github.com/sveltejs/svelte/issues/3054))
606* Sanitize names of bubbled event handlers ([#2923](https://github.com/sveltejs/svelte/issues/2923))
607
608
609## 3.5.4
610
611* Preserve whitespace at the boundaries of `{#each}` blocks ([#713](https://github.com/sveltejs/svelte/issues/713))
612* Fix dynamic `bind:this` on components ([#2333](https://github.com/sveltejs/svelte/issues/2333))
613* Fix binding to values in a component when it uses `$$props` ([#2725](https://github.com/sveltejs/svelte/issues/2725))
614* Fix parsing ambiguous HTML entities ([#3071](https://github.com/sveltejs/svelte/pull/3071))
615
616## 3.5.3
617
618* Don't double-destroy keyed each blocks with outros ([#3055](https://github.com/sveltejs/svelte/issues/3055))
619
620## 3.5.2
621
622* Prevent duplicated outros causing errors ([#3001](https://github.com/sveltejs/svelte/issues/3001))
623* Fix automatic name generation ([#2843](https://github.com/sveltejs/svelte/issues/2843))
624* Fix .d.ts stubs ([#3009](https://github.com/sveltejs/svelte/pull/3009))
625* Don't strip non-breaking spaces ([#3014](https://github.com/sveltejs/svelte/issues/3014))
626* Fix `requestAnimationFrame` context ([#2933](https://github.com/sveltejs/svelte/issues/2933))
627* Allow space before attribute value ([#3026](https://github.com/sveltejs/svelte/issues/3026))
628* Remove null/undefined attributes ([#1434](https://github.com/sveltejs/svelte/issues/1434))
629* Fix whitespace in static markup ([#3030](https://github.com/sveltejs/svelte/pull/3030))
630
631## 3.5.1
632
633* Accommodate webpack idiosyncracies
634
635## 3.5.0
636
637* Update package folder structure ([#2887](https://github.com/sveltejs/svelte/pull/2887))
638* Support `once` modifier on component events ([#2654](https://github.com/sveltejs/svelte/issues/2654))
639* Allow empty `<title>` tags ([#2980](https://github.com/sveltejs/svelte/issues/2980))
640* Render textarea binding values inside element ([#2975](https://github.com/sveltejs/svelte/pull/2975))
641* Fix delayed animation glitch ([#2871](https://github.com/sveltejs/svelte/issues/2871))
642* Solve diamond dependencies problem with stores ([#2660](https://github.com/sveltejs/svelte/issues/2660))
643* Fix missing outros inside each blocks ([#2689](https://github.com/sveltejs/svelte/issues/2689))
644* Support animations without transitions ([#2908](https://github.com/sveltejs/svelte/issues/2908))
645* Add missing transition events ([#2912](https://github.com/sveltejs/svelte/pull/2912))
646
647
648## 3.4.4
649
650* Publish type declaration files ([#2874](https://github.com/sveltejs/svelte/issues/2874))
651* Don't trigger updates for unreferenced values ([#2865](https://github.com/sveltejs/svelte/pull/2865))
652* Omit readonly bindings from SSR output ([#2339](https://github.com/sveltejs/svelte/issues/2339))
653* Prevent outdated animation CSS ([#2871](https://github.com/sveltejs/svelte/issues/2871))
654* Repair dynamic `{@html ...}` in head ([#2880](https://github.com/sveltejs/svelte/pull/2880))
655* Don't create unknown prop warnings for internal props, or if component has `$$props` ([#2881](https://github.com/sveltejs/svelte/pull/2881))
656
657
658## 3.4.3
659
660* Add type declaration files for everything ([#2842](https://github.com/sveltejs/svelte/pull/2842))
661* Prevent `svelte/store` being bundled ([#2786](https://github.com/sveltejs/svelte/issues/2786))
662* Warn on unknown props in dev mode ([#2840](https://github.com/sveltejs/svelte/pull/2840))
663* Treat `requestAnimationFrame` as a no-op on the server ([#2856](https://github.com/sveltejs/svelte/pull/2856))
664* Add `raw` property to AST's `Text` nodes ([#2714](https://github.com/sveltejs/svelte/issues/2714))
665* Add `<details bind:open>` ([#2854](https://github.com/sveltejs/svelte/issues/2854))
666
667## 3.4.2
668
669* Use empty string for empty data attributes ([#2804](https://github.com/sveltejs/svelte/pull/2804))
670* Support `customElement: true` with no `<svelte:options>` ([#2821](https://github.com/sveltejs/svelte/issues/2821))
671* Add docstrings to `svelte/store` ([#2795](https://github.com/sveltejs/svelte/pull/2795))
672
673## 3.4.1
674
675* Handle non-falsy non-function return values from derivers ([#2780](https://github.com/sveltejs/svelte/issues/2780))
676* Allow `spring` to work server-side ([#2773](https://github.com/sveltejs/svelte/issues/2773))
677
678## 3.4.0
679
680* Allow custom element to be defined without a `tag` ([#2417](https://github.com/sveltejs/svelte/issues/2417))
681* Fix parsing of quote marks inside attribute values ([#2715](https://github.com/sveltejs/svelte/pull/2754))
682* Convert `svelte/store` to TypeScript ([#2733](https://github.com/sveltejs/svelte/pull/2733))
683* Allow `debug` tags to include hoisted values ([#2764](https://github.com/sveltejs/svelte/issues/2764))
684* Parse error if attribute name is missing `=` ([#1513](https://github.com/sveltejs/svelte/pull/2770))
685* Allow reactive declarations to depend on mutated `const` values ([#2728](https://github.com/sveltejs/svelte/issues/2728))
686
687## 3.3.0
688
689* Allow multiple event listeners on a single node ([#2688](https://github.com/sveltejs/svelte/issues/2688))
690* Allow derivers to return a cleanup function ([#2553](https://github.com/sveltejs/svelte/issues/2553))
691* Support namespaced components (`<Foo.Bar/>`) ([#2743](https://github.com/sveltejs/svelte/pull/2743))
692
693## 3.2.2
694
695* Add `window` and `document` to expected globals ([#2722](https://github.com/sveltejs/svelte/pull/2722))
696* Prevent hoisting of functions that depend on reactive state ([#2703](https://github.com/sveltejs/svelte/pull/2703))
697* Generate correct code when slot has no changes ([#2697](https://github.com/sveltejs/svelte/issues/2697))
698* Prevent `Object.prototype`-related bugs ([#2696](https://github.com/sveltejs/svelte/pull/2696))
699
700## 3.2.1
701
702* Use same comparison logic for `derived` as for other stores ([#2644](https://github.com/sveltejs/svelte/issues/2644))
703* Invalidate dependencies of reactive declarations ([#2444](https://github.com/sveltejs/svelte/issues/2444))
704* Fix instrumentation of auto-subscription self-assignments ([#2681](https://github.com/sveltejs/svelte/issues/2681))
705* Warn on non-top-level or module-context statements labeled with `$:` ([#2176](https://github.com/sveltejs/svelte/issues/2176))
706
707## 3.2.0
708
709* Improve `spring` animations, and add `hard`/`soft` options ([#2627](https://github.com/sveltejs/svelte/pull/2627))
710* Expose `parse` and `walk` functions ([#2661](https://github.com/sveltejs/svelte/issues/2661), [#2534](https://github.com/sveltejs/svelte/pull/2534))
711* Support array/object rest in `each` block destructuring patterns ([#2647](https://github.com/sveltejs/svelte/issues/2647), [#2658](https://github.com/sveltejs/svelte/pull/2658))
712* Use `setAttribute` to change `form` property on form elements ([#1742](https://github.com/sveltejs/svelte/issues/1742))
713* Fix a11y warning when `<figcaption>` is non-direct descendant of `<figure>` ([#2582](https://github.com/sveltejs/svelte/issues/2582))
714* Squelch erroneous 'empty block' warnings ([#1716](https://github.com/sveltejs/svelte/issues/1716))
715* Fix IE9/10 error with `insertBefore` ([#2573](https://github.com/sveltejs/svelte/issues/2573))
716* Prevent `$$scope` from being spread onto an element ([#2520](https://github.com/sveltejs/svelte/issues/2520))
717* Resubscribe to stores that are assigned to in `<script>` ([#2435](https://github.com/sveltejs/svelte/issues/2435))
718* Allow reactive declarations to depend on `const` variables ([#2285](https://github.com/sveltejs/svelte/issues/2285))
719* Trigger store changes on UpdateExpression ([#2625](https://github.com/sveltejs/svelte/issues/2625))
720* Squelch missing prop warning if variable is initialised ([#2635](https://github.com/sveltejs/svelte/issues/2635))
721* Add `alert`, `confirm` and `prompt` to known globals ([#2648](https://github.com/sveltejs/svelte/issues/2648))
722
723
724## 3.1.0
725
726* Allow store subscribe functions to return an object with an `unsubscribe` method, providing native RxJS support ([#2549](https://github.com/sveltejs/svelte/issues/2549))
727
728## 3.0.1
729
730* Prevent text input cursor jumping in Safari ([#2506](https://github.com/sveltejs/svelte/issues/2506))
731* Allow assignments to member expressions ([#2510](https://github.com/sveltejs/svelte/issues/2510))
732* Prevent mutually dependent functions causing an infinite during hoisting ([#2542](https://github.com/sveltejs/svelte/issues/2542))
733* Reuse scheduler promise instead of creating new one each time ([#2555](https://github.com/sveltejs/svelte/pull/2555))
734* Various site/docs fixes
735
736## 3.0.0
737
738* Everything
739
740## 2.15.4
741
742* IE `classList` fix ([#1868](https://github.com/sveltejs/svelte/pull/1868))
743
744## 2.15.3
745
746* Don't mutate AST
747
748## 2.15.2
749
750* Expose `stats.props` ([#1837](https://github.com/sveltejs/svelte/issues/1837))
751
752## 2.15.1
753
754* Don't throw missing store error when store is declared in component ([#1828](https://github.com/sveltejs/svelte/issues/1828))
755
756## 2.15.0
757
758* Event modifiers ([#1088](https://github.com/sveltejs/svelte/issues/1088))
759* Wheel and touch events are passive by default ([#1088](https://github.com/sveltejs/svelte/issues/1088))
760* Add `<svelte:document>` tag ([#1484](https://github.com/sveltejs/svelte/issues/1484))
761* Include binding values in server-rendered HTML ([#1205](https://github.com/sveltejs/svelte/issues/1205))
762* Remove attributes when value is undefined/null ([#1434](https://github.com/sveltejs/svelte/issues/1434))
763* Initialise window scroll from component data ([#938](https://github.com/sveltejs/svelte/issues/938))
764* Remove references to unused properties in generated code ([#1187](https://github.com/sveltejs/svelte/issues/1187))
765* Add TypeScript definitions for store ([#1207](https://github.com/sveltejs/svelte/issues/1207))
766* Better error for missing store ([#1807](https://github.com/sveltejs/svelte/issues/1807))
767
768## 2.14.3
769
770* Account for directive dependencies ([#1793](https://github.com/sveltejs/svelte/issues/1793))
771* Detach each block iterations in each blocks with no update method ([#1795](https://github.com/sveltejs/svelte/issues/1795))
772
773## 2.14.2
774
775* Fix issue with nested `{#if}` blocks ([#1780](https://github.com/sveltejs/svelte/issues/1780))
776
777## 2.14.1
778
779* Fix block insertion order regression ([#1778](https://github.com/sveltejs/svelte/issues/1778))
780* Fix blocks inside `<svelte:head>` ([#1774](https://github.com/sveltejs/svelte/issues/1774))
781* Better attribute parsing ([#1772](https://github.com/sveltejs/svelte/issues/1772))
782* Fix parse errors inside directives ([#1788](https://github.com/sveltejs/svelte/issues/1788))
783
784
785## 2.14.0
786
787* Refactor internals ([#1678](https://github.com/sveltejs/svelte/issues/1678))
788* Deprecate `onerror` option ([#1745](https://github.com/sveltejs/svelte/issues/1745))
789* Handle edge cases where `destroy` is called before `mount` ([#1653](https://github.com/sveltejs/svelte/pull/1653))
790* Make `scroll` binding more efficient ([#1579](https://github.com/sveltejs/svelte/pull/1770))
791* Make 'readonly property' store error more informative ([#1761](https://github.com/sveltejs/svelte/pull/1761))
792
793## 2.13.5
794
795* Fix missing dependencies in shorthand class directives ([#1739](https://github.com/sveltejs/svelte/issues/1739))
796
797## 2.13.4
798
799* Support dynamic `import()` in template expressions
800
801## 2.13.3
802
803* Fix bug with keyed each blocks and nested components ([#1706](https://github.com/sveltejs/svelte/issues/1706))
804
805## 2.13.2
806
807* Coalesce simultaneous store/component updates ([#1520](https://github.com/sveltejs/svelte/issues/1520))
808* Fix nested transitions preventing each block item removal ([#1617](https://github.com/sveltejs/svelte/issues/1617))
809* Add `class` directive shorthand and encapsulate styles ([#1695](https://github.com/sveltejs/svelte/pull/1695))
810* Prevent erroneous updates of bound inputs ([#1699](https://github.com/sveltejs/svelte/issues/1699))
811
812## 2.13.1
813
814* Coerce second argument to `toggleClass` ([#1685](https://github.com/sveltejs/svelte/issues/1685))
815
816## 2.13.0
817
818* Add `class` directive ([#890](https://github.com/sveltejs/svelte/issues/890))
819* Remove sourcemaps from npm package ([#1690](https://github.com/sveltejs/svelte/pull/1690))
820
821## 2.12.1
822
823* Allow actions to take any expression ([#1676](https://github.com/sveltejs/svelte/issues/1676))
824* Run transitions in component context ([#1675](https://github.com/sveltejs/svelte/issues/1675))
825* Correctly set select value on mount ([#1666](https://github.com/sveltejs/svelte/issues/1666))
826* Support `{@debug}` in SSR ([#1659](https://github.com/sveltejs/svelte/issues/1659))
827* Don't treat `&nbsp;` as empty whitespace ([#1658](https://github.com/sveltejs/svelte/issues/1658))
828* Fix outros for if blocks with no else ([#1688](https://github.com/sveltejs/svelte/pull/1688))
829* Set `style.cssText` in spread attributes ([#1684](https://github.com/sveltejs/svelte/pull/1684))
830
831
832## 2.12.0
833
834* Initialise actions on mount rather than hydrate ([#1653](https://github.com/sveltejs/svelte/pull/1653))
835* Allow non-existent components to be destroyed ([#1677](https://github.com/sveltejs/svelte/pull/1677))
836* Pass AMD ID from CLI correctly ([#1672](https://github.com/sveltejs/svelte/pull/1672))
837* Minor AST tweaks ([#1673](https://github.com/sveltejs/svelte/pull/1673), [#1674](https://github.com/sveltejs/svelte/pull/1674))
838* Reduce code duplication in component initialisation ([#1670](https://github.com/sveltejs/svelte/pull/1670))
839
840
841## 2.11.0
842
843* Add `--shared` CLI option ([#1649](https://github.com/sveltejs/svelte/pull/1649))
844* Run first `onstate` *before* fragment is rendered ([#1522](https://github.com/sveltejs/svelte/issues/1522))
845* Exclude current computed prop from state object ([#1544](https://github.com/sveltejs/svelte/issues/1544))
846
847
848## 2.10.1
849
850* Add sourcemaps to `{@debug}` tags ([#1647](https://github.com/sveltejs/svelte/pull/1647))
851
852## 2.10.0
853
854* Add a `{@debug}` tag, for inspecting values in templates in dev mode ([#1635](https://github.com/sveltejs/svelte/issues/1635))
855* Fix dimension bindings in iOS ([#1642](https://github.com/sveltejs/svelte/pull/1642))
856
857## 2.9.11
858
859* Pass props to custom elements rather than setting attributes, where appropriate ([#875](https://github.com/sveltejs/svelte/issues/875))
860* Handle whitespace in lists consistently between SSR and DOM renderers ([#1637](https://github.com/sveltejs/svelte/pull/1637))
861* Improve error for invalid `ref` names ([#1613](https://github.com/sveltejs/svelte/issues/1613))
862
863## 2.9.10
864
865* Handle `null` consistently in tags ([#1598](https://github.com/sveltejs/svelte/issues/1598))
866* Support object rest in computed properties ([#1540](https://github.com/sveltejs/svelte/issues/1540))
867* Always update dynamic components when expression changes ([#1621](https://github.com/sveltejs/svelte/issues/1621))
868* Encapsulate local styles inside global styles ([#1618](https://github.com/sveltejs/svelte/issues/1618))
869
870## 2.9.9
871
872* Fix attribute name regex ([#1623](https://github.com/sveltejs/svelte/pull/1623))
873
874## 2.9.8
875
876* Sanitize spread attributes in SSR — fixes vulnerability CVE-2018-6341 ([#1623](https://github.com/sveltejs/svelte/pull/1623))
877
878## 2.9.7
879
880* Allow `<input type=file bind:files>` ([#1608](https://github.com/sveltejs/svelte/issues/1608))
881* Ensure child window exists before removing listener in `addResizeHandler` ([#1600](https://github.com/sveltejs/svelte/issues/1600))
882* Handle transitions in `else` block ([#1589](https://github.com/sveltejs/svelte/issues/1589))
883
884## 2.9.6
885
886* Provide more useful error if SSR component attempts to render non-SSR component ([#1605](https://github.com/sveltejs/svelte/issues/1605))
887
888## 2.9.5
889
890* Null out refs to dynamic components ([#1596](https://github.com/sveltejs/svelte/issues/1596))
891
892## 2.9.4
893
894* Make identifier optional for `then` and `catch` blocks ([#1507](https://github.com/sveltejs/svelte/issues/1507))
895* Group outros correctly ([#1575](https://github.com/sveltejs/svelte/issues/1575))
896
897## 2.9.3
898
899* Fix bug when an each block contains transitions but its else branch does not ([#1559](https://github.com/sveltejs/svelte/issues/1559))
900* If an event handler throws an exception, don't block all future calls to that handler ([#1573](https://github.com/sveltejs/svelte/issues/1573))
901
902## 2.9.2
903
904* Fix conflict when using multiple if-else blocks, some of which use outros and some of which do not ([#1580](https://github.com/sveltejs/svelte/issues/1580))
905* Fix some cases where `.innerHTML` was being used to create child elements when it shouldn't ([#1581](https://github.com/sveltejs/svelte/issues/1581))
906
907## 2.9.1
908
909* Use `template.content` instead of `template` where appropriate ([#1571](https://github.com/sveltejs/svelte/issues/1571))
910
911## 2.9.0
912
913* Play outro transitions on `<svelte:component>` if `nestedTransitions` is true ([#1568](https://github.com/sveltejs/svelte/issues/1568))
914* Allow illegal identifiers to be component prop names, for e.g. spreading `data-foo` props ([#887](https://github.com/sveltejs/svelte/issues/887))
915* Abort transition when node is detached ([#1561](https://github.com/sveltejs/svelte/issues/1561))
916* Only include `transitionManager` when necessary ([#1514](https://github.com/sveltejs/svelte/issues/1514))
917
918## 2.8.1
919
920* Fix prefixed animation name replacement ([#1556](https://github.com/sveltejs/svelte/pull/1556))
921
922## 2.8.0
923
924* Correctly set store on nested components (to parent store, not root store) ([#1538](https://github.com/sveltejs/svelte/issues/1538))
925
926## 2.7.2
927
928* Prevent unnecessary remounts ([#1527](https://github.com/sveltejs/svelte/issues/1527))
929* Allow `refs.*` as callee ([#1526](https://github.com/sveltejs/svelte/pull/1526))
930* Handle empty lists when outroing ([#1532](https://github.com/sveltejs/svelte/issues/1532))
931
932## 2.7.1
933
934* Fix spread props with multiple dependencies ([#1515](https://github.com/sveltejs/svelte/issues/1515))
935
936## 2.7.0
937
938* Add `__svelte_meta` object to elements in dev mode, containing source info ([#1499](https://github.com/sveltejs/svelte/issues/1499))
939* Fix `bind:online` in dev mode ([#1502](https://github.com/sveltejs/svelte/issues/1502))
940* Update v1 warnings/errors ([#1508](https://github.com/sveltejs/svelte/pull/1508))
941* Transform prefixed keyframes ([#1504](https://github.com/sveltejs/svelte/issues/1504))
942
943## 2.6.6
944
945* Fix nested transition bug ([#1497](https://github.com/sveltejs/svelte/issues/1497))
946
947## 2.6.5
948
949* Handle cases where only some `if` block branches have outros ([#1492](https://github.com/sveltejs/svelte/issues/1492))
950
951## 2.6.4
952
953* Web worker support ([#1487](https://github.com/sveltejs/svelte/issues/1487))
954* Update dynamic component bindings when component changes ([#1489](https://github.com/sveltejs/svelte/issues/1489))
955
956## 2.6.3
957
958* Nested transitions respect `skipIntroByDefault` ([#1460](https://github.com/sveltejs/svelte/issues/1460))
959* Always create outro for top-level block ([#1470](https://github.com/sveltejs/svelte/issues/1470))
960
961## 2.6.2
962
963* Fix spread+bindings on dynamic components ([#1433](https://github.com/sveltejs/svelte/issues/1433))
964* Abort in-progress animations, if a new one starts ([#1458](https://github.com/sveltejs/svelte/issues/1458))
965* Allow animations to be parameterised ([#1462](https://github.com/sveltejs/svelte/issues/1462))
966
967## 2.6.1
968
969* Absolutely position outroing animated nodes ([#1457](https://github.com/sveltejs/svelte/pull/1457))
970
971## 2.6.0
972
973* Add `animate` directive ([#1454](https://github.com/sveltejs/svelte/pull/1454))
974* Add `skipIntroByDefault` compiler option and `intro: true` init option ([#1448](https://github.com/sveltejs/svelte/pull/1448))
975* Add `nestedTransitions` compiler option ([#1451](https://github.com/sveltejs/svelte/pull/1451))
976* Component outros, if `nestedTransitions` is true ([#1211](https://github.com/sveltejs/svelte/issues/1211))
977* Allow transition functions to return a function, for inter-transition coordination ([#1453](https://github.com/sveltejs/svelte/pull/1453))
978* Pass `1 - t` as second argument to transition functions ([#1452](https://github.com/sveltejs/svelte/pull/1452))
979
980## 2.5.1
981
982* Add new ARIA attributes ([#1436](https://github.com/sveltejs/svelte/pull/1436))
983* Add `Promise` to whitelisted globals ([#1441](https://github.com/sveltejs/svelte/issues/1441))
984* Allow spaces around reserved keyword attributes ([#1445](https://github.com/sveltejs/svelte/issues/1445))
985
986## 2.5.0
987
988* Support transitions in `await` blocks ([#956](https://github.com/sveltejs/svelte/issues/956))
989* Abort outros if block is recreated ([#1425](https://github.com/sveltejs/svelte/issues/1425))
990* Wait until transitions have completed before removing styles ([#648](https://github.com/sveltejs/svelte/issues/648))
991* Support event shorthand on dynamic components ([#1427](https://github.com/sveltejs/svelte/pull/1427))
992* Various codegen improvements ([#1419](https://github.com/sveltejs/svelte/pull/1419), [#1421](https://github.com/sveltejs/svelte/pull/1421), [#1422](https://github.com/sveltejs/svelte/pull/1422), [#1424](https://github.com/sveltejs/svelte/pull/1424))
993* Correctly handle `await` blocks with no dynamic content ([#1417](https://github.com/sveltejs/svelte/issues/1417))
994* Allow spread props on elements with static attribute tests ([#1429](https://github.com/sveltejs/svelte/pull/1429))
995
996
997## 2.4.4
998
999* Declare missing variable in Store ([#1415](https://github.com/sveltejs/svelte/issues/1415))
1000* ALways declare spread levels ([#1413](https://github.com/sveltejs/svelte/issues/1413))
1001
1002## 2.4.3
1003
1004* `ref` directives prevent HTMLified content ([#1407](https://github.com/sveltejs/svelte/issues/1407))
1005* Store computed properties update components immediately upon declaration ([#1327](https://github.com/sveltejs/svelte/issues/1327))
1006
1007## 2.4.2
1008
1009* Evaluate `each` key in child scope ([#1397](https://github.com/sveltejs/svelte/issues/1397))
1010* Prevent false negatives and positives when detecting cyclical computed store properties ([#1399](https://github.com/sveltejs/svelte/issues/1399))
1011* Only update dynamic component props ([#1394](https://github.com/sveltejs/svelte/issues/1394))
1012
1013## 2.4.1
1014
1015* Fix DOM event context ([#1390](https://github.com/sveltejs/svelte/issues/1390))
1016
1017## 2.4.0
1018
1019* Integrate CLI ([#1360](https://github.com/sveltejs/svelte/issues/1360))
1020* Allow arbitrary destructuring for each block items, with binding ([#1385](https://github.com/sveltejs/svelte/pull/1385))
1021* Each block keys can use arbitrary expressions ([#703](https://github.com/sveltejs/svelte/issues/703))
1022* `bind:offsetWidth`, `bind:offsetHeight`, `bind:clientWidth` and `bind:clientHeight` ([#984](https://github.com/sveltejs/svelte/issues/984))
1023* Leaner generated code for `each` blocks ([#1287](https://github.com/sveltejs/svelte/issues/1287))
1024
1025
1026## 2.3.0
1027
1028* Allow computed properties to have entire state object as dependency ([#1303](https://github.com/sveltejs/svelte/issues/1303))
1029* Fix `stats` when `options.generate` is `false` ([#1368](https://github.com/sveltejs/svelte/issues/1368))
1030* Assign custom methods to custom elements ([#1369](https://github.com/sveltejs/svelte/issues/1369))
1031* Fix `this` value in custom event handlers ([#1297](https://github.com/sveltejs/svelte/issues/1297))
1032* Re-evaluate `each` values lazily ([#1286](https://github.com/sveltejs/svelte/issues/1286))
1033* Preserve outer context in `await` blocks ([#1251](https://github.com/sveltejs/svelte/issues/1251))
1034
1035## 2.2.0
1036
1037* Internal refactoring ([#1367](https://github.com/sveltejs/svelte/pull/1367))
1038
1039## 2.1.1
1040
1041* Report initial `changed` based on state, not expected props ([#1356](https://github.com/sveltejs/svelte/issues/1356))
1042* Set state to empty object, not null, on destroy ([#1354](https://github.com/sveltejs/svelte/issues/1354))
1043* Prevent stale state in component event handlers ([#1353](https://github.com/sveltejs/svelte/issues/1353))
1044
1045## 2.1.0
1046
1047* Allow shorthand imports ([#1038](https://github.com/sveltejs/svelte/issues/1038))
1048* Update spread props inside each blocks ([#1337](https://github.com/sveltejs/svelte/issues/1337))
1049
1050## 2.0.0
1051
1052*See [the blog post](https://svelte.dev/blog/version-2) for information on how to upgrade your apps*
1053
1054* New template syntax ([#1318](https://github.com/sveltejs/svelte/issues/1318))
1055* Emit ES2015 code, not ES5 ([#1348](https://github.com/sveltejs/svelte/pull/1348))
1056* Add `onstate` and `onupdate` hooks, remove `component.observe` method ([#1197](https://github.com/sveltejs/svelte/issues/1197))
1057* Use destructuring syntax for computed properties ([#1069](https://github.com/sveltejs/svelte/issues/1069)
1058* Change signature of `svelte.compile` ([#1298](https://github.com/sveltejs/svelte/pull/1298))
1059* Remove `validate` and `Stylesheet` from public API ([#1348](https://github.com/sveltejs/svelte/pull/1348))
1060* Don't typecast numeric attributes ([#657](https://github.com/sveltejs/svelte/issues/657))
1061* Always compile with `Store` support, and cascading disabled ([#1348](https://github.com/sveltejs/svelte/pull/1348))
1062* Remove unused `hash` property from AST ([#1348](https://github.com/sveltejs/svelte/pull/1348))
1063* Rename `loc` property to `start` in warnings and errors ([#1348](https://github.com/sveltejs/svelte/pull/1348))
1064
1065## 1.64.1
1066
1067* Fix computed properties in SSR renderer ([#1349](https://github.com/sveltejs/svelte/issues/1349))
1068
1069## 1.64.0
1070
1071* Deprecate passing a string argument to `component.get` ([#1347](https://github.com/sveltejs/svelte/pull/1347))
1072
1073## 1.63.1
1074
1075* Allow `observe` method to be overwritten
1076
1077## 1.63.0
1078
1079* Add `onstate` and `onupdate` lifecycle hooks and deprecate `component.observe` ([#1197](https://github.com/sveltejs/svelte/issues/1197))
1080* Add `on` and `fire` to `Store`, deprecate `onchange` and `observe` ([#1344](https://github.com/sveltejs/svelte/pull/1344))
1081* Require computed properties to have destructured argument in v2 mode ([#1069](https://github.com/sveltejs/svelte/issues/1069))
1082
1083## 1.62.0
1084
1085* Add a `code` field to errors and warnings ([#474](https://github.com/sveltejs/svelte/issues/474))
1086* When using v2 syntax, do not use interpolation in non-root `<style>` tags ([#1339](https://github.com/sveltejs/svelte/issues/1339))
1087
1088## 1.61.0
1089
1090* Support v2 syntax with `parser: 'v2'` option ([#1318](https://github.com/sveltejs/svelte/issues/1318))
1091
1092## 1.60.3
1093
1094* Fix validation of `multiple` attributes on bound `<select>` elements ([#1331](https://github.com/sveltejs/svelte/issues/1331))
1095
1096## 1.60.2
1097
1098* Fix order of insertions for keyed each blocks with siblings ([#1306](https://github.com/sveltejs/svelte/issues/1306))
1099* Bail out of CSS DCE if element has spread attribute ([#1300](https://github.com/sveltejs/svelte/issues/1300))
1100* Allow `console` etc in component events ([#1278](https://github.com/sveltejs/svelte/issues/1278))
1101* Deconflict against inherited contexts ([#1275](https://github.com/sveltejs/svelte/issues/1275))
1102* Make CSS DCE case insensitive ([#1269](https://github.com/sveltejs/svelte/issues/1269))
1103* Error on dynamic `multiple` attribute for bound select ([#1270](https://github.com/sveltejs/svelte/issues/1270))
1104* Allow custom events on `<:Window>` ([#1268](https://github.com/sveltejs/svelte/issues/1268))
1105
1106## 1.60.1
1107
1108* Fix spread updates on dynamic components ([#1307](https://github.com/sveltejs/svelte/issues/1307))
1109
1110## 1.60.0
1111
1112* Spread properties ([#195](https://github.com/sveltejs/svelte/issues/195))
1113* `svelte.compile` returns an object with `{ js, css, ast }` properties, where `js` and `css` are `{ code, map }` objects ([#1298](https://github.com/sveltejs/svelte/pull/1298))
1114* Fixed broken compile errors when using Rollup ([#1296](https://github.com/sveltejs/svelte/pull/1296))
1115
1116## 1.59.0
1117
1118* Deprecate `teardown` in custom event handlers ([#531](https://github.com/sveltejs/svelte/issues/531))
1119* Allow static content in keyed `each` block ([#1291](https://github.com/sveltejs/svelte/issues/1291))
1120* Allow empty content in keyed `each` block ([#1295](https://github.com/sveltejs/svelte/issues/1295))
1121* Only delete applicable transitions ([#1290](https://github.com/sveltejs/svelte/issues/1290))
1122
1123## 1.58.5
1124
1125* Allow backtick string literals for `svg`, `tag`, and `props` properties ([#1284](https://github.com/sveltejs/svelte/issues/1284))
1126* Fix removal of transition styles under Firefox ([#1288](https://github.com/sveltejs/svelte/pull/1288))
1127
1128## 1.58.4
1129
1130* Fix initial state regression ([#1283](https://github.com/sveltejs/svelte/pull/1283))
1131
1132## 1.58.3
1133
1134* Actions run in the context of the component ([#1279](https://github.com/sveltejs/svelte/pull/1279))
1135* Set refs when mounting dynamic components ([#1280](https://github.com/sveltejs/svelte/pull/1280))
1136
1137## 1.58.2
1138
1139* (1.58.1 failed to publish)
1140
1141## 1.58.1
1142
1143* Actions ([#1247](https://github.com/sveltejs/svelte/pull/1247))
1144* Support `preserveComments` option in SSR mode ([#1265](https://github.com/sveltejs/svelte/issues/1265))
1145* Fix performance regression ([#1274](https://github.com/sveltejs/svelte/pull/1274))
1146
1147## 1.58.0
1148
1149* Fast row swapping ([#588](https://github.com/sveltejs/svelte/issues/588))
1150* Better error messages for invalid directives ([#1242](https://github.com/sveltejs/svelte/pull/1242))
1151* Fix local context variable bugs ([#1240](https://github.com/sveltejs/svelte/pull/1243), [#1254](https://github.com/sveltejs/svelte/pull/1254))
1152* Skip missing property warnings for computed/global properties in dev mode ([#1246](https://github.com/sveltejs/svelte/pull/1246))
1153* Add end position to warnings ([#1250](https://github.com/sveltejs/svelte/pull/1250))
1154
1155## 1.57.4
1156
1157* Deconflict context names ([#1229](https://github.com/sveltejs/svelte/issues/1229))
1158* Use `setAttribute` to set input types ([#1209](https://github.com/sveltejs/svelte/issues/1209))
1159* Scale transition duration correctly ([#1221](https://github.com/sveltejs/svelte/issues/1221))
1160
1161## 1.57.3
1162
1163* Fix scoped CSS on static child elements ([#1223](https://github.com/sveltejs/svelte/issues/1223))
1164
1165## 1.57.2
1166
1167* Fix scoped CSS on SVG elements ([#1224](https://github.com/sveltejs/svelte/issues/1224))
1168
1169## 1.57.1
1170
1171* Add each_value to contextProps ([#1206](https://github.com/sveltejs/svelte/issues/1206))
1172
1173## 1.57.0
1174
1175* Use classes (not attributes) for style encapsulation, and base36-encode hashes ([#1118](https://github.com/sveltejs/svelte/issues/1118))
1176
1177## 1.56.4
1178
1179* Allow `component` and `state` to be context names ([#1213](https://github.com/sveltejs/svelte/issues/1213))
1180* Don't remove `@supports` rules when `cascade: false` ([#1215](https://github.com/sveltejs/svelte/issues/1215))
1181
1182## 1.56.3
1183
1184* Top-level transitions work inside nested components ([#1188](https://github.com/sveltejs/svelte/issues/1188))
1185* Always use internal `_mount` method ([#1201](https://github.com/sveltejs/svelte/issues/1201))
1186
1187## 1.56.2
1188
1189* Null out `key` for children of keyed each blocks ([#1202](https://github.com/sveltejs/svelte/issues/1202))
1190
1191## 1.56.1
1192
1193* Fix if-in-each bug ([#1195](https://github.com/sveltejs/svelte/issues/1195))
1194* Cross-browser `scrollX`/`scrollY` support ([#1175](https://github.com/sveltejs/svelte/issues/1175))
1195
1196## 1.56.0
1197
1198* Internal refactor ([#1122](https://github.com/sveltejs/svelte/issues/1122))
1199* Use correct context for component events ([#1184](https://github.com/sveltejs/svelte/issues/1184))
1200* Allow observing `$foo` in dev mode ([#1181](https://github.com/sveltejs/svelte/issues/1181))
1201* Handle dynamic data in default slot ([#1144](https://github.com/sveltejs/svelte/issues/1144))
1202
1203## 1.55.1
1204
1205* Fix cancellation of store `onchange` handlers ([#1177](https://github.com/sveltejs/svelte/issues/1177))
1206* Write `["default"]` instead of `.default` in legacy mode ([#1166](https://github.com/sveltejs/svelte/issues/1166))
1207* Upgrade Acorn ([#1182](https://github.com/sveltejs/svelte/pull/1182))
1208* Don't warn about capitalisation if `options.name` begins with non-alphabetical character ([#1179](https://github.com/sveltejs/svelte/pull/1179))
1209
1210## 1.55.0
1211
1212* Add `immutable` compiler option for Svelte and runtime option for `Store` ([#1146](https://github.com/sveltejs/svelte/issues/1146))
1213* Fix component store bindings ([#1100](https://github.com/sveltejs/svelte/issues/1100))
1214* Fire `oncreate` when custom element is attached ([#1117](https://github.com/sveltejs/svelte/issues/1117))
1215* Downgrade empty blocks to a warning ([#1156](https://github.com/sveltejs/svelte/pull/1156))
1216* Error on unclosed comment ([#1156](https://github.com/sveltejs/svelte/pull/1156))
1217
1218## 1.54.2
1219
1220* Prevent `await` blocks using stale state ([#1131](https://github.com/sveltejs/svelte/issues/1131))
1221* Prevent erroneous missing data warnings for custom elements ([#1065](https://github.com/sveltejs/svelte/issues/1065))
1222* Remove empty selectors in prod mode ([#1138](https://github.com/sveltejs/svelte/issues/1138))
1223* Escape attribute values in SSR mode ([#1155](https://github.com/sveltejs/svelte/pull/1155))
1224* Remove `<noscript>` elements in DOM mode ([#1108](https://github.com/sveltejs/svelte/issues/1108))
1225* Allow hydration of non-root `<script>`/`<style>` tags ([#1163](https://github.com/sveltejs/svelte/pull/1163))
1226* Allow interpolation in non-root `<style>` tags ([#1163](https://github.com/sveltejs/svelte/pull/1163))
1227
1228## 1.54.1
1229
1230* Hoist destructured references ([#1139](https://github.com/sveltejs/svelte/issues/1139))
1231* Add `bind:volume` for media elements ([#1143](https://github.com/sveltejs/svelte/issues/1143))
1232
1233## 1.54.0
1234
1235* Run `oncreate` hooks depth-first, top-to-bottom ([#1135](https://github.com/sveltejs/svelte/issues/1135))
1236* Render boolean attributes correctly in SSR mode ([#1109](https://github.com/sveltejs/svelte/issues/1109))
1237* Add `feed` aria role to expected roles when doing a11y checks ([#1124](https://github.com/sveltejs/svelte/pull/1124))
1238* More complete fix for case sensitive attributes ([#1062](https://github.com/sveltejs/svelte/issues/1062))
1239* Handle CLRF line endings in await block comments ([#1132](https://github.com/sveltejs/svelte/issues/1132))
1240
1241## 1.53.0
1242
1243* Base scoping selectors on `<style>` contents alone ([#1091](https://github.com/sveltejs/svelte/issues/1091))
1244
1245## 1.52.0
1246
1247* Deconflict referenced globals ([#1079](https://github.com/sveltejs/svelte/issues/1079))
1248* Validate contents of `await` blocks ([#1061](https://github.com/sveltejs/svelte/issues/1061))
1249* Fire `oncreate` for components in `await` blocks ([#1061](https://github.com/sveltejs/svelte/issues/1061))
1250* Automatically fix attribute casing ([#1062](https://github.com/sveltejs/svelte/issues/1062))
1251* Fix escaping in `<script>` and `<style>` ([#1082](https://github.com/sveltejs/svelte/issues/1082))
1252* Error if invalid characters are used in computed properties, and allow any valid identifier in props ([#1083](https://github.com/sveltejs/svelte/issues/1083))
1253* Don't run a11y tests on components ([#1110](https://github.com/sveltejs/svelte/issues/1110))
1254* Respect `store` option in SSR mode ([#1107](https://github.com/sveltejs/svelte/issues/1107))
1255
1256## 1.51.1
1257
1258* Only escape <, > and & characters ([#1082](https://github.com/sveltejs/svelte/issues/1082))
1259
1260## 1.51.0
1261
1262* Lock `scroll` bindings ([#1071](https://github.com/sveltejs/svelte/issues/1071))
1263* Escape HTML entities when compiling to static HTML ([#1066](https://github.com/sveltejs/svelte/issues/1066))
1264* Apply a11y warnings to SVG `<a>` attributes with `xlink:href` ([#1008](https://github.com/sveltejs/svelte/issues/1008))
1265
1266## 1.50.1
1267
1268* Prevent main fragment being created twice in custom elements ([#1064](https://github.com/sveltejs/svelte/pull/1064))
1269
1270## 1.50.0
1271
1272* Detect unused/misplaced components ([#1039](https://github.com/sveltejs/svelte/issues/1039))
1273* Warn on unused event definitions/transitions ([#1051](https://github.com/sveltejs/svelte/issues/1051))
1274* Remove whitespace inside `<:Head>` ([#1026](https://github.com/sveltejs/svelte/issues/1026))
1275* Optimise `<title>` ([#1027](https://github.com/sveltejs/svelte/issues/1027))
1276* Add `bind: false` option to disable two-way binding ([#54](https://github.com/sveltejs/svelte/issues/54))
1277
1278## 1.49.3
1279
1280* Return `html` from SSR compiler `render().toString()` methods ([#1044](https://github.com/sveltejs/svelte/issues/1044))
1281* Correctly reinitialise dynamic components ([#1040](https://github.com/sveltejs/svelte/issues/1040))
1282* Allow `<option>` outside `<select>` ([#1022](https://github.com/sveltejs/svelte/issues/1022))
1283* Fix data references in await-block event handlers ([#1032](https://github.com/sveltejs/svelte/issues/1032))
1284
1285## 1.49.2
1286
1287* Add `store.umd.js` ([#967](https://github.com/sveltejs/svelte/issues/967))
1288* Warn on use of `this` inside computed properties ([#1033](https://github.com/sveltejs/svelte/pull/1033))
1289
1290## 1.49.1
1291
1292* Pass `store` to children in SSR mode ([#1029](https://github.com/sveltejs/svelte/pull/1029))
1293
1294## 1.49.0
1295
1296* Support `store` as a component property ([#1028](https://github.com/sveltejs/svelte/pull/1028))
1297
1298## 1.48.0
1299
1300* Added `<:Head>` component for injecting contents into document head ([#1013](https://github.com/sveltejs/svelte/issues/1013)))
1301* SSR `render(...)` method now returns a `{ html, css: { code, map }, head }` object ([#1013](https://github.com/sveltejs/svelte/issues/1013))
1302* SSR `renderCss(...)` method is deprecated ([#1013](https://github.com/sveltejs/svelte/issues/1013))
1303* Add a `preload` function to components ([#1015](https://github.com/sveltejs/svelte/issues/1015))
1304* Expose `this.root` on nested components ([#1023](https://github.com/sveltejs/svelte/pull/1023))
1305
1306## 1.47.2
1307
1308* Deconflict computed properties against arguments to `_recompute` ([#1012](https://github.com/sveltejs/svelte/issues/1012))
1309* Allow `await` blocks in slots ([#1018](https://github.com/sveltejs/svelte/issues/1018))
1310* Allow components without slots to have whitespace as only child ([#1007](https://github.com/sveltejs/svelte/issues/1007))
1311* Correctly set `toString` on `CompileError` ([#1016](https://github.com/sveltejs/svelte/pull/1016))
1312
1313## 1.47.1
1314
1315* Sanitize filenames in SSR mode ([#1005](https://github.com/sveltejs/svelte/issues/1005))
1316
1317## 1.47.0
1318
1319* Support dynamic `import(...)` inside `<script>` tags ([#1003](https://github.com/sveltejs/svelte/issues/1003))
1320
1321## 1.46.1
1322
1323* `await...then` shorthand ([#957](https://github.com/sveltejs/svelte/issues/957))
1324* Allow dynamic components inside elements ([#993](https://github.com/sveltejs/svelte/issues/993))
1325* Don't use `dataset` on SVG nodes ([#982](https://github.com/sveltejs/svelte/issues/982))
1326* Fix erroneous `<figcaption>` a11y warning ([#991](https://github.com/sveltejs/svelte/issues/991))
1327* Handle empty classes when pruning unused selectors ([#978](https://github.com/sveltejs/svelte/issues/978))
1328* Better trimming of SSR'd output ([#976](https://github.com/sveltejs/svelte/issues/976))
1329* Don't add `event` to `expectedProperties` ([#972](https://github.com/sveltejs/svelte/issues/972))
1330* Emit error on bad `set` arguments in dev mode ([#990](https://github.com/sveltejs/svelte/issues/990))
1331
1332## 1.46.0
1333
1334* Pass `filename` through to preprocessors ([#983](https://github.com/sveltejs/svelte/issues/983))
1335
1336## 1.45.0
1337
1338* Dynamic components ([#971](https://github.com/sveltejs/svelte/pull/971))
1339
1340## 1.44.2
1341
1342* Fix `await` blocks with siblings ([#974](https://github.com/sveltejs/svelte/issues/974))
1343* Fix `await` blocks inside `if` blocks ([#975](https://github.com/sveltejs/svelte/issues/975))
1344
1345## 1.44.1
1346
1347* Fix bidirectional transitions that reference state ([#962](https://github.com/sveltejs/svelte/issues/962))
1348
1349## 1.44.0
1350
1351* Add `svelte.preprocess` ([#181](https://github.com/sveltejs/svelte/issues/181), [#876](https://github.com/sveltejs/svelte/issues/876))
1352* Add `{{#await ...}}` blocks ([#654](https://github.com/sveltejs/svelte/issues/654))
1353
1354## 1.43.1
1355
1356* Fix parameterised transitions ([#962](https://github.com/sveltejs/svelte/issues/962))
1357* Prevent boolean attributes breaking estree-walker expectations ([#961](https://github.com/sveltejs/svelte/issues/961))
1358* Throw error on cyclical store computations ([#964](https://github.com/sveltejs/svelte/pull/964))
1359
1360## 1.43.0
1361
1362* Export `Store` class to manage global state ([#930](https://github.com/sveltejs/svelte/issues/930))
1363* Recognise `aria-current` ([#953](https://github.com/sveltejs/svelte/pull/953))
1364* Support SSR register options including `extensions` ([#939](https://github.com/sveltejs/svelte/issues/939))
1365* Friendlier error for illegal contexts ([#934](https://github.com/sveltejs/svelte/issues/934))
1366* Remove whitespace around `<:Window>` components ([#943](https://github.com/sveltejs/svelte/issues/943))
1367
1368## 1.42.1
1369
1370* Correctly append items inside a slotted `each` block ([#932](https://github.com/sveltejs/svelte/pull/932))
1371* Fix `<:Window bind:online/>` ([#936](https://github.com/sveltejs/svelte/issues/936))
1372* Attach globals to state upon initialisation ([#908](https://github.com/sveltejs/svelte/issues/908))
1373
1374## 1.42.0
1375
1376* Implement `indeterminate` binding for checkbox inputs ([#910](https://github.com/sveltejs/svelte/issues/910))
1377* Use `<option>` children as `value` attribute if none exists ([#928](https://github.com/sveltejs/svelte/issues/928))
1378* Allow quoted property names in default export and sub-properties ([#914](https://github.com/sveltejs/svelte/issues/914))
1379* Various improvements to generated code for bindings
1380
1381## 1.41.4
1382
1383* Handle self-destructive bindings ([#917](https://github.com/sveltejs/svelte/issues/917))
1384* Prevent `innerHTML` with `<option>` elements ([#915](https://github.com/sveltejs/svelte/issues/915))
1385* Use `dataset` unless `legacy` is true ([#858](https://github.com/sveltejs/svelte/issues/858))
1386* Add `prepare` script to facilitate installing from git ([#923](https://github.com/sveltejs/svelte/pull/923))
1387
1388## 1.41.3
1389
1390* Prevent argument name clashes ([#911](https://github.com/sveltejs/svelte/issues/911))
1391* Fix UMD factory arguments ([#918](https://github.com/sveltejs/svelte/pull/918))
1392* Don't attempt to set computed values ([#893](https://github.com/sveltejs/svelte/issues/893))
1393* Fix TypeScript build error ([#919](https://github.com/sveltejs/svelte/issues/919))
1394
1395## 1.41.2
1396
1397* Handle attribute selectors with no value ([#905](https://github.com/sveltejs/svelte/issues/905))
1398* Retain `async` keyword when extracting functions ([#904](https://github.com/sveltejs/svelte/issues/904))
1399* Shallow clone `data` on initialisation ([#891](https://github.com/sveltejs/svelte/pull/891))
1400
1401## 1.41.1
1402
1403* Fix updates of destructured each blocks ([#897](https://github.com/sveltejs/svelte/pull/897))
1404* Don't warn on `options.*` event handler callee ([#900](https://github.com/sveltejs/svelte/pull/900))
1405
1406## 1.41.0
1407
1408* `onwarn` and `onerror` receive default handlers as second arguments ([#883](https://github.com/sveltejs/svelte/pull/883))
1409* Recognise `muted` as boolean property on `<audio>` elements ([#886](https://github.com/sveltejs/svelte/pull/886))
1410* Array destructuring for `each` block contexts ([#889](https://github.com/sveltejs/svelte/pull/889))
1411
1412## 1.40.2
1413
1414* Ignore `@apply` and similar in CSS ([#871](https://github.com/sveltejs/svelte/issues/871))
1415* Properly escape CSS in custom elements ([#872](https://github.com/sveltejs/svelte/issues/872))
1416
1417## 1.40.1
1418
1419* Always use explicit closing tags with `innerHTML` ([#866](https://github.com/sveltejs/svelte/issues/866))
1420* Escape text in `textContent` and `innerHTML` expressions ([#868](https://github.com/sveltejs/svelte/issues/868))
1421
1422## 1.40.0
1423
1424* Short fragment method names ([#863](https://github.com/sveltejs/svelte/pull/863))
1425* Extract declarations out of default export ([#756](https://github.com/sveltejs/svelte/issues/756))
1426
1427## 1.39.4
1428
1429* Extract shared init logic ([#855](https://github.com/sveltejs/svelte/pull/855))
1430* Allow `console.*` calls in event handlers ([#782](https://github.com/sveltejs/svelte/issues/782))
1431* Marker comments in output ([#823](https://github.com/sveltejs/svelte/issues/823))
1432* Use `textContent` and `innerHTML` where appropriate ([#23](https://github.com/sveltejs/svelte/issues/23))
1433* Various improvements to generated code
1434
1435## 1.39.3
1436
1437* Allow `slot='...'` inside custom elements ([#827](https://github.com/sveltejs/svelte/issues/827))
1438* Disallow `slot='...'` inside if/each blocks ([#849](https://github.com/sveltejs/svelte/issues/849))
1439* Use correct parent node for slotted if blocks ([#850](https://github.com/sveltejs/svelte/issues/850))
1440
1441## 1.39.2
1442
1443* Escape CSS in shadow DOM ([#840](https://github.com/sveltejs/svelte/issues/840))
1444* Fix missing anchor bug inside SVG elements ([#843](https://github.com/sveltejs/svelte/issues/843))
1445
1446## 1.39.1
1447
1448* Always use anchors for slotted content ([#822](https://github.com/sveltejs/svelte/issues/822))
1449* Prevent ES6 in helpers ([#838](https://github.com/sveltejs/svelte/issues/838))
1450* Correctly determine whether to use `timeRangesToArray` ([#837](https://github.com/sveltejs/svelte/pull/837))
1451
1452## 1.39.0
1453
1454* Always attach fragment to shadow root ([#821](https://github.com/sveltejs/svelte/issues/821))
1455* Add `buffered`, `seekable`, `played` bindings to media elements ([#819](https://github.com/sveltejs/svelte/pull/819))
1456* Quote `class` properties in legacy mode ([#830](https://github.com/sveltejs/svelte/issues/830))
1457* Warn on missing `lang` attribute on `<html>` ([#828](https://github.com/sveltejs/svelte/pull/828))
1458
1459## 1.38.0
1460
1461* Compile-time a11y warnings ([#815](https://github.com/sveltejs/svelte/pull/815))
1462* Remove redundant input blowback guards ([#645](https://github.com/sveltejs/svelte/issues/645))
1463* Use component name in debugging messages ([#781](https://github.com/sveltejs/svelte/issues/781))
1464
1465## 1.37.0
1466
1467* Experimental support for compiling to custom elements ([#797](https://github.com/sveltejs/svelte/issues/797))
1468
1469## 1.36.0
1470
1471* Optimize `style` attributes where possible ([#455](https://github.com/sveltejs/svelte/issues/455))
1472
1473## 1.35.0
1474
1475* `set` and `get` continue to work until `destroy` is complete ([#788](https://github.com/sveltejs/svelte/issues/788))
1476* Observers of unchanged bound values don't fire incorrectly ([#804](https://github.com/sveltejs/svelte/issues/804))
1477* Nested components with slotted content render correctly in SSR mode ([#801](https://github.com/sveltejs/svelte/issues/801))
1478* More efficient rendering of raw and slotted content ([#637](https://github.com/sveltejs/svelte/issues/637))
1479* Handle unquoted attributes in attribute selectors ([#798](https://github.com/sveltejs/svelte/issues/798))
1480
1481## 1.34.0
1482
1483* Support nested `<slot>` elements ([#790](https://github.com/sveltejs/svelte/issues/790))
1484* Attach `options` to instance ([#550](https://github.com/sveltejs/svelte/issues/550), [#777](https://github.com/sveltejs/svelte/issues/777))
1485* Error if transitions are applied to component ([#791](https://github.com/sveltejs/svelte/issues/791))
1486* Handle CSS variables in `<style>` tag ([#757](https://github.com/sveltejs/svelte/issues/757))
1487
1488## 1.33.0
1489
1490* Replace `{{yield}}` with `<slot>` — adds fallback content named slots, and `options.slots` ([#763](https://github.com/sveltejs/svelte/issues/763))
1491
1492## 1.32.0
1493
1494* Allow `anchor` initialisation option, alongside `target` ([#784](https://github.com/sveltejs/svelte/issues/784))
1495* Remove leading CSS selectors safely ([#783](https://github.com/sveltejs/svelte/issues/783))
1496
1497## 1.31.0
1498
1499* Add `legacy` compile option, which adds IE9 compatibility ([#773](https://github.com/sveltejs/svelte/issues/773))
1500
1501## 1.30.0
1502
1503* Update all component bindings simultaneously ([#760](https://github.com/sveltejs/svelte/issues/760))
1504* Fix `@keyframes` atrules with `from` and `to` selectors ([#774](https://github.com/sveltejs/svelte/issues/774))
1505
1506## 1.29.3
1507
1508* Only recompute tag and attribute values if they could have changed ([#768](https://github.com/sveltejs/svelte/issues/768))
1509* Fix CSS scoping with multiple levels of descendant selectors ([#767](https://github.com/sveltejs/svelte/issues/767))
1510
1511## 1.29.2
1512
1513* Preserve space before non-parenthesized media query expression ([#759](https://github.com/sveltejs/svelte/issues/759))
1514* Call `create()` on new iterations of static each blocks ([#762](https://github.com/sveltejs/svelte/issues/762))
1515* Use `change` events as well as `input` events to bind range inputs ([#740](https://github.com/sveltejs/svelte/issues/740))
1516
1517## 1.29.1
1518
1519* Replace `set` and `destroy` with `noop` when component is destroyed ([#744](https://github.com/sveltejs/svelte/issues/744))
1520
1521## 1.29.0
1522
1523* Add static `setup` method ([#578](https://github.com/sveltejs/svelte/issues/578))
1524* Hoist if block selectors ([#751](https://github.com/sveltejs/svelte/pull/751))
1525* More sigil escaping fixes ([#750](https://github.com/sveltejs/svelte/pull/750))
1526
1527## 1.28.1
1528
1529* Fix unescaping of special words in SSR mode ([#741](https://github.com/sveltejs/svelte/issues/741))
1530
1531## 1.28.0
1532
1533* Support `ref:foo` as a CSS selector ([#693](https://github.com/sveltejs/svelte/issues/693))
1534* Prevent magic-string bugs by only minifying CSS combinators if `cascade: false` ([#743](https://github.com/sveltejs/svelte/issues/743))
1535* Don't throw an error if component is destroyed twice ([#643](https://github.com/sveltejs/svelte/issues/643))
1536
1537## 1.27.0
1538
1539* Minify CSS and remove unused styles ([#697](https://github.com/sveltejs/svelte/issues/697))
1540* Optimize ternary expressions when excluding unused CSS ([#696](https://github.com/sveltejs/svelte/issues/696))
1541* Clear refs after `ondestroy` callbacks fire ([#706](https://github.com/sveltejs/svelte/issues/706))
1542* Prevent certain forms of component binding blowback ([#721](https://github.com/sveltejs/svelte/issues/721))
1543* Use helper to encapsulate styles ([#375](https://github.com/sveltejs/svelte/issues/375))
1544* Event propagation shorthand — `on:foo` equals `on:foo='fire("foo", event)` ([#638](https://github.com/sveltejs/svelte/issues/638))
1545* Allow `refs.*` in event handlers, and validate them ([#686](https://github.com/sveltejs/svelte/issues/686))
1546
1547## 1.26.2
1548
1549* Unescape `#` characters ([#722](https://github.com/sveltejs/svelte/issues/722))
1550
1551## 1.26.1
1552
1553* Fix select binding regression ([#724](https://github.com/sveltejs/svelte/issues/724))
1554
1555## 1.26.0
1556
1557* Enforce correct order of operations when initialising ([#708](https://github.com/sveltejs/svelte/issues/708) and [#714](https://github.com/sveltejs/svelte/issues/714))
1558* Ensure data is up-to-date when re-rendering yield block ([#711](https://github.com/sveltejs/svelte/issues/711))
1559* Fix unescaping of strings, preserve at-rules in CSS ([#712](https://github.com/sveltejs/svelte/issues/712))
1560* Preserve whitespace at end of each blocks ([#713](https://github.com/sveltejs/svelte/issues/713))
1561
1562## 1.25.1
1563
1564* Better CSS sourcemaps ([#716](https://github.com/sveltejs/svelte/pull/716))
1565
1566## 1.25.0
1567
1568* Fix hoisted event handlers ([#699](https://github.com/sveltejs/svelte/issues/699))
1569* Fire `intro.start` and `outro.start` events ([#702](https://github.com/sveltejs/svelte/issues/702))
1570* Preserve order of components in keyed each blocks ([#700](https://github.com/sveltejs/svelte/issues/700))
1571* Add `cssMap` property to compiler output ([#698](https://github.com/sveltejs/svelte/pull/698/))
1572
1573## 1.24.0
1574
1575* Deconflict names with imports in SSR compiler ([#655](https://github.com/sveltejs/svelte/issues/655))
1576* Improved transition performance ([#670](https://github.com/sveltejs/svelte/pull/670))
1577* Run transitions on initial render ([#651](https://github.com/sveltejs/svelte/issues/651))
1578* Add dev mode warning if `hydrate` is true but `hydratable` was false ([#664](https://github.com/sveltejs/svelte/issues/664))
1579* Manipulate sourcemap to make missing loop values obvious ([#683](https://github.com/sveltejs/svelte/pull/683))
1580* Only add CSS scoping attributes where necessary ([#679](https://github.com/sveltejs/svelte/issues/679))
1581* Warn on unused CSS selectors ([#678](https://github.com/sveltejs/svelte/issues/678))
1582* Fix `<select>` binding in loop ([#685](https://github.com/sveltejs/svelte/issues/685))
1583* Prevent bindings from calling `oncreate` functions prematurely ([#694](https://github.com/sveltejs/svelte/pull/694))
1584* Simpler codegen ([#673](https://github.com/sveltejs/svelte/pull/673))
1585
1586## 1.23.4
1587
1588* Don't recreate if blocks incorrectly ([#669](https://github.com/sveltejs/svelte/pull/669))
1589
1590## 1.23.3
1591
1592* Pass parameters to `get_block` ([#667](https://github.com/sveltejs/svelte/issues/667))
1593
1594## 1.23.2
1595
1596* Fix if blocks being recreated on update ([#665](https://github.com/sveltejs/svelte/issues/665))
1597
1598## 1.23.1
1599
1600* Fix each-else blocks that are empty on initial render ([#662](https://github.com/sveltejs/svelte/issues/662))
1601
1602## 1.23.0
1603
1604* Hydration ([#649](https://github.com/sveltejs/svelte/pull/649))
1605* Correctly transform CSS selectors with pseudo-elements ([#658](https://github.com/sveltejs/svelte/issues/658))
1606
1607## 1.22.5
1608
1609* Fix nested component unmounting bug ([#643](https://github.com/sveltejs/svelte/issues/643))
1610
1611## 1.22.4
1612
1613* Include `ast` in `svelte.compile` return value ([#632](https://github.com/sveltejs/svelte/issues/632))
1614* Set initial value of `<select>` binding, if unspecified ([#639](https://github.com/sveltejs/svelte/issues/639))
1615* Mark indirect dependencies of `<select>` bindings (i.e. the dependencies of their `<option>` values) ([#639](https://github.com/sveltejs/svelte/issues/639))
1616
1617## 1.22.3
1618
1619* Fix nested component unmounting bug ([#625](https://github.com/sveltejs/svelte/issues/625))
1620* Allow components to have computed member expression bindings ([#624](https://github.com/sveltejs/svelte/issues/624))
1621* Handle empty `<style>` tags ([#634](https://github.com/sveltejs/svelte/issues/634))
1622* Warn on missing component ([#623](https://github.com/sveltejs/svelte/issues/623))
1623* Allow dynamic `type` attribute for unbound inputs ([#620](https://github.com/sveltejs/svelte/issues/620))
1624* Rename `addEventListener` and `removeEventListener` directives ([#621](https://github.com/sveltejs/svelte/issues/621))
1625
1626## 1.22.2
1627
1628* Escape template strings correctly in SSR output ([#616](https://github.com/sveltejs/svelte/issues/616))
1629* Prevent magic-string deprecation warning ([#617](https://github.com/sveltejs/svelte/pull/617))
1630
1631## 1.22.1
1632
1633* Sanitise event handler names ([#612](https://github.com/sveltejs/svelte/issues/612))
1634
1635## 1.22.0
1636
1637* 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](https://github.com/sveltejs/svelte/issues/592))
1638* 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](https://github.com/sveltejs/svelte/issues/583))
1639* Support binding to computed member expressions ([#602](https://github.com/sveltejs/svelte/issues/602))
1640* Coerce empty string in `number`/`range` inputs to `undefined`, not `0` ([#584](https://github.com/sveltejs/svelte/issues/584))
1641* Fix insert location of DOM elements in each/if/nested component edge cases ([#610](https://github.com/sveltejs/svelte/issues/610))
1642
1643## 1.21.0
1644
1645* Always use `helpers` if referenced, not just for call expressions ([#575](https://github.com/sveltejs/svelte/issues/575))
1646* Fix parsing of `<textarea>` children ([#599](https://github.com/sveltejs/svelte/pull/599))
1647* Treat `<textarea>` value attributes and children as equivalent, and fail validation if both are present ([#599](https://github.com/sveltejs/svelte/pull/599))
1648* Fix `<textarea>` SSR ([#599](https://github.com/sveltejs/svelte/pull/599))
1649* Apply CSS transition styles immediately if transition has delay ([#574](https://github.com/sveltejs/svelte/issues/574))
1650* Ensure `transitionManager` is treeshakeable ([#593](https://github.com/sveltejs/svelte/issues/593))
1651* Fix for environments where `node.style.animation` is undefined ([#587](https://github.com/sveltejs/svelte/issues/587))
1652* Fix order of operations when dealing with `<select>` elements ([#590](https://github.com/sveltejs/svelte/issues/590))
1653* Downgrade 'invalid callee' to a warning ([#579](https://github.com/sveltejs/svelte/issues/579))
1654* Convert to TypeScript ([#573](https://github.com/sveltejs/svelte/pull/573))
1655
1656## 1.20.2
1657
1658* Fix destruction of compound if-blocks with outros ([#572](https://github.com/sveltejs/svelte/pull/572))
1659
1660## 1.20.1
1661
1662* Fix insertion order of `if` blocks and their anchors ([#569](https://github.com/sveltejs/svelte/issues/569))
1663
1664## 1.20.0
1665
1666* Faster, better updates of keyed each blocks ([#373](https://github.com/sveltejs/svelte/issues/373), [#543](https://github.com/sveltejs/svelte/issues/543))
1667* Use element IDs to robustly track dynamically injected `<style>` tags ([#554](https://github.com/sveltejs/svelte/issues/554))
1668* Abort outros before corresponding intros ([#546](https://github.com/sveltejs/svelte/issues/546))
1669* Generate less code for `if` blocks with `else` blocks ([#540](https://github.com/sveltejs/svelte/issues/540))
1670* Ensure `{{yield}}` block content is injected into the right place ([#561](https://github.com/sveltejs/svelte/issues/561))
1671* Simpler, more readable codegen code ([#559](https://github.com/sveltejs/svelte/pull/559))
1672* Validate transition directives ([#564](https://github.com/sveltejs/svelte/issues/564))
1673* Apply delays to bidirectional transitions ([#562](https://github.com/sveltejs/svelte/issues/562))
1674* Handle all valid HTML entities ([#565](https://github.com/sveltejs/svelte/pull/565))
1675* Fix outros on compound `if` blocks ([#565](https://github.com/sveltejs/svelte/pull/565))
1676* Validation for `<:Window>` tags ([#565](https://github.com/sveltejs/svelte/pull/565))
1677* Increased test coverage ([#565](https://github.com/sveltejs/svelte/pull/565))
1678
1679## 1.19.1
1680
1681* Export `generateKeyframes`, so that CSS transitions work
1682
1683## 1.19.0
1684
1685* Experimental support for transitions ([#7](https://github.com/sveltejs/svelte/issues/7))
1686* Use `querySelector(':checked')` instead of `selectedOptions` ([#539](https://github.com/sveltejs/svelte/issues/539))
1687* Stringify helpers before bundling them, to avoid renaming errors ([#538](https://github.com/sveltejs/svelte/issues/538))
1688
1689## 1.18.2
1690
1691* Parenthesize if-block conditions ([#532](https://github.com/sveltejs/svelte/issues/532))
1692* Fix parsing of parenthesized expressions ([#534](https://github.com/sveltejs/svelte/issues/534))
1693* Fix error on `bind:checked` that doesn't belong to a checkbox input ([#529](https://github.com/sveltejs/svelte/pull/529))
1694
1695## 1.18.1
1696
1697* Allow `destroy()` in event handlers ([#523](https://github.com/sveltejs/svelte/issues/523))
1698* Fix bug with `{{yield}}` blocks following elements ([#524](https://github.com/sveltejs/svelte/issues/524))
1699
1700## 1.18.0
1701
1702* Visit `<select>` attributes after children, to ensure options are in the right state ([#521](https://github.com/sveltejs/svelte/pull/521))
1703* Use sibling elements as anchors rather than creating comment nodes wherever possible ([#3](https://github.com/sveltejs/svelte/issues/3))
1704
1705## 1.17.2
1706
1707* Replace bad characters when creating variable names based on element names ([#516](https://github.com/sveltejs/svelte/issues/516))
1708
1709## 1.17.1
1710
1711* Fixes for static each-else and yield blocks ([#509](https://github.com/sveltejs/svelte/issues/509)), ([#514](https://github.com/sveltejs/svelte/issues/514))
1712* Code generation tweaks ([#504](https://github.com/sveltejs/svelte/issues/504)), ([#507](https://github.com/sveltejs/svelte/issues/507))
1713
1714## 1.17.0
1715
1716* Add `currentTime`, `duration` and `paused` bindings for media elements ([#406](https://github.com/sveltejs/svelte/issues/406))
1717* Don't treat helpers as dependencies ([#492](https://github.com/sveltejs/svelte/issues/492))
1718* Allow `<:Window>` event handlers to access component state ([#497](https://github.com/sveltejs/svelte/pull/497))
1719* Allow two-way binding to properties named 'component' ([#495](https://github.com/sveltejs/svelte/issues/495))
1720* Group checkbox bindings correctly, to avoid erroneously unchecking siblings ([#498](https://github.com/sveltejs/svelte/issues/498))
1721* Validate two-way bindings ([#494](https://github.com/sveltejs/svelte/pull/494))
1722* Allow dynamic each-block to have static else-block ([#501](https://github.com/sveltejs/svelte/pull/501))
1723* Initialise `<select>` value correctly ([#502](https://github.com/sveltejs/svelte/pull/502))
1724
1725## 1.16.0
1726
1727* Better code generation ([#489](https://github.com/sveltejs/svelte/pull/489)), ([#490](https://github.com/sveltejs/svelte/pull/490)), ([#491](https://github.com/sveltejs/svelte/pull/491))
1728* Prevent binding blowback on initial render ([#488](https://github.com/sveltejs/svelte/pull/488))
1729
1730## 1.15.1
1731
1732* Clone data before merging it with state ([#479](https://github.com/sveltejs/svelte/issues/479))
1733* Apply binding event handlers before user event handlers ([#486](https://github.com/sveltejs/svelte/issues/486))
1734
1735## 1.15.0
1736
1737* Dev mode — downgrade 'missing data' to a warning, and ignore whitelisted globals ([#475](https://github.com/sveltejs/svelte/issues/475))
1738* Fix `<select>` value binding when options are updated late ([#476](https://github.com/sveltejs/svelte/issues/476))
1739* Throw at compile time if event handler references invalid callee ([#473](https://github.com/sveltejs/svelte/pull/473))
1740* Check for helper function purity ([#473](https://github.com/sveltejs/svelte/pull/473))
1741* Validate `namespace` option ([#473](https://github.com/sveltejs/svelte/pull/473))
1742
1743## 1.14.1
1744
1745* Replace bad characters when creating variable names based on attributes ([#470](https://github.com/sveltejs/svelte/issues/470))
1746
1747## 1.14.0
1748
1749* Better guard against naming conflicts ([#465](https://github.com/sveltejs/svelte/issues/465))
1750* Better error if getters and setters are used with `methods` ([#425](https://github.com/sveltejs/svelte/issues/425))
1751* Don't create whitespace nodes inside elements that can't use them ([#189](https://github.com/sveltejs/svelte/issues/189))
1752* Collapse consecutive `if` statements with the same condition ([#450](https://github.com/sveltejs/svelte/issues/450))
1753* Window `scroll` bindings are bidirectional ([#404](https://github.com/sveltejs/svelte/issues/404))
1754* Add `bind:online` to window ([#404](https://github.com/sveltejs/svelte/issues/404))
1755* In dev mode, throw if read-only properties are set ([#404](https://github.com/sveltejs/svelte/issues/404))
1756* Prevent conflicts with component name ([#464](https://github.com/sveltejs/svelte/pull/464))
1757* Ensure event handler names are deconflicted ([#466](https://github.com/sveltejs/svelte/issues/466))
1758
1759## 1.13.7
1760
1761* Fix observers — `defer: true` now triggers callback after DOM is updated ([#441](https://github.com/sveltejs/svelte/issues/441))
1762* Handle empty `computed` property ([#452](https://github.com/sveltejs/svelte/issues/452))
1763* Correctly bind one-way `<select>` value attributes with objects ([#423](https://github.com/sveltejs/svelte/issues/423))
1764* Hoist event handlers inside each blocks, where possible ([#456](https://github.com/sveltejs/svelte/pull/456))
1765* Don't bind event handler callbacks ([#433](https://github.com/sveltejs/svelte/issues/433))
1766* Internal refactoring and neater code generation ([#453](https://github.com/sveltejs/svelte/pull/453))
1767
1768## 1.13.6
1769
1770* Use `assign` helper instead of `Object.assign` for better performance and legacy compatibility ([#431](https://github.com/sveltejs/svelte/issues/431))
1771* Improved code generation ([#419](https://github.com/sveltejs/svelte/issues/419)), ([#440](https://github.com/sveltejs/svelte/issues/440)), ([#442](https://github.com/sveltejs/svelte/issues/442))
1772
1773## 1.13.5
1774
1775* Read `range` and `number` input values as numbers ([#436](https://github.com/sveltejs/svelte/issues/436))
1776* Better error for `bind:value='{{foo}}'` ([#437](https://github.com/sveltejs/svelte/issues/437))
1777
1778## 1.13.4
1779
1780* Prevent unclosed `<script>` tag causing infinite loop ([#435](https://github.com/sveltejs/svelte/pull/435))
1781
1782## 1.13.3
1783
1784* Correctly handle `{{true}}`, `{{false}}` and `{{null}}` ([#424](https://github.com/sveltejs/svelte/issues/424))
1785* Update `<select>` value attributes correctly ([#423](https://github.com/sveltejs/svelte/issues/423))
1786* Bind custom event handler callbacks ([#428](https://github.com/sveltejs/svelte/issues/428))
1787* Disallow `import root` ([#430](https://github.com/sveltejs/svelte/pull/430))
1788* Prevent component bindings mutating the wrong object ([#432](https://github.com/sveltejs/svelte/pull/432))
1789
1790## 1.13.2
1791
1792* Fix deep component bindings ([#420](https://github.com/sveltejs/svelte/issues/420))
1793* Include `css` property in compiler output ([#409](https://github.com/sveltejs/svelte/issues/409))
1794* Treat functions as mutable objects when recomputing ([#413](https://github.com/sveltejs/svelte/issues/413)
1795* Include magic-string in bundle ([#410](https://github.com/sveltejs/svelte/issues/410))
1796* Disable unneeded Bublé transformations for slimmer output ([#411](https://github.com/sveltejs/svelte/pull/411))
1797
1798## 1.13.1
1799
1800* Prevent infinite loops with pathological component bindings ([#398](https://github.com/sveltejs/svelte/issues/398))
1801* More robust deconflicting ([#401](https://github.com/sveltejs/svelte/pull/401))
1802
1803## 1.13.0
1804
1805* Add `<:Window>` meta tag with event listeners, and a handful of bindings ([#371](https://github.com/sveltejs/svelte/issues/371))
1806* Don't uncheck radios incorrectly ([#399](https://github.com/sveltejs/svelte/issues/399))
1807
1808## 1.12.1
1809
1810* Deconflict non-helper functions (`addCss` etc) ([#388](https://github.com/sveltejs/svelte/issues/388))
1811* Allow reserved words in tags, e.g. `{{class}}` ([#383](https://github.com/sveltejs/svelte/issues/383))
1812
1813## 1.12.0
1814
1815* Shorthand attributes — `<Widget :foo/>` is equivalent to `<Widget foo='{{foo}}'/>` ([#384](https://github.com/sveltejs/svelte/pull/384))
1816* Support `bind:group` for radio and checkbox inputs ([#311](https://github.com/sveltejs/svelte/issues/311), [#312](https://github.com/sveltejs/svelte/issues/312))
1817* Better sourcemap support for two-way bindings
1818
1819## 1.11.4
1820
1821* Dev mode warning for bad `component.observe` arguments ([#369](https://github.com/sveltejs/svelte/issues/369))
1822* Translate `component.on('teardown', ...)` to `component.on('destroy', ...)` and add dev warning ([#365](https://github.com/sveltejs/svelte/issues/365))
1823* Use shared prototype to save bytes ([#378](https://github.com/sveltejs/svelte/pull/378))
1824
1825## 1.11.3
1826
1827* Undo CSS behaviour change in 1.11.2 ([#372](https://github.com/sveltejs/svelte/issues/372))
1828* Pin version of css-tree ([#370](https://github.com/sveltejs/svelte/pull/370))
1829
1830## 1.11.2
1831
1832* Add component CSS to each document a component is rendered to ([#331](https://github.com/sveltejs/svelte/issues/331))
1833
1834## 1.11.1
1835
1836* Fix two-way binding for components inside `each` blocks ([#356](https://github.com/sveltejs/svelte/issues/356))
1837
1838## 1.11.0
1839
1840* Add `format: 'eval'` and `svelte.create`, to create components directly from source code ([#345](https://github.com/sveltejs/svelte/issues/345))
1841* Node 4 compatibility ([#109](https://github.com/sveltejs/svelte/issues/109))
1842
1843## 1.10.3
1844
1845* Prevent `'</script>'` string occurence breaking pages ([#349](https://github.com/sveltejs/svelte/pull/349))
1846* Allow reference to whitelisted globals without properties ([#333](https://github.com/sveltejs/svelte/pull/333))
1847* Don't remove `&nbsp;` incorrectly ([#348](https://github.com/sveltejs/svelte/issues/348))
1848* `let` -> `var` in `addCss` block ([#351](https://github.com/sveltejs/svelte/pull/351))
1849
1850## 1.10.2
1851
1852* Accept any case for doctype declarations ([#336](https://github.com/sveltejs/svelte/issues/336))
1853* Allow non-top-level `<script>` and `<style>` tags to pass through without processing ([#335](https://github.com/sveltejs/svelte/issues/335))
1854
1855## 1.10.1
1856
1857* typecheck argument in _set when in dev mode ([#342](https://github.com/sveltejs/svelte/issues/342))
1858* Prevent duplicate helpers in non-shared mode ([#337](https://github.com/sveltejs/svelte/issues/337))
1859
1860## 1.10.0
1861
1862* Component self-references with `<:Self/>` ([#51](https://github.com/sveltejs/svelte/issues/51))
1863* Two-way binding with `<select multiple>` ([#313](https://github.com/sveltejs/svelte/issues/313))
1864
1865## 1.9.1
1866
1867* Better error for malformed event handlers ([#220](https://github.com/sveltejs/svelte/issues/220))
1868* Allow function expressions in tags ([#269](https://github.com/sveltejs/svelte/issues/269))
1869
1870## 1.9.0
1871
1872* Add development warnings ([#13](https://github.com/sveltejs/svelte/issues/13)), ([#320](https://github.com/sveltejs/svelte/pull/320)), ([#177](https://github.com/sveltejs/svelte/issues/177)), ([#249](https://github.com/sveltejs/svelte/issues/249))
1873* Better error if parser encounters an unmatched closing tag ([#321](https://github.com/sveltejs/svelte/issues/321))
1874
1875## 1.8.1
1876
1877* Allow implicitly closed elements ([#318](https://github.com/sveltejs/svelte/pull/318))
1878* More informative error messages for unclosed elements/blocks ([#258](https://github.com/sveltejs/svelte/issues/258))
1879* Deprecate `onrender` and `onteardown` in favour of `oncreate` and `ondestroy` ([#40](https://github.com/sveltejs/svelte/issues/40))
1880
1881## 1.8.0
1882
1883* Prevent duplicate imports ([#308](https://github.com/sveltejs/svelte/issues/308))
1884* Use `input` events (not `change`) for all input elements other than `checkbox` and `radio`, and textareas ([#309](https://github.com/sveltejs/svelte/pull/309))
1885* Encapsulate keyframe declarations ([#245](https://github.com/sveltejs/svelte/issues/245))
1886
1887## 1.7.1
1888
1889* Deconflict imports and shared helpers ([#222](https://github.com/sveltejs/svelte/issues/222))
1890* Deconflict each-block contexts and reserved words ([#222](https://github.com/sveltejs/svelte/issues/222))
1891* Allow shorthand properties in expressions ([#296](https://github.com/sveltejs/svelte/issues/296))
1892
1893## 1.7.0
1894
1895* Include CSS AST in `svelte.parse` output ([#302](https://github.com/sveltejs/svelte/pull/302))
1896* Better handling of CSS parse errors ([#302](https://github.com/sveltejs/svelte/pull/302))
1897* Initialise `<select>` elements with two-way binding correctly ([#301](https://github.com/sveltejs/svelte/issues/301))
1898* Allow local context in component event handlers inside `each` blocks ([#290](https://github.com/sveltejs/svelte/issues/290))
1899* Fix two-way binding for components inside `each` blocks ([#290](https://github.com/sveltejs/svelte/issues/290))
1900
1901## 1.6.11
1902
1903* Initialise dynamic `<option>` value correctly ([#291](https://github.com/sveltejs/svelte/issues/291))
1904
1905## 1.6.10
1906
1907* Ensure `sources` and `sourcesContent` are populated in sourcemaps, even if none of the original code is used ([#295](https://github.com/sveltejs/svelte/pull/295))
1908* Add `outputFilename` option to populate `file` and `sources` sourcemap properties correctly ([#295](https://github.com/sveltejs/svelte/pull/295))
1909
1910## 1.6.9
1911
1912* Don't trigger bindings for torn-down components ([#277](https://github.com/sveltejs/svelte/issues/277))
1913* SSR: Handle two-way bindings ([#275](https://github.com/sveltejs/svelte/issues/275))
1914* Improve performance by checking data has changed before updates ([#279](https://github.com/sveltejs/svelte/pull/279))
1915* Parse CSS with css-tree to prevent transformation errors with unconventional styles ([#288](https://github.com/sveltejs/svelte/issues/288))
1916
1917## 1.6.8
1918
1919* Always trigger `onrender`, including when change initiator is a nested component ([#263](https://github.com/sveltejs/svelte/issues/263))
1920* Handle default function parameters in computations ([#274](https://github.com/sveltejs/svelte/issues/274))
1921
1922## 1.6.7
1923
1924* SSR: Fix apostrophes ([#267](https://github.com/sveltejs/svelte/issues/267))
1925* Add `xmlns` attributes to SVGs ([#262](https://github.com/sveltejs/svelte/pull/262))
1926
1927## 1.6.6
1928
1929* Omit text from comment anchors ([#247](https://github.com/sveltejs/svelte/issues/247))
1930* Handle `xlink` attributes ([#264](https://github.com/sveltejs/svelte/issues/264))
1931
1932## 1.6.5
1933
1934* Handle `<!doctype>` declarations ([#255](https://github.com/sveltejs/svelte/pull/255))
1935
1936## 1.6.4
1937
1938* Fix updates of yields inside each blocks ([20e1b05](https://github.com/sveltejs/svelte/commit/20e1b05c45dc9fcddfe2e7c5c9fc3109f0d45fa9))
1939* SSR: Handle attributes with values that begin with a number ([#248](https://github.com/sveltejs/svelte/issues/248))
1940* Handle multiline comments in CSS ([#252](https://github.com/sveltejs/svelte/issues/252))
1941
1942## 1.6.3
1943
1944* Fix `{{yield}}` bugs for components inside `if` and `each` blocks ([#230](https://github.com/sveltejs/svelte/issues/230), [#231](https://github.com/sveltejs/svelte/issues/231))
1945* Set attributes on `<svg>` elements correctly ([#233](https://github.com/sveltejs/svelte/issues/233))
1946* Add `svelte.VERSION` property to compiler
1947
1948## 1.6.2
1949
1950* Use helpers for `addEventListener`, `removeEventListener`, `setAttribute` ([#227](https://github.com/sveltejs/svelte/pull/227))
1951* Escape `sharedPath` ([#229](https://github.com/sveltejs/svelte/pull/229))
1952* Handle attributes with values that begin with a number ([#234](https://github.com/sveltejs/svelte/issues/234))
1953* Update dependencies
1954
1955## 1.6.1
1956
1957* SSR: Handle component directives at arbitrary positions ([#221](https://github.com/sveltejs/svelte/issues/221))
1958* Provide useful feedback on invalid void closing tag ([#224](https://github.com/sveltejs/svelte/issues/224))
1959
1960## 1.6.0
1961
1962* Replace `standalone: false` with `shared: true`, or `shared: 'custom/path/to/shared.js'` ([#218](https://github.com/sveltejs/svelte/issues/218))
1963* Include `shared.js` in package
1964
1965## 1.5.0
1966
1967* Implement `standalone: false` ([#9](https://github.com/sveltejs/svelte/issues/9))
1968* SSR: Handle component directives ([216](https://github.com/sveltejs/svelte/issues/216))
1969
1970## 1.4.0
1971
1972* Keyed `each` blocks ([#81](https://github.com/sveltejs/svelte/issues/81))
1973
1974## 1.3.1
1975
1976* Remove file extensions from AMD dependencies ([#144](https://github.com/sveltejs/svelte/issues/144))
1977* Throw if `options.name` is illegal ([#102](https://github.com/sveltejs/svelte/issues/102))
1978
1979## 1.3.0
1980
1981* SSR compiler: Support `format` option ([#196](https://github.com/sveltejs/svelte/issues/196))
1982* SSR compiler: Don't self-close 'normal' elements ([#200](https://github.com/sveltejs/svelte/issues/200))
1983* Remove leading spaces from scoped CSS ([#140](https://github.com/sveltejs/svelte/issues/140))
1984* Internal refactoring
1985
1986## 1.2.5
1987
1988* Allow whitelisted globals in templates ([#185](https://github.com/sveltejs/svelte/issues/185))
1989* Intercept parse errors with `options.onerror`
1990
1991## 1.2.4
1992
1993* SSR compiler: Implement `{{{triples}}}` ([#197](https://github.com/sveltejs/svelte/issues/197))
1994* SSR compiler: Escape HTML in tags ([#197](https://github.com/sveltejs/svelte/issues/197))
1995
1996## 1.2.3
1997
1998* Add support for `namespace` declaration for SVG (etc) components ([#147](https://github.com/sveltejs/svelte/issues/147))
1999* Throw error if methods or lifecycle hooks are arrow functions that use `this` or `arguments` ([#179](https://github.com/sveltejs/svelte/issues/179))
2000* Use `setAttribute()` for `list` attributes, to preserve link to `<datalist>` ([#178](https://github.com/sveltejs/svelte/issues/178))
2001* Throw error if default export is not an object literal ([#190](https://github.com/sveltejs/svelte/pull/190))
2002* Internal refactoring
2003
2004## 1.2.2
2005
2006* Omit directives in server-side rendering ([#163](https://github.com/sveltejs/svelte/issues/167))
2007* Handle comments in SSR ([#165](https://github.com/sveltejs/svelte/issues/165))
2008* Support calling methods of `event`/`this` in event handlers ([#162](https://github.com/sveltejs/svelte/issues/162))
2009* Remove `mount` from public API ([#150](https://github.com/sveltejs/svelte/issues/150))
2010
2011## 1.2.1
2012
2013* Server-side rendering is available as a compiler option (`generate: 'ssr'`) ([#159](https://github.com/sveltejs/svelte/pull/159))
2014* Allow call expressions where function is not in `helpers` ([#163](https://github.com/sveltejs/svelte/issues/163))
2015
2016## 1.2.0
2017
2018* Server-side rendering of HTML ([#148](https://github.com/sveltejs/svelte/pull/148)) and CSS ([#154](https://github.com/sveltejs/svelte/pull/154))
2019
2020## 1.1.3
2021
2022* Handle `xmlns` attributes correctly ([#142](https://github.com/sveltejs/svelte/issues/142))
2023* Error on duplicate `<style>`/`<script>` tags rather than failing silently ([#142](https://github.com/sveltejs/svelte/issues/142))
2024* Don't create whitespace text nodes inside SVG elements ([#142](https://github.com/sveltejs/svelte/issues/142))
2025* Require void elements to be lowercase, to eliminate confusion with components ([#137](https://github.com/sveltejs/svelte/issues/137))
2026
2027## 1.1.2
2028
2029* Deconflict variable names ([#88](https://github.com/sveltejs/svelte/issues/88), [#126](https://github.com/sveltejs/svelte/issues/126))
2030
2031## 1.1.1
2032
2033* Support multiple SVG elements in a component ([#130](https://github.com/sveltejs/svelte/issues/130))
2034
2035## 1.1.0
2036
2037* Separate fragment creation from `mount` ([#91](https://github.com/sveltejs/svelte/pull/91))
2038* Trigger `onrender` hook at correct time for nested components ([#103](https://github.com/sveltejs/svelte/pull/103))
2039* Fix keypath dynamic attributes in components ([#46](https://github.com/sveltejs/svelte/issues/46))
2040* Implement `{{yield}}` ([#112](https://github.com/sveltejs/svelte/pull/112))
2041* Optimise teardown ([#99](https://github.com/sveltejs/svelte/issues/99))
2042* Require computed properties to have at least one dependency ([#115](https://github.com/sveltejs/svelte/pull/115))
2043* Support `{{#each ...}}...{{else}}...{{/each}}` ([#90](https://github.com/sveltejs/svelte/issues/90))
2044* Triple mustaches ([#35](https://github.com/sveltejs/svelte/issues/35))
2045
2046## 1.0.7
2047
2048* Correctly escape HTML entities ([#85](https://github.com/sveltejs/svelte/issues/85))
2049
2050## 1.0.6
2051
2052* Generate useful sourcemaps ([#60](https://github.com/sveltejs/svelte/issues/60))
2053
2054## 1.0.5
2055
2056* Ensure compiler only generates ES5 code ([#75](https://github.com/sveltejs/svelte/issues/75))
2057* `get()` without arguments returns entire state object ([#73](https://github.com/sveltejs/svelte/issues/73))
2058
2059## 1.0.4
2060
2061* Handle empty attributes in elements and components ([#63](https://github.com/sveltejs/svelte/issues/63))
2062* Detach top-level text nodes inside departing each blocks ([#62](https://github.com/sveltejs/svelte/issues/62))
2063
2064## 1.0.3
2065
2066* Better generated code for `if` blocks, especially with `else`/`elseif` chains ([#28](https://github.com/sveltejs/svelte/pull/28))
2067* Trim unnecessary whitespace from `else`/`elseif` blocks ([#49](https://github.com/sveltejs/svelte/pull/49))
2068* Handle trailing comments in script tags ([#64](https://github.com/sveltejs/svelte/issues/64))
2069
2070## 1.0.2
2071
2072Set `style.cssText` rather than `style` ([#44](https://github.com/sveltejs/svelte/issues/44))
2073
2074## 1.0.1
2075
2076* Preserve SVG namespace inside each blocks
2077* Always use `setAttribute` with SVG elements
2078
2079## 1.0.0
2080
2081* Generate AMD, CJS, IIFE and UMD builds
2082* Correctly insert text nodes before anchors ([#31](https://github.com/sveltejs/svelte/pull/31))
2083
2084## 0.3.0
2085
2086* Fix bug where departing element would unset `ref` incorrectly ([#24](https://github.com/sveltejs/svelte/issues/24))
2087* Basic template validation ([#6](https://github.com/sveltejs/svelte/issues/6))
2088* Fire `onrender` hooks once component is in DOM ([#18](https://github.com/sveltejs/svelte/issues/18))
2089* Only detach nodes when necessary to do so ([#26](https://github.com/sveltejs/svelte/issues/26))
2090
2091## 0.2.2
2092
2093* On second thoughts, don't transpile build. Was only really for Uglify's benefit, which is daft
2094
2095## 0.2.1
2096
2097* Transpile build
2098
2099## 0.2.0
2100
2101* Only generate UMD build, for now
2102* Include dependencies in the build, treat as `devDependencies`
2103* Faster initial render
2104* Parent data overrides child defaults
2105* Remove top-level text nodes on teardown
2106* Handle `readUntil` errors in parser
2107* Basic `<select>` binding
2108* Handle missing data
2109* Prevent infinite set/observe loops
2110* Add `bind:foo` shorthand
2111* `else` and `elseif` blocks
2112* Hoist imports
2113
2114## 0.1.1
2115
2116* Support unquoted attributes
2117* Handle entities in attributes
2118* Inline nested components
2119* `fire` and `on` methods
2120
2121## 0.1.0
2122
2123* Breaking change – Svelte compiler now generates constructor functions rather than factories ([#2](https://github.com/sveltejs/svelte/issues/2))
2124* SVG support
2125
2126## 0.0.2
2127
2128* First release capable of building TodoMVC
2129
2130## 0.0.1
2131
2132* Just squatting on the package name