diff --git a/.changeset/lazy-boats-stay.md b/.changeset/lazy-boats-stay.md new file mode 100644 index 000000000000..c36a1154035a --- /dev/null +++ b/.changeset/lazy-boats-stay.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: remove empty nodes from serialized server load data diff --git a/packages/kit/src/runtime/server/page/data_serializer.js b/packages/kit/src/runtime/server/page/data_serializer.js index 2f0197ae648b..36e064ba0d35 100644 --- a/packages/kit/src/runtime/server/page/data_serializer.js +++ b/packages/kit/src/runtime/server/page/data_serializer.js @@ -1,4 +1,5 @@ import * as devalue from 'devalue'; +import { compact } from '../../../utils/array.js'; import { create_async_iterator } from '../../../utils/streaming.js'; import { clarify_devalue_error, @@ -96,7 +97,7 @@ export function server_data_serializer(event, event_state, options) { const close = `\n`; return { - data: `[${strings.join(',')}]`, + data: `[${compact(strings).join(',')}]`, chunks: promise_id > 1 ? iterator.iterate((str) => open + str + close) : null }; } diff --git a/packages/kit/src/runtime/server/page/index.js b/packages/kit/src/runtime/server/page/index.js index 9e05ab3a4334..c0efedefd9a9 100644 --- a/packages/kit/src/runtime/server/page/index.js +++ b/packages/kit/src/runtime/server/page/index.js @@ -195,7 +195,10 @@ export async function render_page( } }); - data_serializer.add_node(i, server_data); + if (node) { + data_serializer.add_node(i, server_data); + } + data_serializer_json?.add_node(i, server_data); return server_data; @@ -348,7 +351,8 @@ export async function render_page( branch: ssr === false ? [] : compact(branch), action_result, fetched, - data_serializer + data_serializer: + ssr === false ? server_data_serializer(event, event_state, options) : data_serializer }); } catch (e) { // if we end up here, it means the data loaded successfully diff --git a/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+error.svelte b/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+error.svelte new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+page.server.js b/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+page.server.js new file mode 100644 index 000000000000..fc36614433de --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+page.server.js @@ -0,0 +1,4 @@ +/** @type {import('./$types').PageServerLoad} */ +export function load() { + return { answer: 42 }; +} diff --git a/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+page.svelte b/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+page.svelte new file mode 100644 index 000000000000..7c7268b87da6 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/load/serialization-empty-node/+page.svelte @@ -0,0 +1,6 @@ + + +