diff --git a/CHANGELOG.md b/CHANGELOG.md
index e5e886646c..19e8cced8f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,9 @@
* Include selector in message of `unused-css-selector` warning ([#5252](https://github.com/sveltejs/svelte/issues/5252))
* Fix using ``s in child `{#await}`/`{#each}` contexts ([#5255](https://github.com/sveltejs/svelte/issues/5255))
* Fix using `` in `{:catch}` ([#5259](https://github.com/sveltejs/svelte/issues/5259))
+* Fix setting one-way bound `` `value` to `undefined` when it has spread attributes ([#5270](https://github.com/sveltejs/svelte/issues/5270))
+* Fix deep two-way bindings inside an `{#each}` involving a store ([#5286](https://github.com/sveltejs/svelte/issues/5286))
+* Fix reactivity of `$$props` in slot fallback content ([#5367](https://github.com/sveltejs/svelte/issues/5367))
## 3.24.1
diff --git a/README.md b/README.md
index 33faec0588..3c174d03d9 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,15 @@ Svelte is a new way to build web applications. It's a compiler that takes your d
Learn more at the [Svelte website](https://svelte.dev), or stop by the [Discord chatroom](https://svelte.dev/chat).
+## Supporting Svelte
+
+Svelte is an MIT-licensed open source project with its ongoing development made possible entirely by the support of awesome volunteers. If you'd like to support their efforts, please consider:
+
+- [Becoming a backer on Open Collective](https://opencollective.com/svelte).
+
+Funds donated via Open Collective will be used for compensating expenses related to Svelte's development such as hosting costs. If sufficient donations are received, funds may also be used to support Svelte's development more directly.
+
+
## Development
Pull requests are encouraged and always welcome. [Pick an issue](https://github.com/sveltejs/svelte/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) and help us out!
diff --git a/site/content/blog/2020-07-17-svelte-and-typescript.md b/site/content/blog/2020-07-17-svelte-and-typescript.md
index 9c228a17da..bb5f389aa2 100644
--- a/site/content/blog/2020-07-17-svelte-and-typescript.md
+++ b/site/content/blog/2020-07-17-svelte-and-typescript.md
@@ -107,7 +107,7 @@ Your `include`/`exclude` may differ per project — these are defaults that shou
Any editor [using an LSP](https://langserver.org/#implementations-client) can be supported. The [VS Code](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode) extension has been our primary focus, but there is work in progress [on Atom](https://github.com/sveltejs/language-tools/pull/160), and Vim via [coc-svelte](https://github.com/coc-extensions/coc-svelte) has been updated with the latest LSP.
-These editor extensions will improve your coding experience even if you only use JavaScript. The editor won't offer errors, but it will offer inference and refactoring tools. You can [add `// @check-js`](https://www.staging-typescript.org/docs/handbook/intro-to-js-ts.html) to the top of a `
+
+
+
+ {JSON.stringify($$props)}
+
+
diff --git a/test/runtime/samples/component-slot-fallback-6/_config.js b/test/runtime/samples/component-slot-fallback-6/_config.js
new file mode 100644
index 0000000000..fb1a658f26
--- /dev/null
+++ b/test/runtime/samples/component-slot-fallback-6/_config.js
@@ -0,0 +1,18 @@
+// $$props reactivity in slot fallback
+export default {
+ html: `
+
+ {"value":""}
+ `,
+
+ async test({ assert, target, window }) {
+ const input = target.querySelector("input");
+ input.value = "abc";
+ await input.dispatchEvent(new window.Event('input'));
+
+ assert.htmlEqual(target.innerHTML, `
+
+ {"value":"abc"}
+ `);
+ }
+};
diff --git a/test/runtime/samples/component-slot-fallback-6/main.svelte b/test/runtime/samples/component-slot-fallback-6/main.svelte
new file mode 100644
index 0000000000..35abebef10
--- /dev/null
+++ b/test/runtime/samples/component-slot-fallback-6/main.svelte
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/test/runtime/samples/spread-element-input-value-undefined/_config.js b/test/runtime/samples/spread-element-input-value-undefined/_config.js
new file mode 100644
index 0000000000..d66e215cde
--- /dev/null
+++ b/test/runtime/samples/spread-element-input-value-undefined/_config.js
@@ -0,0 +1,12 @@
+export default {
+ async test({ assert, component, target, window }) {
+ const input = target.querySelector("input");
+ component.value = undefined;
+
+ assert.equal(input.value, "undefined");
+
+ component.value = "foobar";
+
+ assert.equal(input.value, "foobar");
+ }
+};
diff --git a/test/runtime/samples/spread-element-input-value-undefined/main.svelte b/test/runtime/samples/spread-element-input-value-undefined/main.svelte
new file mode 100644
index 0000000000..5c9121dc03
--- /dev/null
+++ b/test/runtime/samples/spread-element-input-value-undefined/main.svelte
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/test/runtime/samples/store-each-binding-deep/_config.js b/test/runtime/samples/store-each-binding-deep/_config.js
new file mode 100644
index 0000000000..70776940dd
--- /dev/null
+++ b/test/runtime/samples/store-each-binding-deep/_config.js
@@ -0,0 +1,14 @@
+export default {
+ async test({ assert, target, window }) {
+ const input = target.querySelector('input');
+
+ const event = new window.Event('input');
+ input.value = 'changed';
+ await input.dispatchEvent(event);
+
+ assert.htmlEqual(target.innerHTML, `
+
+
changed
+ `);
+ }
+};
\ No newline at end of file
diff --git a/test/runtime/samples/store-each-binding-deep/main.svelte b/test/runtime/samples/store-each-binding-deep/main.svelte
new file mode 100644
index 0000000000..8f1cabf5b8
--- /dev/null
+++ b/test/runtime/samples/store-each-binding-deep/main.svelte
@@ -0,0 +1,11 @@
+
+
+{#each $itemStore.prop.things as thing }
+
+{/each}
+
+