Skip to content

Commit 1beb19c

Browse files
fix: properly purge server load cache (#8893)
fixes #8272 When going from a page with server load to a page without server load, the cache wasn't purged properly --------- Co-authored-by: Simon H <[email protected]>
1 parent c9e491a commit 1beb19c

File tree

8 files changed

+48
-1
lines changed

8 files changed

+48
-1
lines changed

.changeset/fast-rules-exercise.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
fix: don't reuse previous server load cache when there's no server load function

packages/kit/src/runtime/client/client.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ export function create_client({ target }) {
853853
// server_data_node is undefined if it wasn't reloaded from the server;
854854
// and if current loader uses server data, we want to reuse previous data.
855855
server_data_node === undefined && loader[0] ? { type: 'skip' } : server_data_node ?? null,
856-
previous?.server
856+
loader[0] ? previous?.server : undefined
857857
)
858858
});
859859
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/** @type {import('./$types').LayoutServerLoad} */
2+
export function load(input) {
3+
return {
4+
title: input.url.pathname
5+
};
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<slot />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script>
2+
export let data;
3+
</script>
4+
5+
<p>Page without load</p>
6+
7+
<pre>{JSON.stringify(data)}</pre>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/** @type {import('./$types').PageServerLoad} */
2+
export function load() {
3+
return { server: true };
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script>
2+
/** @type {import('./$types').PageData} */
3+
export let data;
4+
</script>
5+
6+
<p>Page with server load</p>
7+
8+
<pre>{JSON.stringify(data)}</pre>

packages/kit/test/apps/basics/test/client.test.js

+16
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,22 @@ test.describe('Load', () => {
102102
);
103103
await app.goto('/load/server-data-reuse/no-load');
104104
expect(await page.textContent('pre')).toBe(JSON.stringify({ foo: { bar: 'Custom layout' } }));
105+
106+
await page.goto('/load/server-data-reuse/with-changing-parent/with-server-load');
107+
expect(await page.textContent('pre')).toBe(
108+
JSON.stringify({
109+
foo: { bar: 'Custom layout' },
110+
title: '/load/server-data-reuse/with-changing-parent/with-server-load',
111+
server: true
112+
})
113+
);
114+
await app.goto('/load/server-data-reuse/with-changing-parent/no-load');
115+
expect(await page.textContent('pre')).toBe(
116+
JSON.stringify({
117+
foo: { bar: 'Custom layout' },
118+
title: '/load/server-data-reuse/with-changing-parent/no-load'
119+
})
120+
);
105121
});
106122

107123
test('keeps server data when valid while not reusing client load data', async ({

0 commit comments

Comments
 (0)