Skip to content
Open
Changes from 1 commit
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
8929a9f
feat(svelte5): add Svelte 5 adapter and test app
brodienguyen Sep 23, 2025
f4a305c
refactor(test-app): update imports to @inertiajs/svelte5
brodienguyen Sep 23, 2025
2cddcf5
refactor(test-app): update to svelte5 page store usage
brodienguyen Sep 23, 2025
0a4ab02
refactor(components): migrate to $props and $state
brodienguyen Sep 23, 2025
2c77cc9
refactor(components): switch to children/fallback props
brodienguyen Sep 23, 2025
9fd8b75
refactor(deferred-props): update fallback syntax
brodienguyen Sep 23, 2025
05f05d8
refactor(events): use $page.url instead of page.url
brodienguyen Sep 23, 2025
6815b1b
refactor(FormComponent): use snippet for children
brodienguyen Sep 23, 2025
6b346fc
refactor(Deferred): improve reactivity in effect
brodienguyen Sep 23, 2025
d12b857
refactor(App): improve page state reactivity
brodienguyen Sep 23, 2025
fd1f177
refactor(FormComponent): wrap form content in snippet
brodienguyen Sep 23, 2025
ec49202
refactor(components): update event handler syntax
brodienguyen Sep 23, 2025
c891424
feat(form): expose isDirty and setError in Form
brodienguyen Sep 23, 2025
f353ab4
refactor(form): update Form usage to snippet block
brodienguyen Sep 23, 2025
b322570
refactor(form): update Form usage to snippet block
brodienguyen Sep 23, 2025
232103a
refactor(FormComponent): update slot usage
brodienguyen Sep 23, 2025
acf6066
refactor(form): update Form usage and error display
brodienguyen Sep 23, 2025
9e911e1
refactor(FormComponent): update Form usage
brodienguyen Sep 23, 2025
935b917
feat(FormComponent): add email field to form
brodienguyen Sep 23, 2025
8337de1
test(svelte): skip tests for svelte5 adapter
brodienguyen Sep 23, 2025
073f47f
refactor(form): migrate useForm to Svelte runes
brodienguyen Sep 23, 2025
9906982
refactor(FormHelper): remove $ prefix from form usage
brodienguyen Sep 24, 2025
461cffc
refactor(FormHelper): remove $ prefix from form usage
brodienguyen Sep 24, 2025
e1bf42a
refactor(FormComponent): update Reset.svelte children
brodienguyen Sep 24, 2025
adb6a9b
refactor(FormComponent): use snippet for form children
brodienguyen Sep 24, 2025
0d719a1
refactor(form): use snippet for form children
brodienguyen Sep 24, 2025
fef4783
fix(useForm): correct error handling in onError callback
brodienguyen Sep 24, 2025
fea83cf
fix(useForm): improve reactivity and reset logic
brodienguyen Sep 24, 2025
2901ea6
fix(form): add id to error message div
brodienguyen Sep 24, 2025
f39a609
refactor(useForm): improve defaults update logic
brodienguyen Sep 24, 2025
bf61286
refactor(test-app): make window props reactive to page
brodienguyen Sep 24, 2025
874815a
refactor(test-app): use $props in Svelte pages
brodienguyen Sep 24, 2025
664c038
refactor(test-app): use $props in Svelte5 components
brodienguyen Sep 24, 2025
e5ed818
feat(useForm): add reactive getters for form data
brodienguyen Sep 24, 2025
bc59e37
refactor(remember): remove $ prefix from form references
brodienguyen Sep 24, 2025
b684a14
refactor(ManyGroups): use $props for prop destructuring
brodienguyen Sep 24, 2025
ae6817c
refactor(InstantReload): use $props for foo and bar
brodienguyen Sep 24, 2025
57c25d7
refactor(test-app): use $props destructuring in pages
brodienguyen Sep 24, 2025
cdec571
refactor(form-helper): remove $ prefix from form usage
brodienguyen Sep 24, 2025
0919055
refactor(WhenVisible): use #snippet blocks for slots
brodienguyen Sep 24, 2025
5969cd1
refactor(test-app): use $props in Svelte components
brodienguyen Sep 24, 2025
af3cf0f
refactor(FormHelper): update form type to InertiaFormRunes
brodienguyen Sep 24, 2025
351c05c
refactor(FormHelper): update to use InertiaFormRunes type
brodienguyen Sep 24, 2025
720744c
refactor(DeepMergeProps): use $props and $state helpers
brodienguyen Sep 24, 2025
a351d97
fix(useForm): update defaults and remember logic
brodienguyen Sep 24, 2025
0904ca9
refactor(useForm): improve Svelte 5 runes compatibility
brodienguyen Sep 24, 2025
a897d2e
test: skip tests for svelte5 package
brodienguyen Sep 24, 2025
fdc07f0
refactor(useForm): simplify and modernize form logic
brodienguyen Sep 24, 2025
cb60fff
refactor(form): migrate useForm to TypeScript store
brodienguyen Sep 24, 2025
da1be08
refactor(FormComponent): update error markup and layout
brodienguyen Sep 24, 2025
ef1bf65
refactor(svelte5): migrate usePrefetch to $state
brodienguyen Sep 24, 2025
1c8dfe1
refactor(svelte5): rewrite useRemember for Svelte 5
brodienguyen Sep 24, 2025
9bc6a48
fix(index): update imports for usePrefetch and useRemember
brodienguyen Sep 24, 2025
eed53a9
build(test-app): update Svelte and Vite dependencies
brodienguyen Sep 24, 2025
1a0cb87
lint: run pnpm run format
brodienguyen Sep 24, 2025
6ba2754
ci(workflows): add svelte5 to adapter matrix
brodienguyen Sep 25, 2025
a0107b9
Merge remote-tracking branch 'inertia/master' into new-package-svelte-5
puRe1337 Oct 31, 2025
ccc3d85
chore: update lock file
puRe1337 Oct 31, 2025
880260c
chore: update dependencies
puRe1337 Oct 31, 2025
353e03c
chore: update test-app packages and copied files from original svelte…
puRe1337 Oct 31, 2025
bd39ed2
refactor: migrate Render.svelte to Component and use RenderProps type…
puRe1337 Oct 31, 2025
86dc955
feat: purge page store completely and use state only
puRe1337 Oct 31, 2025
14bcd0a
refactor: use Component instead of ComponentType
puRe1337 Oct 31, 2025
d1c0f05
feat: migrated useForm to runes mode
puRe1337 Oct 31, 2025
9fc163a
chore: keep types in svelte5/index.ts of original package
puRe1337 Oct 31, 2025
afe3870
chore: types inside svelte/5links.ts and more syncing with current sv…
puRe1337 Oct 31, 2025
437cc90
fix: pass down a snapshot of current state to ensure core router can …
puRe1337 Oct 31, 2025
8778403
refactor: tidy up createInertiaApp
puRe1337 Oct 31, 2025
a374f8a
fix: dedupe axios version in lock file
puRe1337 Oct 31, 2025
b4ff8ea
fix: skip more test
puRe1337 Oct 31, 2025
43ae195
fix: App.svelte effect
puRe1337 Oct 31, 2025
22ead7e
refactor: tidy up Form.svelte
puRe1337 Oct 31, 2025
13a064d
feat: add InfiniteScroll but in runes style
puRe1337 Oct 31, 2025
f48fd8d
refactor: tidy up Link, WhenVisible
puRe1337 Oct 31, 2025
44f3cb3
chore: run sv migrate on test-app
puRe1337 Oct 31, 2025
c421a8a
refactor: tidy up WhenVisible component
puRe1337 Oct 31, 2025
7309b45
refactor: types in Deferred component & fix side-effects
puRe1337 Oct 31, 2025
9d1f527
refactor: dont take a snapshot of newPage inside page state
puRe1337 Oct 31, 2025
3ae5d95
refactor: tidyup PreseveEqualProps
puRe1337 Oct 31, 2025
8865267
chore: add missing Router component
puRe1337 Oct 31, 2025
2e3d86d
chore: add comment to resolveRenderProps
puRe1337 Oct 31, 2025
172ef40
chore: add type-check:test-app:svelte5 script to package.json
puRe1337 Oct 31, 2025
3d58470
fix: dont return mount
puRe1337 Oct 31, 2025
5ff46d3
chore: disable eslint on children in Grid test component
puRe1337 Oct 31, 2025
197ffac
fix: type errors
puRe1337 Oct 31, 2025
87e7a4b
format code-style
puRe1337 Oct 31, 2025
bca56f3
refactor: use attachment instead of manually handling
puRe1337 Oct 31, 2025
f031658
fix: set target version to ES2020 in build
puRe1337 Nov 1, 2025
f7255f2
fix(ci): prevent pnpm wildcard from matching both svelte and svelte5 …
puRe1337 Nov 3, 2025
900e72a
fix(ci): handle vue3 build in playwright workflow
puRe1337 Nov 3, 2025
a7a3fc5
fix: await setup in createInertiaApp
puRe1337 Nov 4, 2025
61f8b13
fix: improve nestedA comparison logic for preserveEqualProps
puRe1337 Nov 4, 2025
30f2814
feat: add missing 'dev:test-app:svelte5' script
puRe1337 Nov 4, 2025
26a0c70
feat: add lint script for svelte5 test app
puRe1337 Nov 4, 2025
1986f60
refactor: use types instead of any in PreserveEqualProps
puRe1337 Nov 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions packages/svelte5/test-app/Pages/PreserveEqualProps.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,20 @@
let previousNestedB = $state(nestedB)
$effect(() => {
if (nestedA !== previousNestedA) {
untrack(() => {
effectACount++
previousNestedA = nestedA
})
const preserve = untrack(() => config.get('future.preserveEqualProps'))
// Even when `preserveEqualProps` is enabled, Svelte will wrap incoming props
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please take a look at this one.
While migrating more code to the Svelte 5 Runes style, I haven't found a cleaner solution for this case yet.
For this reason, a small workaround has been implemented. The linked comment explains the proxy behavior in more detail.

// in a new reactive Proxy on each update. That means the reference to `nestedA`
// changes every time, regardless of whether the underlying object from Inertia
// was preserved or not. To avoid false positives, we compare by value when
// `preserveEqualProps` is enabled, and by reference otherwise.
const isDifferent = preserve
? (a: any, b: any) => JSON.stringify(a) !== JSON.stringify(b)
: (a: any, b: any) => a !== b
if (isDifferent(nestedA, previousNestedA)) {
effectACount++
previousNestedA = preserve ? structuredClone(nestedA) : nestedA
}
})
Expand Down