Skip to content

Commit 4ee2b96

Browse files
committed
[inertiajs#1872] Merge pull request #5 from jamesst20/svelte5-minimal-main
[inertiajs#1872] Svelte 5: Minimalest upgrade
1 parent c8d2d86 commit 4ee2b96

File tree

7 files changed

+2194
-866
lines changed

7 files changed

+2194
-866
lines changed

package-lock.json

+2,160-854
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/svelte/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
},
2626
"main": "src/index.js",
2727
"peerDependencies": {
28-
"svelte": "^3.20.0 || ^4.0.0"
28+
"svelte": "^3.20.0 || ^4.0.0 || ^5.0.0 || 5.0.0-next.1"
2929
},
3030
"dependencies": {
3131
"@inertiajs/core": "1.0.16",

packages/svelte/src/createInertiaApp.js

+11-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import App from './App.svelte'
33
import SSR from './SSR.svelte'
44
import store from './store'
55

6-
export default async function createInertiaApp({ id = 'app', resolve, setup, progress = {}, page }) {
6+
export default async function createInertiaApp({ id = 'app', resolve, setup, progress = {}, page, ssr }) {
77
const isServer = typeof window === 'undefined'
88
const el = isServer ? null : document.getElementById(id)
99
const initialPage = page || JSON.parse(el.dataset.page)
@@ -44,11 +44,19 @@ export default async function createInertiaApp({ id = 'app', resolve, setup, pro
4444
}
4545

4646
if (isServer) {
47-
const { html, head } = SSR.render({ id, initialPage })
47+
if (!ssr) {
48+
throw new Error(`createInertiaApp must provide ssr(...) for server-side rendering.`)
49+
}
50+
51+
const { html, head, css } = ssr(SSR, { id, initialPage })
4852

4953
return {
5054
body: html,
51-
head: [head],
55+
head: [
56+
head,
57+
// Note: Svelte 5 no longer output CSS
58+
...(css?.code ? [`<style data-vite-css>${css?.code}</style>`] : []),
59+
],
5260
}
5361
}
5462
}

playgrounds/svelte/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"laravel-vite-plugin": "^1.0.2",
1616
"lodash": "^4.17.21",
1717
"postcss": "^8.4.38",
18-
"svelte": "^4.2.16",
18+
"svelte": "^5.0.0-next.1",
1919
"svelte-check": "^3.7.1",
2020
"tailwindcss": "^3.4.3",
2121
"tslib": "^2.6.2",
+9-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
import { createInertiaApp } from '@inertiajs/svelte'
2+
import { hydrate, mount } from 'svelte'
23

34
createInertiaApp({
45
resolve: (name) => {
56
const pages = import.meta.glob('./Pages/**/*.svelte', { eager: true })
67
return pages[`./Pages/${name}.svelte`]
78
},
89
setup({ el, App }) {
9-
new App({ target: el, hydrate: true })
10+
// Svelte 4: new App({ target: el, hydrate: true })
11+
12+
// Svelte 5
13+
if (el.dataset.serverRendered === 'true') {
14+
hydrate(App, { target: el })
15+
} else {
16+
mount(App, { target: el })
17+
}
1018
},
1119
})
+6-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import { createInertiaApp } from '@inertiajs/svelte'
22
import createServer from '@inertiajs/svelte/server'
3-
3+
import { render } from 'svelte/server'
44
createServer((page) =>
55
createInertiaApp({
66
page,
77
resolve: (name) => {
88
const pages = import.meta.glob('./Pages/**/*.svelte', { eager: true })
99
return pages[`./Pages/${name}.svelte`]
1010
},
11+
ssr: (AppSSR, props) => {
12+
// Svelte 4: return AppSSR.render(props)
13+
// Svelte 5: return render(AppSSR, { props })
14+
return render(AppSSR, { props })
15+
},
1116
}),
1217
)

playgrounds/svelte/vite.config.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ export default defineConfig({
99
ssr: 'resources/js/ssr.js',
1010
refresh: true,
1111
}),
12-
svelte({
13-
compilerOptions: {
14-
hydratable: true,
15-
},
16-
}),
12+
svelte({
13+
compilerOptions: {
14+
// Svelte 4 only
15+
// hydratable: true
16+
}
17+
}),
1718
],
1819
})

0 commit comments

Comments
 (0)