# Svelte changelog ## 3.4.2 * Use empty string for empty data attributes ([#2804](https://github.com/sveltejs/svelte/pull/2804)) * Support `customElement: true` with no `` ([#2821](https://github.com/sveltejs/svelte/issues/2821)) * Add docstrings to `svelte/store` ([#2795](https://github.com/sveltejs/svelte/pull/2795)) ## 3.4.1 * Handle non-falsy non-function return values from derivers ([#2780](https://github.com/sveltejs/svelte/issues/2780)) * Allow `spring` to work server-side ([#2773](https://github.com/sveltejs/svelte/issues/2773)) ## 3.4.0 * Allow custom element to be defined without a `tag` ([#2417](https://github.com/sveltejs/svelte/issues/2417)) * Fix parsing of quote marks inside attribute values ([#2715](https://github.com/sveltejs/svelte/pull/2754)) * Convert `svelte/store` to TypeScript ([#2733](https://github.com/sveltejs/svelte/pull/2733)) * Allow `debug` tags to include hoisted values ([#2764](https://github.com/sveltejs/svelte/issues/2764)) * Parse error if attribute name is missing `=` ([#1513](https://github.com/sveltejs/svelte/pull/2770)) * Allow reactive declarations to depend on mutated `const` values ([#2728](https://github.com/sveltejs/svelte/issues/2728)) ## 3.3.0 * Allow multiple event listeners on a single node ([#2688](https://github.com/sveltejs/svelte/issues/2688)) * Allow derivers to return a cleanup function ([#2553](https://github.com/sveltejs/svelte/issues/2553)) * Support namespaced components (``) ([#2743](https://github.com/sveltejs/svelte/pull/2743)) ## 3.2.2 * Add `window` and `document` to expected globals ([#2722](https://github.com/sveltejs/svelte/pull/2722)) * Prevent hoisting of functions that depend on reactive state ([#2703](https://github.com/sveltejs/svelte/pull/2703)) * Generate correct code when slot has no changes ([#2697](https://github.com/sveltejs/svelte/issues/2697)) * Prevent `Object.prototype`-related bugs ([#2696](https://github.com/sveltejs/svelte/pull/2696)) ## 3.2.1 * Use same comparison logic for `derived` as for other stores ([#2644](https://github.com/sveltejs/svelte/issues/2644)) * Invalidate dependencies of reactive declarations ([#2444](https://github.com/sveltejs/svelte/issues/2444)) * Fix instrumentation of auto-subscription self-assignments ([#2681](https://github.com/sveltejs/svelte/issues/2681)) * Warn on non-top-level or module-context statements labeled with `$:` ([#2176](https://github.com/sveltejs/svelte/issues/2176)) ## 3.2.0 * Improve `spring` animations, and add `hard`/`soft` options ([#2627](https://github.com/sveltejs/svelte/pull/2627)) * Expose `parse` and `walk` functions ([#2661](https://github.com/sveltejs/svelte/issues/2661), [#2534](https://github.com/sveltejs/svelte/pull/2534)) * 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)) * Use `setAttribute` to change `form` property on form elements ([#1742](https://github.com/sveltejs/svelte/issues/1742)) * Fix a11y warning when `
` is non-direct descendant of `
` ([#2582](https://github.com/sveltejs/svelte/issues/2582)) * Squelch erroneous 'empty block' warnings ([#1716](https://github.com/sveltejs/svelte/issues/1716)) * Fix IE9/10 error with `insertBefore` ([#2573](https://github.com/sveltejs/svelte/issues/2573)) * Prevent `$$scope` from being spread onto an element ([#2520](https://github.com/sveltejs/svelte/issues/2520)) * Resubscribe to stores that are assigned to in `'` string occurence breaking pages ([#349](https://github.com/sveltejs/svelte/pull/349)) * Allow reference to whitelisted globals without properties ([#333](https://github.com/sveltejs/svelte/pull/333)) * Don't remove ` ` incorrectly ([#348](https://github.com/sveltejs/svelte/issues/348)) * `let` -> `var` in `addCss` block ([#351](https://github.com/sveltejs/svelte/pull/351)) ## 1.10.2 * Accept any case for doctype declarations ([#336](https://github.com/sveltejs/svelte/issues/336)) * Allow non-top-level `