Skip to content

[3.x] Populate global page store during Svelte 5 SSR#2938

Merged
pascalbaljet merged 1 commit into
3.xfrom
svelte-ssr-page-fix
Mar 11, 2026
Merged

[3.x] Populate global page store during Svelte 5 SSR#2938
pascalbaljet merged 1 commit into
3.xfrom
svelte-ssr-page-fix

Conversation

@pascalbaljet
Copy link
Copy Markdown
Member

In Svelte 5, $effect.pre() does not execute during SSR because render() from svelte/server is purely synchronous and skips all effects. This means the global page store exported from @inertiajs/svelte is never populated during server-side rendering, so any component reading usePage() or the page store receives empty props.

This adds a synchronous setPage() call in App.svelte that runs unconditionally during component initialization, ensuring the global store is populated before the render. The $effect.pre is kept for reactive client-side updates.

Fixes #2934.

@pascalbaljet pascalbaljet added the next major release We need to consider this for the next major release, perhaps because of a breaking change label Mar 8, 2026
@pascalbaljet pascalbaljet merged commit 494400c into 3.x Mar 11, 2026
57 of 58 checks passed
@pascalbaljet pascalbaljet deleted the svelte-ssr-page-fix branch March 11, 2026 09:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

next major release We need to consider this for the next major release, perhaps because of a breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant