diff --git a/.changeset/keep-has-check-sources.md b/.changeset/keep-has-check-sources.md
new file mode 100644
index 0000000000..2ba811c4e8
--- /dev/null
+++ b/.changeset/keep-has-check-sources.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: keep creating state sources for property checks during component init
diff --git a/.changeset/major-papayas-run.md b/.changeset/major-papayas-run.md
deleted file mode 100644
index 59909fb448..0000000000
--- a/.changeset/major-papayas-run.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'svelte': patch
----
-
-fix: flush anything pending before invoking flushSync callback function
diff --git a/.changeset/quiet-inputs-keep.md b/.changeset/quiet-inputs-keep.md
deleted file mode 100644
index 0efcfcc058..0000000000
--- a/.changeset/quiet-inputs-keep.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'svelte': patch
----
-
-fix: don't overwrite an unchanged spread `value`, preserving incomplete number input
diff --git a/.changeset/reactive-missing-property-checks.md b/.changeset/reactive-missing-property-checks.md
new file mode 100644
index 0000000000..c4b5f7105c
--- /dev/null
+++ b/.changeset/reactive-missing-property-checks.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: track missing state property checks in unowned deriveds
diff --git a/.changeset/short-radios-sneeze.md b/.changeset/short-radios-sneeze.md
deleted file mode 100644
index 847c3eef17..0000000000
--- a/.changeset/short-radios-sneeze.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'svelte': patch
----
-
-fix: read batch-local array on each-block commit
diff --git a/.changeset/tidy-pandas-hydrate.md b/.changeset/tidy-pandas-hydrate.md
deleted file mode 100644
index 944797a760..0000000000
--- a/.changeset/tidy-pandas-hydrate.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'svelte': patch
----
-
-fix: prevent hydration mismatch recovery from being intercepted by error boundaries
diff --git a/.changeset/tidy-trees-stay.md b/.changeset/tidy-trees-stay.md
deleted file mode 100644
index 65bf7de619..0000000000
--- a/.changeset/tidy-trees-stay.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'svelte': patch
----
-
-fix: preserve dynamic element connections during hydration
diff --git a/documentation/docs/05-special-elements/01-svelte-boundary.md b/documentation/docs/05-special-elements/01-svelte-boundary.md
index 41ebee1564..8af7edfbd1 100644
--- a/documentation/docs/05-special-elements/01-svelte-boundary.md
+++ b/documentation/docs/05-special-elements/01-svelte-boundary.md
@@ -38,7 +38,7 @@ This snippet will be shown when the boundary is first created, and will remain v
The `pending` snippet will _not_ be shown for subsequent async updates — for these, you can use [`$effect.pending()`]($effect#$effect.pending).
-> [!NOTE] In the [playground](/playground), your app is rendered inside a boundary with an empty pending snippet, so that you can use `await` without having to create one.
+> [!NOTE] During server-side rendering, a boundary with a `pending` snippet renders that snippet and ignores the rest of its content. See [Server-side rendering](await-expressions#Server-side-rendering).
### `failed`
diff --git a/documentation/docs/07-misc/01-best-practices.md b/documentation/docs/07-misc/01-best-practices.md
index e2cb72828f..ed7ddcbf7e 100644
--- a/documentation/docs/07-misc/01-best-practices.md
+++ b/documentation/docs/07-misc/01-best-practices.md
@@ -70,6 +70,10 @@ let color = type === 'danger' ? 'red' : 'green';
`$inspect.trace` is a debugging tool for reactivity. If something is not updating properly or running more than it should you can add `$inspect.trace(label)` as the first line of an `$effect` or `$derived.by` (or any function they call) to trace their dependencies and discover which one triggered an update.
+## `#key` block
+
+While the `#key` block is useful when you want transitions/animations to run when a certain expression changes, it can be very expensive — it unmounts every element/component inside each time, so should be used sparingly. Instead of using `#key` to cause expressions in a child component's `
+
+
+ {#snippet children()}{x}{/snippet}
+
diff --git a/packages/svelte/tests/compiler-errors/samples/let-directive-children-snippet/_config.js b/packages/svelte/tests/compiler-errors/samples/let-directive-children-snippet/_config.js
new file mode 100644
index 0000000000..27b6a88667
--- /dev/null
+++ b/packages/svelte/tests/compiler-errors/samples/let-directive-children-snippet/_config.js
@@ -0,0 +1,10 @@
+import { test } from '../../test';
+
+export default test({
+ error: {
+ code: 'let_directive_snippet_conflict',
+ message:
+ 'Cannot use `let:` directives on a component that has a `children` snippet. Use snippet parameters instead (e.g. `{#snippet children({ value })}`)',
+ position: [359, 368]
+ }
+});
diff --git a/packages/svelte/tests/compiler-errors/samples/let-directive-children-snippet/main.svelte b/packages/svelte/tests/compiler-errors/samples/let-directive-children-snippet/main.svelte
new file mode 100644
index 0000000000..bdfe3de9b5
--- /dev/null
+++ b/packages/svelte/tests/compiler-errors/samples/let-directive-children-snippet/main.svelte
@@ -0,0 +1,23 @@
+
+
+
+
+ {value}
+ {#snippet foo()}x{/snippet}
+
+
+ {#snippet children({ value })}{value}{/snippet}
+
+
+
+ {#snippet children()}{value}{/snippet}
+
+
+
+
+
+ {#snippet children()}Value is: {value}{/snippet}
+
diff --git a/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_config.js b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_config.js
new file mode 100644
index 0000000000..d5b5a00c0d
--- /dev/null
+++ b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_config.js
@@ -0,0 +1,6 @@
+import { test } from '../../test';
+
+// https://github.com/sveltejs/svelte/issues/18924
+export default test({
+ expect_hydration_error: true
+});
diff --git a/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_expected.html b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_expected.html
new file mode 100644
index 0000000000..0d29b99446
--- /dev/null
+++ b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_expected.html
@@ -0,0 +1 @@
+
inner
diff --git a/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_override.html b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_override.html
new file mode 100644
index 0000000000..e68995cf64
--- /dev/null
+++ b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/_override.html
@@ -0,0 +1 @@
+
inner
diff --git a/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/main.svelte b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/main.svelte
new file mode 100644
index 0000000000..7cbf8a47fb
--- /dev/null
+++ b/packages/svelte/tests/hydration/samples/boundary-nested-extra-node/main.svelte
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/packages/svelte/tests/migrate/samples/props-on-script-tag-line/input.svelte b/packages/svelte/tests/migrate/samples/props-on-script-tag-line/input.svelte
new file mode 100644
index 0000000000..dd623897bd
--- /dev/null
+++ b/packages/svelte/tests/migrate/samples/props-on-script-tag-line/input.svelte
@@ -0,0 +1,2 @@
+
+
{answer}
diff --git a/packages/svelte/tests/migrate/samples/props-on-script-tag-line/output.svelte b/packages/svelte/tests/migrate/samples/props-on-script-tag-line/output.svelte
new file mode 100644
index 0000000000..add32531da
--- /dev/null
+++ b/packages/svelte/tests/migrate/samples/props-on-script-tag-line/output.svelte
@@ -0,0 +1,3 @@
+
+
{answer}
\ No newline at end of file
diff --git a/packages/svelte/tests/print/samples/await-block/input.svelte b/packages/svelte/tests/print/samples/await-block/input.svelte
index ba0ba8c882..029f31bf53 100644
--- a/packages/svelte/tests/print/samples/await-block/input.svelte
+++ b/packages/svelte/tests/print/samples/await-block/input.svelte
@@ -34,3 +34,7 @@
{:catch}