From dcb976eff9fe049af6ae106eac8d312f23a8dd43 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Sun, 21 Jul 2024 00:03:14 +0200 Subject: [PATCH] fix: avoid warning for non reactive property in generated root --- .changeset/nasty-deers-begin.md | 5 +++++ packages/kit/src/core/sync/write_root.js | 2 +- .../kit/test/apps/basics/test/client.test.js | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .changeset/nasty-deers-begin.md diff --git a/.changeset/nasty-deers-begin.md b/.changeset/nasty-deers-begin.md new file mode 100644 index 000000000000..f1e922ebc731 --- /dev/null +++ b/.changeset/nasty-deers-begin.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: avoid warning for non reactive property in generated root diff --git a/packages/kit/src/core/sync/write_root.js b/packages/kit/src/core/sync/write_root.js index af8cf889bc32..6c3636d281be 100644 --- a/packages/kit/src/core/sync/write_root.js +++ b/packages/kit/src/core/sync/write_root.js @@ -48,7 +48,7 @@ export function write_root(manifest_data, output) { ${ isSvelte5Plus() ? dedent` - let { stores, page, constructors, components = [], form, ${levels + let { stores, page, constructors, components = $bindable([]), form, ${levels .map((l) => `data_${l} = null`) .join(', ')} } = $props(); ` diff --git a/packages/kit/test/apps/basics/test/client.test.js b/packages/kit/test/apps/basics/test/client.test.js index 21693343dd4a..139502d61b58 100644 --- a/packages/kit/test/apps/basics/test/client.test.js +++ b/packages/kit/test/apps/basics/test/client.test.js @@ -1198,3 +1198,19 @@ test.describe('INP', () => { expect(time).toBeLessThan(400); }); }); + +test.describe('binding_property_non_reactive warn', () => { + test('warning is not thrown from the root of svelte', async ({ page }) => { + let is_warning_thrown = false; + page.on('console', (m) => { + if ( + m.type() === 'warn' && + m.text().includes('binding_property_non_reactive `bind:this={components[0]}`') + ) { + is_warning_thrown = true; + } + }); + await page.goto('/'); + expect(is_warning_thrown).toBeFalsy(); + }); +});