From f58d60068d0a5f647838457e025da31fbf739531 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:11:48 +0200 Subject: [PATCH] docs: note default value breaking change to `bind:` in runes mode (#12412) * docs: note default value breaking change to `bind:` in runes mode https://github.com/sveltejs/svelte/issues/11400#issuecomment-2223186433 * Update sites/svelte-5-preview/src/routes/docs/content/03-appendix/02-breaking-changes.md Co-authored-by: Rich Harris --------- Co-authored-by: Rich Harris --- .../src/routes/docs/content/03-appendix/02-breaking-changes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sites/svelte-5-preview/src/routes/docs/content/03-appendix/02-breaking-changes.md b/sites/svelte-5-preview/src/routes/docs/content/03-appendix/02-breaking-changes.md index e2aa97c7d4..d53b590de9 100644 --- a/sites/svelte-5-preview/src/routes/docs/content/03-appendix/02-breaking-changes.md +++ b/sites/svelte-5-preview/src/routes/docs/content/03-appendix/02-breaking-changes.md @@ -171,6 +171,8 @@ Exports from runes mode components cannot be bound to directly. For example, hav In Svelte 4 syntax, every property (declared via `export let`) is bindable, meaning you can `bind:` to it. In runes mode, properties are not bindable by default: you need to denote bindable props with the [`$bindable`](/docs/runes#$bindable) rune. +If a bindable property has a default value (e.g. `let { foo = $bindable('bar') } = $props();`), you need to pass a non-`undefined` value to that property if you're binding to it. This prevents ambiguous behavior — the parent and child must have the same value — and results in better performance (in Svelte 4, the default value was reflected back to the parent, resulting in wasteful additional render cycles). + ### `accessors` option is ignored Setting the `accessors` option to `true` makes properties of a component directly accessible on the component instance. In runes mode, properties are never accessible on the component instance. You can use component exports instead if you need to expose them.