File: README.md
About Inertia.js
Inertia.js lets builders ship modern single-page applications in React, Vue, or Svelte without building an API. Your backend keeps doing what it already does well: routing, controllers, models, authorization, validation. Instead of returning a template, it returns a page component with its data. Inertia connects the two halves, so a click never triggers a full page reload.
It all stays in one application: one codebase, one router, one source of truth, and the single-page experience your users expect. Fewer moving parts means fewer decisions between an idea and a production application, whether a human or an agent is writing the code.
Everything a real product needs, designed to work together:
- Page visits, forms, file uploads with progress, and server-side validation
- Optimistic updates that render before the server responds and roll back if it fails
- Partial reloads, deferred props, prefetching, polling, and infinite scroll
- Server-side rendering, code splitting, and view transitions
- History encryption for pages that hold sensitive data
- DevTools that show every request, header, and hydrated prop while you build
Adapters
Inertia is the layer between your backend and your frontend, and it works through adapters. It doesn't replace the frameworks you already use, on either side. The React, Vue, and Svelte adapters all live in the inertiajs/inertia repository. On the server, the Laravel adapter is officially maintained, and community adapters cover Rails, Phoenix, Django, Symfony, AdonisJS, Go, .NET, and more.
Laravel's official React, Vue, and Svelte starter kits are built on Inertia. A new application begins with login, registration, password resets, email verification, two-factor authentication, and profile settings already working.
Learning Inertia.js
The documentation takes you from installation to how the protocol works under the hood. Prefer to read code? The demo application is a mini CRM built with Laravel and Vue, with showcase pages for forms, navigation, data loading, prefetching, state management, and error handling. Its source is in the demo-v3 repository.
Deploying Inertia.js
An Inertia application runs anywhere your backend does. The fastest path from idea to production is Laravel Cloud. Connect a repository and you can deploy a app in under a minute. There are no servers to configure, and your asset build and SSR server are handled for you. Add a managed database, cache, or object storage in seconds, with the right environment variables connected for you automatically. With Flex compute, your full stack scales to zero when it's idle and wakes in under 500 milliseconds, which means staging environments and side projects cost nothing while nobody is using them. The Starter plan is $5 a month and comes with $5 in usage credits included. Try Cloud with your first month for free.
Contributing
Thank you for considering contributing to Inertia! You can read the contribution guide here.
Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
License
Inertia is open-sourced software licensed under the MIT license.
File: CHANGELOG.md
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
For changes prior to v1.0.0, see the legacy releases.
[Unreleased](https://github.com/inertiajs/inertia/compare/v3.9.1...3.x)
- Nothing yet
[v3.9.1](https://github.com/inertiajs/inertia/compare/v3.9.0...v3.9.1) - 2026-10-09
What's Changed
- [3.x] Only send the XSRF token header to same-origin URLs by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3313
- [3.x] Use a unique IV for every encrypted history entry by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3315
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.9.0...v3.9.1
[v3.9.0](https://github.com/inertiajs/inertia/compare/v3.8.0...v3.9.0) - 2026-10-09
What's Changed
- [3.x] Drain tasks added while the queue is settling by @gianpieropuleo in https://github.com/inertiajs/inertia/pull/3276
- [3.x] Let a history restore supersede a page update that is still resolving by @thecrazybob in https://github.com/inertiajs/inertia/pull/3274
- [3.x] Add
typeto thenavigateevent detail by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3291 - [3.x] Handle QuotaExceededError in history.replaceState by @danielperez9430 in https://github.com/inertiajs/inertia/pull/3280
- [3.x] Preserve sourcemaps in Vite entry transforms by @fouteox in https://github.com/inertiajs/inertia/pull/3257
- [3.x] Flush the prefetch cache when clearing history by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3307
- [3.x] Discard `` requests that outlive the component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3308
- [3.x] Add
backgroundoption to pause polling in background tabs by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3292 - [3.x] Fix Svelte
<Form>error when a focused field unmounts by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3309 - [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3310
- [3.x] Stop
useRememberfrom restoring an earlier page's state on new visits by @gianpieropuleo in https://github.com/inertiajs/inertia/pull/3302 - [3.x] Fix `` error when unmounting right after its items change by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3312
New Contributors
- @thecrazybob made their first contribution in https://github.com/inertiajs/inertia/pull/3274
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.8.0...v3.9.0
[v3.8.0](https://github.com/inertiajs/inertia/compare/v3.7.1...v3.8.0) - 2026-10-01
What's Changed
- [3.x] Fix multi-byte UTF-8 corruption in SSR request body parsing by @onk in https://github.com/inertiajs/inertia/pull/3248
- Bump pnpm/action-setup from 6.0.10 to 6.1.0 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3261
- [3.x] Fix core types when Axios is not installed by @fouteox in https://github.com/inertiajs/inertia/pull/3258
- [3.x] Compare asset versions before restoring history on a back/forward reload by @lazerg in https://github.com/inertiajs/inertia/pull/3264
- [3.x] Prevent a stale optimistic response from reverting a newer optimistic update by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3245
- [3.x] Prefer server.origin when resolving SSR CSS link URLs by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3268
- [3.x] Avoid top-level await in the generated SSR bundle by @ramonmalcolm10 in https://github.com/inertiajs/inertia/pull/3239
- [3.x] Forward missing Form visit callbacks by @daleweaver777 in https://github.com/inertiajs/inertia/pull/3262
- [3.x] Add WhenMounted component by @evan-burrell in https://github.com/inertiajs/inertia/pull/3218
- [3.x] Improve tests in CI by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3277
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3278
- [3.x] Clean up in-flight cancelled prefetches by @gianpieropuleo in https://github.com/inertiajs/inertia/pull/3271
- [3.x] Handle already-aborted signals in the XHR client by @gianpieropuleo in https://github.com/inertiajs/inertia/pull/3273
- [3.x] Fix React InfiniteScroll scroll jump on Safari and CI flakiness by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3282
- [3.x] Support big integers as native BigInt values by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3237
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3286
- [3.x] Silence
state_referenced_locallywarning in SvelteAppcomponent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3287
New Contributors
- @onk made their first contribution in https://github.com/inertiajs/inertia/pull/3248
- @fouteox made their first contribution in https://github.com/inertiajs/inertia/pull/3258
- @ramonmalcolm10 made their first contribution in https://github.com/inertiajs/inertia/pull/3239
- @daleweaver777 made their first contribution in https://github.com/inertiajs/inertia/pull/3262
- @evan-burrell made their first contribution in https://github.com/inertiajs/inertia/pull/3218
- @gianpieropuleo made their first contribution in https://github.com/inertiajs/inertia/pull/3271
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.7.1...v3.8.0
[v3.7.1](https://github.com/inertiajs/inertia/compare/v3.7.0...v3.7.1) - 2026-09-11
What's Changed
- [3.x] Prefer server.origin when resolving SSR CSS link URLs by @RenautMestdagh in https://github.com/inertiajs/inertia/pull/3217
- [3.x] Prevent unhandled rejection when a view transition is aborted mid-flight by @lazerg in https://github.com/inertiajs/inertia/pull/3230
- [3.x] Clear the prefetch hover timer when a link is clicked by @lazerg in https://github.com/inertiajs/inertia/pull/3234
- Revert "[3.x] Prefer server.origin when resolving SSR CSS link URLs" by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3255
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3254
- [3.x] Escape
<in the initial page JSON by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3253
New Contributors
- @RenautMestdagh made their first contribution in https://github.com/inertiajs/inertia/pull/3217
- @lazerg made their first contribution in https://github.com/inertiajs/inertia/pull/3230
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.7.0...v3.7.1
[v3.7.0](https://github.com/inertiajs/inertia/compare/v3.6.1...v3.7.0) - 2026-08-18
What's Changed
- Bump stefanzweifel/git-auto-commit-action from 7.1.0 to 7.2.0 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3192
- [3.x] Guard Form getFormData against a missing form element by @NiekNijland in https://github.com/inertiajs/inertia/pull/3203
- [3.x] Preserve identity of untouched props in replaceProp by @skryukov in https://github.com/inertiajs/inertia/pull/3194
- [3.x] Fix React dropping the restored page on
back_forwardvisits by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3196 - [3.x] Don't cancel background async visits on navigation by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3198
- Bump actions/setup-node from 6.4.0 to 7.0.0 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3205
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3207
- Bump actions/checkout from 7.0.0 to 7.0.1 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3209
- Bump pnpm/action-setup from 6.0.9 to 6.0.10 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3211
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3223
- [3.x] Return
pollingstate fromusePollby @pascalbaljet in https://github.com/inertiajs/inertia/pull/3220 - [3.x] Preserve once props during instant visits by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3221
- [3.x] Expose
cancelon the<Form>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3224 - [3.x] Add
cancelOnUnmountto the<Form>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3225
New Contributors
- @NiekNijland made their first contribution in https://github.com/inertiajs/inertia/pull/3203
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.6.1...v3.7.0
[v3.6.1](https://github.com/inertiajs/inertia/compare/v3.6.0...v3.6.1) - 2026-07-07
What's Changed
- [3.x] Change Svelte render call to be asynchronous by @buhrmi in https://github.com/inertiajs/inertia/pull/3188
- [3.x] Support raw request bodies in the built-in HTTP client by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3189
- [3.x] Fix PHP 8.5 PDO deprecation notice in Playgrounds by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3190
- Bump actions/cache from 5.0.5 to 6.1.0 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3181
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.6.0...v3.6.1
[v3.6.0](https://github.com/inertiajs/inertia/compare/v3.5.0...v3.6.0) - 2026-07-02
What's Changed
- Bump the github-actions group with 2 updates by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3167
- [3.x] Improve HTTPS Vite SSR performance on Linux with small response sizes by @nckrtl in https://github.com/inertiajs/inertia/pull/3183
- [3.x] Defer forced reloads to a cancelable
locationevent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3180 - [3.x] Add poll marker to visit for polling requests by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3184
- [3.x] Send
X-Requested-Withheader from the built-in HTTP client by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3186
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.5.0...v3.6.0
[v3.5.0](https://github.com/inertiajs/inertia/compare/v3.4.0...v3.5.0) - 2026-06-25
What's Changed
- [3.x] Fix invalid ARIA roles on default progress bar by @atymic in https://github.com/inertiajs/inertia/pull/3163
- [3.x] Support anchor target attribute by @devhammed in https://github.com/inertiajs/inertia/pull/3159
- [3.x] Prevent unhandled rejection when a view transition is superseded by @mortenhauberg in https://github.com/inertiajs/inertia/pull/3165
- [3.x] feat: Add page to titleCallback by @mrleblanc101 in https://github.com/inertiajs/inertia/pull/3160
- [3.x] Fix Svelte build failure from optional TypeScript parameters by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3173
- Revert "[3.x] Fix Svelte build failure from optional TypeScript parameters" by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3174
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3169
- [3.x] Add server provided head elements by @benbjurstrom in https://github.com/inertiajs/inertia/pull/3161
- [3.x] fix(core): add async option to FormComponentOptions by @sawirricardo in https://github.com/inertiajs/inertia/pull/3157
- [3.x] fix(core): ensure robust SSR error classification by @hamdyelbatal122 in https://github.com/inertiajs/inertia/pull/3151
- [3.x] Do not throw handled useHttp validation errors by @cyphercodes in https://github.com/inertiajs/inertia/pull/3142
New Contributors
- @atymic made their first contribution in https://github.com/inertiajs/inertia/pull/3163
- @mrleblanc101 made their first contribution in https://github.com/inertiajs/inertia/pull/3160
- @benbjurstrom made their first contribution in https://github.com/inertiajs/inertia/pull/3161
- @sawirricardo made their first contribution in https://github.com/inertiajs/inertia/pull/3157
- @hamdyelbatal122 made their first contribution in https://github.com/inertiajs/inertia/pull/3151
- @cyphercodes made their first contribution in https://github.com/inertiajs/inertia/pull/3142
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.4.0...v3.5.0
[v3.4.0](https://github.com/inertiajs/inertia/compare/v3.3.1...v3.4.0) - 2026-06-11
What's Changed
- Bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3145
- [3.x] Add
cachedflag to theinertia:navigateevent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3146 - [3.x] Add
inertia:clientVisitevent and visit correlation id by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3147 - [3.x] Refactor visit ID to be a string by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3148
- [3.x] Add page and visit id to error event detail by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3152
- [3.x] Add internal request and response interceptors by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3153
- [3.x] Bump Playground dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3154
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.3.1...v3.4.0
[v3.3.1](https://github.com/inertiajs/inertia/compare/v3.3.0...v3.3.1) - 2026-06-04
What's Changed
- [3.x] Vue 3 Playground: Fixes scroll + code issues by @yoeriboven in https://github.com/inertiajs/inertia/pull/3133
- [3.x] Instant visit: only preserve scroll behavior on instant visit by @yoeriboven in https://github.com/inertiajs/inertia/pull/3134
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3137
- Dependabot cooldown + auto-merge by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3138
New Contributors
- @yoeriboven made their first contribution in https://github.com/inertiajs/inertia/pull/3133
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.3.0...v3.3.1
[v3.3.0](https://github.com/inertiajs/inertia/compare/v3.2.0...v3.3.0) - 2026-05-27
What's Changed
- [3.x] Await user-provided Form onSuccess callback before completing submission by @mattwigham in https://github.com/inertiajs/inertia/pull/3122
- [3.x] Migrate playgrounds from Prism to Laravel AI SDK by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3128
- [3.x] Support network URLs for loading CSS assets in SSR dev server by @simonellensohn in https://github.com/inertiajs/inertia/pull/3121
- [3.x] Pass props to withApp callback by @CL0Pinette in https://github.com/inertiajs/inertia/pull/3125
- [3.x] Run pnpm audit on push and releases, not on PRs by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3129
- [3.x] Fix Svelte infinite scroll unmount race by @hschne in https://github.com/inertiajs/inertia/pull/3127
New Contributors
- @mattwigham made their first contribution in https://github.com/inertiajs/inertia/pull/3122
- @simonellensohn made their first contribution in https://github.com/inertiajs/inertia/pull/3121
- @CL0Pinette made their first contribution in https://github.com/inertiajs/inertia/pull/3125
- @hschne made their first contribution in https://github.com/inertiajs/inertia/pull/3127
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.2.0...v3.3.0
[v3.2.0](https://github.com/inertiajs/inertia/compare/v3.1.1...v3.2.0) - 2026-05-20
What's Changed
- [3.x] Bump pnpm by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3099
- [3.x] Pin GitHub Actions to commit SHAs and harden CI workflows by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3097
- Bump actions/upload-artifact from 6.0.0 to 7.0.1 in the github-actions group by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/3100
- [3.x] Add
modeoption torouter.pollby @pascalbaljet in https://github.com/inertiajs/inertia/pull/3093 - [3.x] Support dynamic data in
usePollby @pascalbaljet in https://github.com/inertiajs/inertia/pull/3098 - [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3107
- [3.x] Add Inertia.once for events that fire once by @sebastiandedeyne in https://github.com/inertiajs/inertia/pull/3105
- [3.x] Fix
httpExceptionevent response data type by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3109 - [3.x] Skip DOM updates when `` request is cancelled by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3110
- [3.x] Upgrade to TypeScript 6 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3108
- [3.x] Improve
router.pollthrottle semantics and stop+start handling by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3114 - [3.x] Migrate from Prettier and ESLint to Oxfmt and Oxlint by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3115
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.1.1...v3.2.0
[v3.1.1](https://github.com/inertiajs/inertia/compare/v3.1.0...v3.1.1) - 2026-05-07
What's Changed
- fix: prevent explicit undefined values from overwriting visit defaults (#3018) by @Vitalcheffe in https://github.com/inertiajs/inertia/pull/3019
- [3.x] Fix Vue
<Deferred>SSR crash on sibling slot transitions by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3092
New Contributors
- @Vitalcheffe made their first contribution in https://github.com/inertiajs/inertia/pull/3019
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.1.0...v3.1.1
[v3.1.0](https://github.com/inertiajs/inertia/compare/v3.0.3...v3.1.0) - 2026-05-06
What's Changed
- [3.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3067
- [3.x] Bump CI action versions by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3071
- [3.x] Additional tests for layouts in React by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3073
- [3.0] Fix React
useFormsubmitting stale data after synchronoussetDataby @skryukov in https://github.com/inertiajs/inertia/pull/3057 - fix(core): support nonce for progress styles by @artemxknpv in https://github.com/inertiajs/inertia/pull/3069
- [3.x] Sandbox error dialog iframe to prevent
window.parentaccess by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3078 - [3.x] Add
hostoption to SSR server by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3077 - [3.x] Block
__proto__in query string parsing by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3079 - [3.x] Bump Playground dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3081
- [3.x] Escape title content in SSR head output by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3080
- [3.x] Add
rescueslot to<Deferred>for failed deferred props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3076 - [3.x] Improve CSP support for progress bar and error dialog by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3086
- [3.x] Add deferred prop rescue example to playgrounds by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3089
New Contributors
- @artemxknpv made their first contribution in https://github.com/inertiajs/inertia/pull/3069
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.3...v3.1.0
[v3.0.3](https://github.com/inertiajs/inertia/compare/v3.0.2...v3.0.3) - 2026-04-07
What's Changed
- [3.x] Bump Vite and Vitest by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3046
- [3.x] Update TSConfig and bump CI actions by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3047
- [3.x] Infer form data keys in
resetOnSuccessandresetOnErrorby @pascalbaljet in https://github.com/inertiajs/inertia/pull/3048 - [3.x] Fix layout props callback misclassifying function-valued props as named layouts by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3049
- [3.x] Fix flash event not firing when response contains errors by @skryukov in https://github.com/inertiajs/inertia/pull/3038
- [3.x] Fire flash event after full reload by @skryukov in https://github.com/inertiajs/inertia/pull/3041
- [3.x] Improve Playwright CI cache by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3051
- [3.x] Add
onHttpException,onNetworkError, and response toonSuccessinuseHttpby @pascalbaljet in https://github.com/inertiajs/inertia/pull/3050
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.2...v3.0.3
[v3.0.2](https://github.com/inertiajs/inertia/compare/v3.0.1...v3.0.2) - 2026-04-02
What's Changed
- [3.x] Populate
percentagein upload progress events by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3030 - [3.x] Add test for optional scroll props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3032
- [3.x] Warm up lazy-loaded page dependencies in Vite plugin by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3035
- [3.x] Harden CI workflows and fix dependency vulnerabilities by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3031
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.1...v3.0.2
[v3.0.1](https://github.com/inertiajs/inertia/compare/v3.0.0...v3.0.1) - 2026-03-31
What's Changed
- [3.x] Update Playgrounds by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3013
- [3.x] Support anonymous arrow functions as React layout components by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3016
- [3.x] Fix
WhenVisiblecrash during SSR by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3021 - [3.x] Remove plain
when Head component sets a title by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3022 - [3.x] Fix
defineOptions({ layout: [...] })type error with nested layouts by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3023 - [3.x] Fix flash data re-firing on partial reloads by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3024
- [3.x] Warm up SSR module graph on dev server start by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3007
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.0...v3.0.1
[v3.0.0](https://github.com/inertiajs/inertia/compare/v2.3.16...v3.0.0) - 2026-03-25
What's Changed
- [3.x] Drop support for Svelte 4 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2713
- [3.x] Remove qs dependency by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2791
- [3.x] Svelte 5 Adapter based on #2586 by @puRe1337 in https://github.com/inertiajs/inertia/pull/2677
- [3.x] Drop support for React < 19 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2712
- [3.x] Pass props as second argument to resolve() in createInertiaApp() by @HichemTab-tech in https://github.com/inertiajs/inertia/pull/2485
- [3.x] Only reset useForm processing and progress with onFinish by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2838
- [3.x] Bump Node.js to v24 + Bump GitHub CI Actions by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2847
- [3.x] Remove unused
pendingVisitOptionsparameter by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2853 - [3.x] Remove
hideProgress()andrevealProgress()exports by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2852 - [3.x] Svelte 5 improvements by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2863
- [3.x] Built-in XHR HTTP client + make Axios an optional peer dependency by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2833
- [3.x] Add
useHttphook for standalone HTTP requests by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2840 - [3.x] Generics in
<Form>Component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2849 - [3.x] Add layout props helpers by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2859
- [3.x] Upgrade Svelte playground to Svelte 5 syntax by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2868
- [3.x] Migrate
futureoptions to be new defaults by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2867 - [3.x] Add
reloadingslot prop to<Deferred>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2860 - [3.x] Rename
useDataElementForInitialPagetouseDataAttributeForInitialPageby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2871 - [3.x] Add
preserveErrorsoption to preserve validation errors during partial requests by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2819 - [3.x] SSR support in Vite development mode + simplified setup by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2864
- [3.x] Rename
invalidandexceptionevents and add visit callbacks by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2869 - [3.x] Optimistic updates for
router,useForm, anduseHttpby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2866 - [3.x] Streamline adapter
index.tsexports by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2872 - [3.x] Drop CJS builds in favor of ESM-only output by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2873
- [3.x] Use Precognition 2.x and bump all deps by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2877
- [3.x] Support for
withAllErrorsinuseHttpby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2880 - [3.x] Add
optimisticprop to<Form>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2881 - [3.x] Add test for named layout persistence across navigations by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2882
- [3.x] Allow calling
createInertiaApp()without arguments by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2883 - [3.x] Add
layoutoption tocreateInertiaApp()by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2884 - [3.x] Update Playgrounds by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2885
- [3.x] Add a singleton for the usePage function by @DavidCCoimbra in https://github.com/inertiajs/inertia/pull/2874
- [3.x] Remove
legacy.useDataAttributeForInitialPageconfig option by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2887 - [3.x] Concurrent optimistic updates by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2898
- [3.x] Preserve URL fragment across redirects with server-side
preserveFragmentoption by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2897 - [3.x] Hash fragment redirect support by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2899
- [3.x] Support nested dot-notation prop types by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2901
- [3.x] Add strictMode option to React's createInertiaApp by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2909
- [3.x] Fix FOUC during SSR development by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2911
- [3.x] Make
clearHistoryandencryptHistoryoptional in page object by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2908 - [3.x] Instant visits by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2907
- Include resources directory in published packages by @pushpak1300 in https://github.com/inertiajs/inertia/pull/2914
- [3.x] Consolidate SSR error handling by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2915
- [3.x] Use the popover API for the progress bar by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2917
- [3.x] Minor clean up core package by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2918
- [3.x] Fix axios adapter being required by @skryukov in https://github.com/inertiajs/inertia/pull/2926
- [3.x] Fire
onHttpExceptionfor server-rendered Inertia error pages by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2927 - [3.x] Fix duplicate base path in Vite SSR CSS link URLs by @isaackaara in https://github.com/inertiajs/inertia/pull/2936
- [3.x] Populate global page store during Svelte 5 SSR by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2938
- [3.x] Stop collecting CSS sub-dependencies during SSR by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2937
- [v3.x] refactor(svelte)!: migrate useLayoutProps from stores to runes by @peaklabs-dev in https://github.com/inertiajs/inertia/pull/2944
- [3.x] fix: remove request from stream on network failure by @Anthony14FR in https://github.com/inertiajs/inertia/pull/2940
- [3.x] Support more createInertiaApp() patterns in SSR transform by @skryukov in https://github.com/inertiajs/inertia/pull/2929
- [v3.x] fix(types): module augmentation example by @peaklabs-dev in https://github.com/inertiajs/inertia/pull/2945
- [3.x] Convert Vue adapter components to Composition API by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2947
- [3.x] fix: always fire flash event regardless of partial reload equality by @Anthony14FR in https://github.com/inertiajs/inertia/pull/2941
- [3.x] Include
SharedPagePropsincreateInertiaAppand event types by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2956 - [3.x] Add
withAppcallback tocreateInertiaAppby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2949 - [3.x] fix(type): add Record<string, string> to UrlMethodPair type by @stafast in https://github.com/inertiajs/inertia/pull/2952
- [3.x] Improve optimistic update rollback with multiple pending requests by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2958
- [3.x] Prevent useHttp from parsing empty 204 responses by @entity in https://github.com/inertiajs/inertia/pull/2967
- [3.x] Include
SharedPagePropsin optimistic update callback types by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2968 - [3.x] Test SSR across multiple Node.js versions in CI by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2969
- [3.x] Migrate from
lodash-estoes-toolkitby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2973 - [3.x] Add Vite 8 support, drop Vite 6 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2974
- [3.x] Fix Infinite Scroll SSR hydration by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2975
- [3.x] Simplify layout props by passing them directly as component prop by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2972
- [3.x] Improve form state stability by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2976
- [3.x] Allow overriding
useHttpresponse type per method call by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2979 - Revert "[3.x] Allow overriding
useHttpresponse type per method call" by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2980 - [3.x] Fix React form not re-rendering memoized children on
setDataby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2986 - [3.x] Update Boost skills by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2987
- [3.x] Add generic type inference for
- [3.x] Cleanup of
server.jsby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2991 - [3.x] Clean up leftover
snapshotRefinuseFormStateby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2992 - [3.x] Additional Vite tests by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2994
- [3.x] Svelte linting fixes by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2995
- [3.x] Rename
networkErrorevent detail key toerrorby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2996 - [3.x] Fix
PagesOptiontype and makesetup/withAppmutually exclusive by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2997 - [3.x] Guard against
voidreturn fromuseHttpoptimistic callback by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3001 - [3.x] Fix Svelte Form ignoring global
withAllErrorsconfig by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2998 - [3.x] Add
HttpErrorbase class by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2999 - [3.x] Rename
handleErrorsSSR option toformatErrorsby @pascalbaljet in https://github.com/inertiajs/inertia/pull/3000 - [3.x] Remove deprecated router.cancel() method by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3002
- [3.x] Bump Precognition package by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3006
- [3.x] Refactor Layout Props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3005
New Contributors
- @puRe1337 made their first contribution in https://github.com/inertiajs/inertia/pull/2677
- @DavidCCoimbra made their first contribution in https://github.com/inertiajs/inertia/pull/2874
- @Anthony14FR made their first contribution in https://github.com/inertiajs/inertia/pull/2940
- @stafast made their first contribution in https://github.com/inertiajs/inertia/pull/2952
- @entity made their first contribution in https://github.com/inertiajs/inertia/pull/2967
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.16...v3.0.0
[v2.3.16](https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16) - 2026-02-24
What's Changed
- Bump @sveltejs/kit from 2.50.2 to 2.52.2 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2904
- Add Boost Guidelines & Skills by @pushpak1300 in https://github.com/inertiajs/inertia/pull/2896
New Contributors
- @pushpak1300 made their first contribution in https://github.com/inertiajs/inertia/pull/2896
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16
[v2.3.15](https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15) - 2026-02-13
What's Changed
- Bump axios from 1.13.2 to 1.13.5 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2888
- [2.x] Fix flash data being cleared by
history.replaceStateby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2889 - [2.x] Handle
bfcacherestoration for encrypted history by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2890 - [2.x] Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2891
- [2.x] Fix InfiniteScroll loading all pages in reverse mode with flex/grid layouts by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2893
- [2.x] Improve flaky tests and test app quality by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2895
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15
[v2.3.14](https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14) - 2026-02-11
What's Changed
- [2.x] Shut down entire cluster on SSR shutdown by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2876
- [2.x] Fix
useFormtype inference when passing data as callback by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2878 - Add global configuration support for withAllErrors in form components by @skryukov in https://github.com/inertiajs/inertia/pull/2865
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14
[v2.3.13](https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13) - 2026-01-30
What's Changed
- Fix
useFormtype inference in generic wrapper components by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2851 - Support wildcard paths in
validate()method by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2854
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13
[v2.3.12](https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12) - 2026-01-27
What's Changed
- Bump lodash from 4.17.21 to 4.17.23 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2835
- Bump lodash-es from 4.17.22 to 4.17.23 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2836
- Fix cancellation of concurrent partial reloads with query parameters by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2843
- Support for the
formTargetattribute in the<Form>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2844 - Clear stale form errors on resubmit by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2845
- Prevent
<Deferred>from rendering children with undefined props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2846
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12
[v2.3.11](https://github.com/inertiajs/inertia/compare/v2.3.10...v2.3.11) - 2026-01-20
What's Changed
- Bump and cleanup dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2822
- Add test for Precognition validation with transform key changes by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2827
- TS and console error on conflicting
useForm()keys by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2823 - Allow
useFormwithout arguments by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2830 - Pass
truetoinertattribute in React 19 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2831
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.10...v2.3.11
[v2.3.10](https://github.com/inertiajs/inertia/compare/v2.3.9...v2.3.10) - 2026-01-15
What's Changed
- Add
asyncandsyncoptions tocancelAllmethod by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2814 - Fix smooth scrolling in Firefox and add Firefox to CI by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2815
- Improve flaky `` test in WebKit CI by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2818
- Pass
oncePropsas second argument in client-side visit props callback by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2816 - Prevent converting a string response to an object by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2821
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.9...v2.3.10
[v2.3.9](https://github.com/inertiajs/inertia/compare/v2.3.8...v2.3.9) - 2026-01-14
What's Changed
- Fix React Precognition Error Sync (issue #2806) by @joetifa2003 in https://github.com/inertiajs/inertia/pull/2808
- Add tests for deferred scroll props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2811
- Fix deferred props not loading after back button navigation by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2812
- Add test for concurrent reloads by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2813
- Cancel in-flight deferred prop requests on navigation by @alexspeller in https://github.com/inertiajs/inertia/pull/2656
- fix: preserve query parameters in test server responses by @alexspeller in https://github.com/inertiajs/inertia/pull/2665
- [2.x] Add Form Context Support by @laserhybiz in https://github.com/inertiajs/inertia/pull/2671
New Contributors
- @joetifa2003 made their first contribution in https://github.com/inertiajs/inertia/pull/2808
- @alexspeller made their first contribution in https://github.com/inertiajs/inertia/pull/2656
- @laserhybiz made their first contribution in https://github.com/inertiajs/inertia/pull/2671
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.8...v2.3.9
[v2.3.8](https://github.com/inertiajs/inertia/compare/v2.3.7...v2.3.8) - 2026-01-09
What's Changed
- fix: update has more state when resetting before updating page by @AydinHassan in https://github.com/inertiajs/inertia/pull/2787
- Ensure Flash Data listener is registered before event is fired by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2799
- Improve indices detection in
mergeDataIntoQueryString()by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2798 - Fix
<WhenVisible>re-registering observer when params change by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2804
New Contributors
- @AydinHassan made their first contribution in https://github.com/inertiajs/inertia/pull/2787
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.7...v2.3.8
[v2.3.7](https://github.com/inertiajs/inertia/compare/v2.3.6...v2.3.7) - 2026-01-07
What's Changed
- Add
dontRemember()method to form helper by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2792 - Only call
replaceState()when page data has actually changed by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2793 - Fix
@typescript-eslint/unbound-methodwarning when destructuringuseForm()methods by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2794
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.6...v2.3.7
[v2.3.6](https://github.com/inertiajs/inertia/compare/v2.3.5...v2.3.6) - 2025-12-31
What's Changed
- Bump qs from 6.14.0 to 6.14.1 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2790
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.5...v2.3.6
[v2.3.5](https://github.com/inertiajs/inertia/compare/v2.3.4...v2.3.5) - 2025-12-31
What's Changed
- Refresh the Infinite Scroll triggers after partial reload by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2784
- Fix
hasAnyState()to actually check for browser history by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2785 - Handle WebKit history throttle errors by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2786
- Merge
dataandparamsprops in<WhenVisible>by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2789 - Handle
QuotaExceededErrorin WebKit by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2788
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.4...v2.3.5
[v2.3.4](https://github.com/inertiajs/inertia/compare/v2.3.3...v2.3.4) - 2025-12-19
What's Changed
- Only restore Infinite Scroll state from history on back/forward navigation by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2777
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.3...v2.3.4
[v2.3.3](https://github.com/inertiajs/inertia/compare/v2.3.2...v2.3.3) - 2025-12-17
What's Changed
- Add support for protocol-relative urls in url.ts by @machour in https://github.com/inertiajs/inertia/pull/2769
- Fix brackets notation qs parsing by @skryukov in https://github.com/inertiajs/inertia/pull/2722
- Support for Flash Data by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2757
New Contributors
- @machour made their first contribution in https://github.com/inertiajs/inertia/pull/2769
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.2...v2.3.3
[v2.3.2](https://github.com/inertiajs/inertia/compare/v2.3.1...v2.3.2) - 2025-12-16
What's Changed
- Expose InertiaPrecognitiveForm type by @lcdss in https://github.com/inertiajs/inertia/pull/2756
- Test for loading deferred props on
router.reload()withoutonly/exceptby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2761 - Expose
fetchingin default<WhenVisible>slot by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2766 - Include submitter element value in Form component submission by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2770
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.1...v2.3.2
[v2.3.1](https://github.com/inertiajs/inertia/compare/v2.3.0...v2.3.1) - 2025-12-12
What's Changed
- Test for Form + Vue Options API by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2750
- Fix for validating items in dynamic arrays by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2753
- Escape forward slashes when using useScriptElementForInitialPage by @kirk-loretz-fsn in https://github.com/inertiajs/inertia/pull/2751
- Sync Playground configs by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2754
- Fix race condition when restoring scroll regions by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2755
New Contributors
- @kirk-loretz-fsn made their first contribution in https://github.com/inertiajs/inertia/pull/2751
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.0...v2.3.1
[v2.3.0](https://github.com/inertiajs/inertia/compare/v2.2.21...v2.3.0) - 2025-12-11
What's Changed
- Support for Precognition in
useForm()by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2684 - Support for Precognition in
<Form>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2700 - Improve Precognition examples in Playgrounds by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2746
- Improve flaky tests by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2747
- bugfix(whenVisible-vue): Fix loaded state when data already exists by @ClaraLeigh in https://github.com/inertiajs/inertia/pull/2748
New Contributors
- @ClaraLeigh made their first contribution in https://github.com/inertiajs/inertia/pull/2748
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.21...v2.3.0
[v2.2.21](https://github.com/inertiajs/inertia/compare/v2.2.20...v2.2.21) - 2025-12-10
What's Changed
- Add
viewTransitiontoFormComponentOptionstype by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2741 - Preserve untouched Once Props on Partial Reload + Once Props in Playground by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2743
- Only preserve loaded Deferred + Once props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2745
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.20...v2.2.21
[v2.2.20](https://github.com/inertiajs/inertia/compare/v2.2.19...v2.2.20) - 2025-12-09
What's Changed
- Bump express from 5.1.0 to 5.2.0 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2727
- Add tests for SSR server by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2730
- Preserve errors when loading deferred props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2729
- Optimize page data size and parsing (37% size reduction!) by @bram-pkg in https://github.com/inertiajs/inertia/pull/2687
- Support for
once()props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2732 - Fix for sequential Client Side Visits by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2737
- Refactor duplicated initial page code by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2738
New Contributors
- @bram-pkg made their first contribution in https://github.com/inertiajs/inertia/pull/2687
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.19...v2.2.20
[v2.2.19](https://github.com/inertiajs/inertia/compare/v2.2.18...v2.2.19) - 2025-11-27
What's Changed
- Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2710
- TypeScript fix accessing error keys of optional nested object by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2718
- Use FormValue in Form component by @skryukov in https://github.com/inertiajs/inertia/pull/2709
- Fix anchor hash scrolling on initial page visit in React by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2719
- Ensure page is rendered before scrolling to top by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2721
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.18...v2.2.19
[v2.2.18](https://github.com/inertiajs/inertia/compare/v2.2.17...v2.2.18) - 2025-11-17
What's Changed
- Ensure
objectsAreEqual()checks all keys in both objects by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2705
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.17...v2.2.18
[v2.2.17](https://github.com/inertiajs/inertia/compare/v2.2.16...v2.2.17) - 2025-11-14
What's Changed
- Reset
<WhenVisible>loading state after a page reload by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2699 - Add test for reloading deferred props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2698
- Force
indicesarray format when submitting data usingFormDataby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2701
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.16...v2.2.17
[v2.2.16](https://github.com/inertiajs/inertia/compare/v2.2.15...v2.2.16) - 2025-11-13
What's Changed
- Added test for
defaultValuein Form component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2685 - Prevent navigation on right-click on
<Link>withprefetch="click"by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2676 - Export page component type for React adapter by @skryukov in https://github.com/inertiajs/inertia/pull/2691
- Switch
useContexttouseinusePage()hook by @HichemTab-tech in https://github.com/inertiajs/inertia/pull/2680 - Improve serialization in
formDataToObject()when mixing numeric and non-numeric object keys by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2692 - Fix
InfiniteScrollscroll preservation by @skryukov in https://github.com/inertiajs/inertia/pull/2689 - Export Inertia
Appcomponent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2695 - Ignore
preserveScrollandpreserveStatewhen finding cached response by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2694 - Upgrade Express server for test apps to v5 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2693
- Add WebKit browser testing to CI with Safari compatibility fixes by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2696
- Bump symfony/http-foundation from 7.3.4 to 7.3.7 in /playgrounds/vue3 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2697
- Fix array keys misalignment in form data and query by @skryukov in https://github.com/inertiajs/inertia/pull/2690
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.15...v2.2.16
[v2.2.15](https://github.com/inertiajs/inertia/compare/v2.2.14...v2.2.15) - 2025-10-30
What's Changed
- TS Fix for circularly references in form data by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2673
- Improve TS for config defaults by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2674
- [v2.x] feat: allow adding type to
router.restoreby @peaklabs-dev in https://github.com/inertiajs/inertia/pull/2545 - Configurable prefetch hover delay by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2675
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.14...v2.2.15
[v2.2.14](https://github.com/inertiajs/inertia/compare/v2.2.13...v2.2.14) - 2025-10-28
What's Changed
- TS cleanup for
<Link>component + View Transition prop in Svelte by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2667 - Improve support for
anyas form data value by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2668
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.13...v2.2.14
[v2.2.13](https://github.com/inertiajs/inertia/compare/v2.2.12...v2.2.13) - 2025-10-28
What's Changed
- Support for View Transitions by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2658
- Opt-in to using
data-inertiaattribute in<Head>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2663 - Opt-in to using
<dialog>for error modals by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2664 - feat: give access to underlying data as object and as form data object by @MeiKatz in https://github.com/inertiajs/inertia/pull/2605
New Contributors
- @MeiKatz made their first contribution in https://github.com/inertiajs/inertia/pull/2605
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.12...v2.2.13
[v2.2.12](https://github.com/inertiajs/inertia/compare/v2.2.11...v2.2.12) - 2025-10-27
What's Changed
- Clone page props before writing it to the browser's history by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2662
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.11...v2.2.12
[v2.2.11](https://github.com/inertiajs/inertia/compare/v2.2.10...v2.2.11) - 2025-10-24
What's Changed
- Configure global defaults and update during runtime by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2655
- Stabilize prop references when visiting the same page by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2657
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.10...v2.2.11
[v2.2.10](https://github.com/inertiajs/inertia/compare/v2.2.9...v2.2.10) - 2025-10-23
What's Changed
- Restore uppercase
Componentobject key in React'sApp.tsby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2654
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.9...v2.2.10
[v2.2.9](https://github.com/inertiajs/inertia/compare/v2.2.8...v2.2.9) - 2025-10-21
What's Changed
- Use local
@inertiajs/corein Playgrounds + dependencies bump by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2633 - Introduce types for Head Manager by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2634
- Fix resolving
preserveScrollandpreserveStatein Client Side Visits by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2635 - Support for type-hinting shared Page Props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2636
- Add
globals.d.tsfile to Playgrounds by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2637 - Remove wrong
shouldIntercept()call inkeydownevent handler in<Link>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2638 - Introduce
CancelTokenandCancelTokenCallbacktypes to replace Axios imports by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2639 - Internal TypeScript improvements by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2640
- Tests and TS improvements for the
<Head>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2641 - Make
dataprop of `` required by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2642 - TS fixes in Vue adapter for
useRememberandremembermixin by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2643 - Bump vite from 5.4.20 to 5.4.21 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2647
- TypeScript improvements to
createInertiaApp()and unifying it across adapters by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2648 - ESLint check for test-apps by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2560
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.8...v2.2.9
[v2.2.8](https://github.com/inertiajs/inertia/compare/v2.2.7...v2.2.8) - 2025-10-09
What's Changed
- Prevent false positives in
getScrollableParent()by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2626 - Restore scroll regions after navigation by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2627
- Prevent replacing history state when scroll regions are unchanged to fix popstate behavior in WebKit by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2629
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.7...v2.2.8
[v2.2.7](https://github.com/inertiajs/inertia/compare/v2.2.6...v2.2.7) - 2025-10-07
What's Changed
- Preserve relative URL when `` updates query string by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2623
- Use
SlotsTypeto type-hint Vue slots by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2620 - Fix race condition in
history.tsby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2624
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.6...v2.2.7
[v2.2.6](https://github.com/inertiajs/inertia/compare/v2.2.5...v2.2.6) - 2025-10-03
What's Changed
- SSR fixes for `` component. by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2616
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.5...v2.2.6
[v2.2.5](https://github.com/inertiajs/inertia/compare/v2.2.4...v2.2.5) - 2025-10-02
What's Changed
- Improve `` cleanup after navigating away by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2610
- Fix for
<Form>component when using React SSR by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2612 - Fix conflicting Client Side Visits by queuing the URL synchronization by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2613
- Improvements to `` in Svelte adapter by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2614
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.4...v2.2.5
[v2.2.4](https://github.com/inertiajs/inertia/compare/v2.2.3...v2.2.4) - 2025-09-30
What's Changed
- Compile TS while developing + improve CLI output by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2600
- Improve testing of scroll restoration by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2602
- Fix for reloading an unrelated prop affecting infinite scroll by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2603
- Add
preserve-urlprop to<Link>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2541
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.3...v2.2.4
[v2.2.3](https://github.com/inertiajs/inertia/compare/v2.2.2...v2.2.3) - 2025-09-29
What's Changed
- Preserve
ScrollPropon Partial Reloads by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2597
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.2...v2.2.3
[v2.2.2](https://github.com/inertiajs/inertia/compare/v2.2.1...v2.2.2) - 2025-09-28
What's Changed
- Reset
ScrollPropwhen requested by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2595
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.1...v2.2.2
[v2.2.1](https://github.com/inertiajs/inertia/compare/v2.2.0...v2.2.1) - 2025-09-28
What's Changed
- Don't restore remembered state after a refresh by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2591
- Remember Infinite Scroll state by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2592
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.0...v2.2.1
[v2.2.0](https://github.com/inertiajs/inertia/compare/v2.1.11...v2.2.0) - 2025-09-26
What's Changed
- Support for merging nested prop paths by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2561
- Client-side visit helpers to update props by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2589
- Introduction of the `` component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2580
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.11...v2.2.0
[v2.1.11](https://github.com/inertiajs/inertia/compare/v2.1.10...v2.1.11) - 2025-09-24
What's Changed
- Fix flaky tests in CI by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2582
- Bump Playwright by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2585
- Progress indicator API by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2581
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.10...v2.1.11
[v2.1.10](https://github.com/inertiajs/inertia/compare/v2.1.9...v2.1.10) - 2025-09-22
What's Changed
- Fix PNPM publishing by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2578
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.9...v2.1.10
[v2.1.9](https://github.com/inertiajs/inertia/compare/v2.1.8...v2.1.9) - 2025-09-22
What's Changed
- Fix PNPM build by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2577
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.8...v2.1.9
[v2.1.8](https://github.com/inertiajs/inertia/compare/v2.1.7...v2.1.8) - 2025-09-22
What's Changed
- Publish packages in CI by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2575
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.7...v2.1.8
[v2.1.7](https://github.com/inertiajs/inertia/compare/v2.1.6...v2.1.7) - 2025-09-18
What's Changed
- Bump axios from 1.11.0 to 1.12.0 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2568
- Bump dependencies by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2571
- TypeScript upgrade by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2573
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.6...v2.1.7
[v2.1.6](https://github.com/inertiajs/inertia/compare/v2.1.5...v2.1.6) - 2025-09-12
What's Changed
- Invalidate prefetch cache when page is received from a network request by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2567
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.5...v2.1.6
[v2.1.5](https://github.com/inertiajs/inertia/compare/v2.1.4...v2.1.5) - 2025-09-05
What's Changed
- Fix race condition when combining Deferred Props with an instant Partial Reload on mount by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2562
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.4...v2.1.5
[v2.1.4](https://github.com/inertiajs/inertia/compare/v2.1.3...v2.1.4) - 2025-09-03
What's Changed
- Replace html-escape with built-in function on Svelte package by @kresnasatya in https://github.com/inertiajs/inertia/pull/2535
- Update dirty state after DOM changes (React only) by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2558
- Prevent errors caused by null href value by @fritz-c in https://github.com/inertiajs/inertia/pull/2550
- Remove data from the dependency array of setDefaults by @jasonlbeggs in https://github.com/inertiajs/inertia/pull/2554
New Contributors
- @fritz-c made their first contribution in https://github.com/inertiajs/inertia/pull/2550
- @jasonlbeggs made their first contribution in https://github.com/inertiajs/inertia/pull/2554
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.3...v2.1.4
[v2.1.3](https://github.com/inertiajs/inertia/compare/v2.1.2...v2.1.3) - 2025-08-27
What's Changed
- Code formatting with Prettier by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2515
- Add EditorConfig and fix some whitespace issues by @jrmajor in https://github.com/inertiajs/inertia/pull/2516
- Fix for nullable object types in
useFormby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2528 - Fix for Form Component in Svelte when resetting use input/button by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2525
- Improve Link component
asprop by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2524 - [v2.x] fix: type error by changing page props type to
anyby @peaklabs-dev in https://github.com/inertiajs/inertia/pull/2520 - Revert to back to Lodash to retain ES2020 compatibility by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2527
- Verify ES2020 compatibility in CI by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2530
- [Vue] Fixing action attribute on Form Component when using Wayfinder by @nicolagianelli in https://github.com/inertiajs/inertia/pull/2532
- Make package.json structure in Svelte package Consistent as Vue and React by @kresnasatya in https://github.com/inertiajs/inertia/pull/2529
- Remove Svelte 5-next version constraint by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2533
- improve typescript configuration by @sudo-barun in https://github.com/inertiajs/inertia/pull/2470
- Format JSON files with Prettier by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2534
- Fix warning about
inertattribute in React < 19 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2536 - Fix keyboard activation when using
prefetch: 'click'by @pedroborges in https://github.com/inertiajs/inertia/pull/2538 - Fix
useFormto respect manualsetDefaults()calls inonSuccessand unify timing across adapters by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2539 - Run Playwright in parallel in CI by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2540
- Fix Coding Standards workflow by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2547
- bumpup axios to fix CVE-2025-7783 by @vallerydelexy in https://github.com/inertiajs/inertia/pull/2546
- Bump
@sveltejs/kitversion by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2548
New Contributors
- @peaklabs-dev made their first contribution in https://github.com/inertiajs/inertia/pull/2520
- @nicolagianelli made their first contribution in https://github.com/inertiajs/inertia/pull/2532
- @kresnasatya made their first contribution in https://github.com/inertiajs/inertia/pull/2529
- @vallerydelexy made their first contribution in https://github.com/inertiajs/inertia/pull/2546
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.2...v2.1.3
[v2.1.2](https://github.com/inertiajs/inertia/compare/v2.1.1...v2.1.2) - 2025-08-15
What's Changed
- Fix for manipulating form after redirect in
onSubmitCompleteby @joetannenbaum in https://github.com/inertiajs/inertia/pull/2510 - Support for passing Wayfinder objects to router methods by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2497
- Tag-based cache invalidation for prefetch requests by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2484
- Add
resetOnError,resetOnSuccess,setDefaultsOnSuccessto Form component by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2514
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.1...v2.1.2
[v2.1.1](https://github.com/inertiajs/inertia/compare/v2.1.0...v2.1.1) - 2025-08-14
What's Changed
- Improve
Linkcomponent types and support for prefetch events by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2464 - allow passing partial errors object to
setError()by @sudo-barun in https://github.com/inertiajs/inertia/pull/2461 - Add missing generic type support to PendingVisit and VisitHelperOptions by @HichemTab-tech in https://github.com/inertiajs/inertia/pull/2454
- Revamp useForm's generic types across adaptors by @Spice-King in https://github.com/inertiajs/inertia/pull/2335
- TypeScript improvements for
Linkcomponent and Client Side Visits by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2472 - Further TS improvements for
useFormby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2475 - Improve consistency in
useFormacross adapters by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2482 - Improve TypeScript support for Client Side Visit
propscallback by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2483 - TS improvements to Svelte's
<Form>anduseForm()implementations by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2489 - Typescript Improvements by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2468
- Test apps in TypeScript by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2469
- Fix empty action in
<Form>component when the current URL has more than one segment by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2501 - Support uppercase method in
<Form>component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2502 - Add
FormcomponentdisableWhileProcessingprop by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2504 - Reset form fields by name in Form components by @skryukov in https://github.com/inertiajs/inertia/pull/2499
- Add
onSubmitCompleteprop toFormcomponent by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2503 - Remove failed prefetch requests from in-flight array by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2500
- Add
defaults()method to Form component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2507 - Release script by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2508
- Only
reset()anddefaults()inonSubmitCompleteby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2509
New Contributors
- @sudo-barun made their first contribution in https://github.com/inertiajs/inertia/pull/2461
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.0...v2.1.1
[v2.1.0](https://github.com/inertiajs/inertia/compare/v2.0.17...v2.1.0) - 2025-08-13
What's Changed
- Support for passing custom component to
asprop ofLinkcomponent. by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2443 - Use
nodemonto trigger new files and deleted files in test apps by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2442 - Use ReactNode type for children props by @chack1172 in https://github.com/inertiajs/inertia/pull/2385
- Allow function as children component in react Deferred and WhenVisible by @chack1172 in https://github.com/inertiajs/inertia/pull/2386
- Improve test that waits for scroll position restoration by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2473
- Introduction of the
Formcomponent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2474 - Improve
childrenprop of<Form>Component by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2487 - Add Form component ref support by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2496
- Make Svelte's
not crash in an SSR environment by @dkulchenko in https://github.com/inertiajs/inertia/pull/2396 - Fix core: Queue processing when an item fails by @pintend in https://github.com/inertiajs/inertia/pull/2467
- Migrate playgrounds to Tailwind 4 by @jrmajor in https://github.com/inertiajs/inertia/pull/2369
New Contributors
- @dkulchenko made their first contribution in https://github.com/inertiajs/inertia/pull/2396
- @pintend made their first contribution in https://github.com/inertiajs/inertia/pull/2467
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.17...v2.1.0
[v2.0.17](https://github.com/inertiajs/inertia/compare/v2.0.16...v2.0.17) - 2025-07-18
What's Changed
- Bump multer from 2.0.1 to 2.0.2 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2447
- Bump vite from 5.4.12 to 5.4.19 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2450
- Bump esbuild from 0.21.5 to 0.25.0 by @dependabot[bot] in https://github.com/inertiajs/inertia/pull/2451
- Explicit string coercion in
Headcomponent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2453
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.16...v2.0.17
[v2.0.16](https://github.com/inertiajs/inertia/compare/v2.0.15...v2.0.16) - 2025-07-18
What's Changed
- Make errorBag parameter optional by @joelstein in https://github.com/inertiajs/inertia/pull/2445
New Contributors
- @joelstein made their first contribution in https://github.com/inertiajs/inertia/pull/2445
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.15...v2.0.16
[v2.0.15](https://github.com/inertiajs/inertia/compare/v2.0.14...v2.0.15) - 2025-07-17
What's Changed
- Improve GitHub issue templates by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2418
- Escape the attribute values that are passed into the
Headcomponent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2403 - Introduce single method to reset form state and clear errors by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2414
- Use
CacheForOptiontype in ReactLinkcomponent by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2426 - Improve query string merging in
mergeDataIntoQueryString()by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2417 - Improve scrolling when using anchor hash by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2428
- Cancel sync request on popstate event by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2429
- Support for path traversal by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2413
- Add event callbacks to
ClientSideVisitOptionsby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2405 - Pass parameters to
onFinishandonSuccesscallbacks on Client Side Visits by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2433 - Prevent JS builds and test apps from being minified by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2424
- Migrate to pnpm by @jrmajor in https://github.com/inertiajs/inertia/pull/2276
- Fix single-use prefetching by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2440
- Change defaults values order in onSuccess callback of useForm by @yilanboy in https://github.com/inertiajs/inertia/pull/2437
- Improve reactivity of Link components by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2441
New Contributors
- @yilanboy made their first contribution in https://github.com/inertiajs/inertia/pull/2437
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.14...v2.0.15
[v2.0.14](https://github.com/inertiajs/inertia/compare/v2.0.13...v2.0.14) - 2025-06-26
What's Changed
- fix: fixed type error in
useForm SetDataActiontype by @fxnm in https://github.com/inertiajs/inertia/pull/2395 - Call
provider.updateoutside useEffect block to support SSR by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2397 - Improve state restore logic in
useRememberby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2401
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.13...v2.0.14
[v2.0.13](https://github.com/inertiajs/inertia/compare/v2.0.12...v2.0.13) - 2025-06-20
What's Changed
- Allow deepMerge on custom properties by @mpociot in https://github.com/inertiajs/inertia/pull/2344
- fix: React StrictMode breaking Inertia Head by @jordanhavard in https://github.com/inertiajs/inertia/pull/2328
- Bump multer from 1.4.4 to 2.0.1 in /tests/app by @dependabot in https://github.com/inertiajs/inertia/pull/2373
- Initialize router before components in React by @chack1172 in https://github.com/inertiajs/inertia/pull/2379
- Prevent duplicate render of the initial page in React by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2377
- Update default state when
setDefault()is called right aftersetData()is called by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2364 - [2.x] Restore
router.resolveComponent()method by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2039 - Move
currentIsInitialPagevariable outside ofAppby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2381 - Don't overwrite Vite class in Svelte playgrounds by @jrmajor in https://github.com/inertiajs/inertia/pull/2368
- Dependency update + Prevent Playwright 1.53.0 due to Svelte bug by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2382
- Update to Vite 6 by @SuperDJ in https://github.com/inertiajs/inertia/pull/2315
- Fix React scroll restoration on popState by @sebastiandedeyne in https://github.com/inertiajs/inertia/pull/2357
- feat(useForm): export granular setData types and introduce SetDataAction
by @hasib-devs in https://github.com/inertiajs/inertia/pull/2356 - Refactor
mergeStrategiestomatchOnby @pascalbaljet in https://github.com/inertiajs/inertia/pull/2384 - Remove
setSwapComponentmethod and cleanup after PR #2379 by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2383
New Contributors
- @jordanhavard made their first contribution in https://github.com/inertiajs/inertia/pull/2328
- @chack1172 made their first contribution in https://github.com/inertiajs/inertia/pull/2379
- @jrmajor made their first contribution in https://github.com/inertiajs/inertia/pull/2368
- @SuperDJ made their first contribution in https://github.com/inertiajs/inertia/pull/2315
- @hasib-devs made their first contribution in https://github.com/inertiajs/inertia/pull/2356
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.12...v2.0.13
[v2.0.12](https://github.com/inertiajs/inertia/compare/v2.0.11...v2.0.12) - 2025-06-10
What's Changed
- Send
Purpose: prefetchheader on prefetching by @pascalbaljet in https://github.com/inertiajs/inertia/pull/2367
New Contributors
- @pascalbaljet made their first contribution in https://github.com/inertiajs/inertia/pull/2367
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.11...v2.0.12
[v2.0.11](https://github.com/inertiajs/inertia/compare/v2.0.10...v2.0.11) - 2025-05-16
What's Changed
- Fix progress bar not showing on subsequent page clicks by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2349
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.10...v2.0.11
[v2.0.10](https://github.com/inertiajs/inertia/compare/v2.0.9...v2.0.10) - 2025-05-15
What's Changed
- Don't show progress bar on prefetch hover by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2347
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.9...v2.0.10
[v2.0.9](https://github.com/inertiajs/inertia/compare/v2.0.8...v2.0.9) - 2025-05-09
What's Changed
- Bump @sveltejs/kit from 2.11.1 to 2.20.6 by @dependabot in https://github.com/inertiajs/inertia/pull/2312
- Bump vite from 5.4.17 to 5.4.18 by @dependabot in https://github.com/inertiajs/inertia/pull/2307
- Fix for deferred props + prefetch links by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2321
- Progress: Make hide and reveal CSP-compatible by @flexponsive in https://github.com/inertiajs/inertia/pull/2316
- Corrected URL search parameter merge logic to match behavior prior to v2.0.8 by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2341
- Corrects url search parameter merge logic to match behavior prior to v2.0.8 by @CTOJoe in https://github.com/inertiajs/inertia/pull/2320
- Bump vite from 5.4.18 to 5.4.19 by @dependabot in https://github.com/inertiajs/inertia/pull/2334
- On back button, fetch from server if version hash is not current by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2342
- Allow custom URL protocols by @mpociot in https://github.com/inertiajs/inertia/pull/2329
New Contributors
- @flexponsive made their first contribution in https://github.com/inertiajs/inertia/pull/2316
- @CTOJoe made their first contribution in https://github.com/inertiajs/inertia/pull/2320
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.8...v2.0.9
[v2.0.8](https://github.com/inertiajs/inertia/compare/v2.0.7...v2.0.8) - 2025-04-10
What's Changed
- Add deepMerge Support for Merging Nested Arrays and Objects in Props by @HichemTab-tech in https://github.com/inertiajs/inertia/pull/2069
- fix: build error because of invalid type definitions by @fxnm in https://github.com/inertiajs/inertia/pull/2301
- fix(vue/useForm/defaults): untrack before assign by @Dsaquel in https://github.com/inertiajs/inertia/pull/2112
- Improve type checking of request data by @7nohe in https://github.com/inertiajs/inertia/pull/2304
- Remove empty payload from GET requests by @edgars-vasiljevs in https://github.com/inertiajs/inertia/pull/2305
New Contributors
- @HichemTab-tech made their first contribution in https://github.com/inertiajs/inertia/pull/2069
- @fxnm made their first contribution in https://github.com/inertiajs/inertia/pull/2301
- @Dsaquel made their first contribution in https://github.com/inertiajs/inertia/pull/2112
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.7...v2.0.8
[v2.0.7](https://github.com/inertiajs/inertia/compare/v2.0.6...v2.0.7) - 2025-04-08
What's Changed
- Added missing pages to React and Svelte5 playrounds by @Verox001 in https://github.com/inertiajs/inertia/pull/2217
- chore: replace lodash to decrease bundle size by @lcdss in https://github.com/inertiajs/inertia/pull/2210
- do not pass url when storing scroll state to history by @miDeb in https://github.com/inertiajs/inertia/pull/2280
- fix: react
Deferredcomponent error on partial visits by @KaioFelps in https://github.com/inertiajs/inertia/pull/2223 - Bump vite from 5.4.16 to 5.4.17 by @dependabot in https://github.com/inertiajs/inertia/pull/2295
- [2.x] SSR clustering by @RobertBoes in https://github.com/inertiajs/inertia/pull/2206
- Allow Object type for href prop by @nckrtl in https://github.com/inertiajs/inertia/pull/2292
- Update GitHub Actions to Ubuntu 24.04 by @joetannenbaum in https://github.com/inertiajs/inertia/pull/2299
- [2.x]: Support for nested paths in forms by @joaopalopes24 in https://github.com/inertiajs/inertia/pull/2181
New Contributors
- @Verox001 made their first contribution in https://github.com/inertiajs/inertia/pull/2217
- @lcdss made their first contribution in https://github.com/inertiajs/inertia/pull/2210
- @miDeb made their first contribution in https://github.com/inertiajs/inertia/pull/2280
- @KaioFelps made their first contribution in https://github.com/inertiajs/inertia/pull/2223
- @nckrtl made their first contribution in https://github.com/inertiajs/inertia/pull/2292
- @joaopalopes24 made their first contribution in https://github.com/inertiajs/inertia/pull/2181
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.6...v2.0.7
[v2.0.6](https://github.com/inertiajs/inertia/compare/v2.0.5...v2.0.6)
- Deferred: More descriptive Deferred data prop error (#2284)
- Bump vite from 5.4.12 to 5.4.16 (#2288)
- Fix location return history decryption throwing error (#2282)
- Make isDirty reactive to defaults (#2236)
- Fix playground WhenVisible always (#2203)
- Wayfinder support (#2290)
[v2.0.5](https://github.com/inertiajs/inertia/compare/v2.0.4...v2.0.5)
- Fix history state errors by nicholaspufal (#2265)
- Bump axios from 1.7.9 to 1.8.2 (#2269)
- Bump esbuild from 0.16.17 to 0.25.0 #2231 (#2231)
- Bump vite from 5.4.11 to 5.4.12 (#2201)
[v2.0.4](https://github.com/inertiajs/inertia/compare/v2.0.3...v2.0.4)
- Fix anchor links on initial visits (#2258)
[v2.0.3](https://github.com/inertiajs/inertia/compare/v2.0.2...v2.0.3)
- Fix: Reload on mount (#2200)
[v2.0.2](https://github.com/inertiajs/inertia/compare/v2.0.1...v2.0.2)
- Fix SSR with scroll restoration (#2190)
- Fix for scroll + back bug (#2191)
- Backport 1.x fixes from v1.3.0 release (#2193)
[v2.0.1](https://github.com/inertiajs/inertia/compare/v2.0.0...v2.0.1)
- Fix playground dependencies (#2070)
- Removed Vitest tests + dependencies (#2175)
- Augment
vueinstead of@vue/runtime-core(#2099) - Fix prefetch missing
cacheFordefault value (#2136) - Fix
useFormre-renders by memoizing functions in React #2146 - WhenVisible useEffect function is not recreated when params change. (#2153)
- Ensure callback execution (#2163)
- More resilient logic for stripping the origin from page URLs (#2164)
- Add helper scripts for running tests (#2173)
- Export
InertiaFormPropsin React (#2161) - Use default empty object in
useFormVue and Svelte (#2052) - Remove
dataoption fromuseFormoptions type (#2060) - Take over scroll restoration from browser (#2051)
[v2.0.0](https://github.com/inertiajs/inertia/compare/v1.2.0...v2.0.0)
Added
- Add polling
- Add link prefetching
- Add deferred props
- Add lazy loading of data when scrolling
- Add history encryption API
- Add React 19 support (#2131)
- Add client side visits (#2130)
Changed
- Removal of NProgress dependency (#2045)
- Change TypeScript module resolution in the Svelte adapter (#2035)
- Refactor
createInertiaAppin Svelte adapter (#2036)
Fixed
- Fix: make Link href prop reactive (#2089)
[v1.3.0](https://github.com/inertiajs/inertia/compare/v1.2.0...v1.3.0)
Added
- Add React 19 support (#2121)
- Add Svelte 5 support (#1970)
- Add TypeScript support to Svelte adapter (#1866, 69292e, #2003, #2005)
Changed
- Skip intercepting non-left button clicks on links (#1908, #1910)
- Changed
preserveScrollto betrueon initial page visit (#1360) - Return early when using
router.on()during SSR (#1715) - Use updater function in
setDatainuseFormhook in React adapter (#1859)
Fixed
- Fix history navigation issue on Chrome iOS (#1984, #1992)
- Fix
setNavigationTypefor Safari 10 (#1957) - Export
InertiaFormPropsin all adapters (#1596, #1734) - Fix
isDirtyafterform.defaults()call in Vue 3 (#1985) - Fix scroll reset on page navigation (#1980)
- Fix scroll position restoration for
[scroll-region]elements (#1782, #1980) - Fix
useFormre-renders by memoizing functions in React adapter (#1607) - Fix doubling hash when using
<React.StrictMode>(#1728) - Fix type augmentation in Vue 3 adapter (#1958)
- Fix form helper
transformreturn type in React adapter (#1896) - Fix props reactivity in Svelte adapter (#1969)
- Fix
<Render />component to respectpreserveStateoption in Svelte adapter (#1943) - Fix 'received an unexpected slot "default"' warning in Svelte adapter (#1941)
- Fix command + click behavior on links in React adapter (#2132)
- Fix import in Svelte adapter (#2002)
[v1.2.0](https://github.com/inertiajs/inertia/compare/v1.1.0...v1.2.0)
- Fix
preserveScrollandpreserveStatetypes (#1882) - Revert "merge props from partial reloads" (#1895)
[v1.1.0](https://github.com/inertiajs/inertia/compare/v1.0.16...v1.1.0)
- Add new
exceptvisit option to exclude props from partial reloads (#1876) - Deep merge props from partial reloads (#1877)
[v1.0.16](https://github.com/inertiajs/inertia/compare/v1.0.15...v1.0.16)
- Fix Svelte 4 slot rendering issues (#1763)
- Fix accessibility warning in Svelte
Linkcomponent (#1858) - Use
Omitinstead ofExcludein router types (#1857)
[v1.0.15](https://github.com/inertiajs/inertia/compare/v1.0.14...v1.0.15)
- Bump axios from
v1.4.0tov1.6.0(#1723)
[v1.0.14](https://github.com/inertiajs/inertia/compare/v1.0.13...v1.0.14)
- Revert "Clear errors on form reset (#1568)" (#1716)
[v1.0.13](https://github.com/inertiajs/inertia/compare/v1.0.12...v1.0.13)
[v1.0.12](https://github.com/inertiajs/inertia/compare/v1.0.11...v1.0.12)
[v1.0.11](https://github.com/inertiajs/inertia/compare/v1.0.10...v1.0.11)
- Fix form helper types for
setDefaults()method (React) anddefaults()method (Vue) (#1504) - Fix interface issue with
useForm()in React and Vue adapters (#1649)
[v1.0.10](https://github.com/inertiajs/inertia/compare/v1.0.9...v1.0.10)
- Fix Svelte's
useFormhelper (#1610)
[v1.0.9](https://github.com/inertiajs/inertia/compare/v1.0.8...v1.0.9)
[v1.0.8](https://github.com/inertiajs/inertia/compare/v1.0.7...v1.0.8)
Fixed
- Fix
<Head>vNode handling in Vue 3 adapter (#1570) - Fix watching remembered data in Vue 3 adapter (#1571)
[v1.0.7](https://github.com/inertiajs/inertia/compare/v1.0.6...v1.0.7)
Fixed
- Fix
<Head>fragment detection in Vue 3 adapter (#1509)
[v1.0.6](https://github.com/inertiajs/inertia/compare/v1.0.5...v1.0.6)
Fixed
- Fix
usePage()null object error in Vue 3 adapter (#1530)
[v1.0.5](https://github.com/inertiajs/inertia/compare/v1.0.4...v1.0.5)
Fixed
- Fix
usePage()reactivity in Vue 2 adapter (#1527)
Changed
- Simplify the Vue 2 form helper (#1529)
[v1.0.4](https://github.com/inertiajs/inertia/compare/v1.0.3...v1.0.4)
Added
- Added
displayNametoLinkcomponent in React adapter (#1512)
Fixed
- Fix
usePage()reactivity in Vue 3 adapter (#1469)
[v1.0.3](https://github.com/inertiajs/inertia/compare/v1.0.2...v1.0.3)
Added
- Added initialization callback to form helper in Vue adapters (#1516)
[v1.0.2](https://github.com/inertiajs/inertia/compare/v1.0.1...v1.0.2)
Fixed
- Added explicit children to
InertiaHeadProps(#1448) - Exported
InertiaLinkPropstype (#1450) - Improved React
usePagegeneric type (#1451)
[v1.0.1](https://github.com/inertiajs/inertia/compare/v1.0.0...v1.0.1)
Fixed
- Fixed Vue type overrides for
$pageand$inertia(#1393) - Restored React
usePagegeneric type (#1396) - Prevented need to use
Methodenum with the Link component (#1392) - Restored Vue 3
usePagegeneric type (#1394) - Fixed export of server types (#1397)
- Updated form types to support nested data (#1401)
- Allowed stronger type support with Vue
useForm(#1413) - Fixed Vue 2
setupprop types (#1418) - Fixed issue when passing multiple children to React
Headcomponent (#1433)
[v1.0.0](https://github.com/inertiajs/inertia/compare/7ce91ec...v1.0.0) - 2023-01-14
Added
- Added SSR support to Svelte library (#1349)
- Added first-class TypeScript support to React adapter
- Added first-class TypeScript support to Vue 2 adapter
- Added first-class TypeScript support to Vue 3 adapter
- Added new
useForm()hook to Vue 2 adapter (ff59196)
Changed
- Renamed
@inertiajs/inertialibrary to@inertiajs/core(#1282) - Renamed
@inertiajs/inertia-reactlibrary to@inertiajs/react(#1282) - Renamed
@inertiajs/inertia-sveltelibrary to@inertiajs/svelte(#1282) - Renamed
@inertiajs/inertia-vuelibrary to@inertiajs/vue2(#1282) - Renamed
@inertiajs/inertia-vue3library to@inertiajs/vue3(#1282) - Merged progress library to core and deprecated
@inertiajs/progresslibrary (#1282, 0b5f773) - Merged server library to core and deprecated
@inertiajs/serverlibrary (#1282) - Renamed
Inertianamed export torouter(#1282, e556703) - Removed deprecated named exports (#1282, e556703)
- Removed deprecated
appargument fromcreateInertiaApp()in Vue adapters (#1282, 65f8a5f) - Updated axios to 1.x (#1377)
- Simplified
usePage()hook in Vue 3 adapter (#1373) - Improved Svelte
use:inertiaand<Link />component (#1344) - Removed global
visitOptions()hook (#1282, 30908c2) - Switched bundler from Microbundle to ESbuild (f711b46, 8093713, 342312d, c9e12b3)
Fixed
- Fixed
<title>tag not always being included when atitlecallback is defined increateInertiaApp()(#1055) - Fixed types to include
undefinedas a validFormDataConvertableoption (#1165) - Fixed issue where remembered state wasn't clear on a full page reload (769f643)
File: CONTRIBUTING.md
Contributing
Thank you for your interest in contributing to Inertia.js! Your contributions help make this project better for everyone.
Inertia.js is maintained as a monorepo using pnpm workspaces. Below you'll find an overview of the repository and how to get your development environment running.
Note: You'll need pnpm version 10 or higher. If you're unsure which version you have, run
pnpm -v.
Repository Overview
inertia/
├── packages/ Core libraries and framework adapters
│ ├── core/ Framework-agnostic core library
│ ├── react/ React adapter
│ │ └── test-app/ React test application
│ ├── svelte/ Svelte adapter
│ │ └── test-app/ Svelte test application
│ └── vue3/ Vue 3 adapter
│ └── test-app/ Vue 3 test application
├── playgrounds/ Full Laravel applications for manual testing
│ ├── react/ Laravel + React
│ ├── svelte5/ Laravel + Svelte 5
│ └── vue3/ Laravel + Vue 3
└── tests/ End-to-end tests and test server
├── app/ Shared Node.js backend
└── *.spec.ts Playwright test suiteKey Components
- Core Library: The framework-agnostic engine powering all adapters (
packages/core). - Adapters: Framework-specific integrations for React, Svelte, and Vue.
- Test Applications: Minimal frontend apps used for automated testing (
packages/*/test-app/). - Playwright Tests: Framework-agnostic end-to-end tests that verify behavior across adapters (
tests/*.spec.ts). - Playgrounds: Full Laravel applications for manual testing (
playgrounds/). These are optional and may eventually be removed.
Getting Started
Clone the repository and install the dependencies:
git clone https://github.com/inertiajs/inertia.git inertia
cd inertia
pnpm installThen, start the development environment:
pnpm devThis builds the core library and all adapters, and starts a file watcher that will automatically rebuild each package when changes are made.
If you prefer, you can also start individual watchers from each package directory. For example:
cd packages/core && pnpm dev
cd packages/react && pnpm devNote: The core package (
packages/core) must always be running, as all adapters depend on it.
Running Tests
Inertia.js uses Playwright to run a shared end-to-end test suite against each adapter. This is how we verify that Inertia behaves the same across React, Svelte, and Vue.
Run the test suite for a specific adapter:
pnpm test:react
pnpm test:svelte
pnpm test:vueThese commands automatically set a PACKAGE environment variable that tells the Node.js test server which adapter to serve. For example, when running pnpm test:react, the test server loads the React test application.
If you want to run Playwright directly, you can pass the environment variable yourself:
PACKAGE=react playwright testYou may filter tests by name:
pnpm test:react -g "partial reload"Run tests in headed mode (to see the browser):
pnpm test:vue --headedOr in debug mode:
pnpm test:vue --debugHow the Test Setup Works
All adapters use the same Node.js backend and Playwright test suite. The only difference is which adapter's test app is served.
tests/app/server.js Shared Node.js backend
├── serves: react test app (when PACKAGE=react)
├── serves: svelte test app (when PACKAGE=svelte)
└── serves: vue test app (when PACKAGE=vue3)
tests/*.spec.ts Shared Playwright test suiteWhen running a test command, the correct adapter is selected automatically:
| Adapter | PACKAGE value |
Test server port | App URL |
|---|---|---|---|
| React | react |
13716 | http://localhost:13716/ |
| Svelte | svelte |
13717 | http://localhost:13717/ |
| Vue 3 | vue3 |
13715 | http://localhost:13715/ |
Automatic Test Server Boot
You do not need to start the test server manually. When you run a test, Playwright automatically builds the frontend for the selected adapter and boots the Node.js test server before running the tests. This is configured in the Playwright config (playwright.config.ts) using the webServer option. If a server is already running (for example, during local development), Playwright will reuse it.
Running Test Applications
The test applications are the primary development environments for Inertia.js. These minimal apps cover all supported features and are used for both manual development and automated end-to-end testing.
Run all test apps at once:
pnpm dev:test-appOr start an individual one:
pnpm dev:test-app:react
pnpm dev:test-app:svelte
pnpm dev:test-app:vueEach test app runs two servers:
- A Node.js backend that automatically restarts when changed
- A Vite development server for the frontend
If you are developing a new feature or fixing a bug, you can use these test apps to develop and test your changes.
Adding Tests
If you are fixing a bug, adding a feature, or improving existing functionality, please verify that your changes work across all adapters, not just one.
1. Add Frontend Pages
Create the same frontend page in each test application:
packages/react/test-app/Pages/YourFeature.jsx
packages/svelte/test-app/Pages/YourFeature.svelte
packages/vue3/test-app/Pages/YourFeature.vueEach page should provide the same behavior and functionality.
2. Add Backend Routes (If Needed)
If your change requires a backend route, add it to the shared Node.js test server:
// tests/app/server.js
app.get('/your-feature', (req, res) =>
inertia.render(req, res, {
component: 'YourFeature',
props: { foo: 'bar' },
}),
)3. Write a Playwright Test
Add a new Playwright test to verify your change. Playwright allows us to test features across all adapters without duplicating test logic.
// tests/your-feature.spec.ts
import { test, expect } from '@playwright/test'
test('your feature works', async ({ page }) => {
await page.goto('/your-feature')
// Your assertions here
})4. Run the Tests in All Adapters
Be sure to run your test for each adapter:
pnpm test:react -g "your feature"
pnpm test:svelte -g "your feature"
pnpm test:vue -g "your feature"Your work is not considered complete until it works consistently across all frameworks.
Using the Playgrounds (Optional)
The repository also includes several full Laravel applications that integrate Inertia.js. These are optional and mostly useful for manually exploring how Inertia works inside a real Laravel app.
The playgrounds are provided as-is and are not part of the automated test setup. They may be removed in the future.
Getting Started
To start a playground, simply run:
pnpm playground:reactThe playground script will automatically handle initial setup if needed:
- Installing PHP dependencies via Composer
- Installing Node.js dependencies via pnpm
- Creating the
.envfile from.env.example - Generating the application key
- Setting up the SQLite database
- Running migrations with seed data
Visit the application at http://127.0.0.1:8000.
Each playground has its own pnpm script:
pnpm playground:react
pnpm playground:svelte
pnpm playground:vuePublishing (Maintainers Only)
Releasing is handled by the included release script. You'll need both the git CLI and the GitHub CLI (gh) installed. To create a new release:
./release.shThe script will:
- Ensure you're on the master branch with a clean working tree
- Prompt you to select the type of version bump (patch, minor, or major)
- Update all package versions automatically
- Update the lockfile
- Create a git commit and tag
- Push changes and tags to GitHub
- Create a GitHub release with auto-generated notes
- Trigger the CI publishing workflow
Publishing is handled securely using GitHub + npm trusted publishing.
File: LICENSE.md
MIT License
Copyright (c) Jonathan Reinink jonathan@reinink.ca
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
File: package.json
{
"name": "inertia",
"private": true,
"type": "module",
"scripts": {
"build:all": "pnpm -r --filter './packages/' build",
"dev": "pnpx concurrently -c "#b794f4,#61dafb,#d43008,#32a06f,#bd34fe,#ffa800" "pnpm dev:core" "pnpm dev:react" "pnpm dev:svelte" "pnpm dev:vue" "pnpm dev:vite" --names=core,react,svelte,vue,vite",
"dev:core": "cd packages/core && pnpm run dev",
"dev:vite": "cd packages/vite && pnpm run dev",
"dev:vue": "cd packages/vue3 && pnpm run dev",
"dev:react": "cd packages/react && pnpm run dev",
"dev:svelte": "cd packages/svelte && pnpm run dev",
"dev:test-app": "pnpx concurrently -c "#61dafb,#d43008,#32a06f" "pnpm dev:test-app:react" "pnpm dev:test-app:svelte" "pnpm dev:test-app:vue" --names=react,svelte,vue",
"dev:test-app:react": "pnpx concurrently -c "#c4b5fd,#ffa800" "cd tests/app && PACKAGE=react pnpm serve:watch" "cd packages/react/test-app && pnpm run dev" --names=server,vite",
"dev:test-app:svelte": "pnpx concurrently -c "#c4b5fd,#ffa800" "cd tests/app && PACKAGE=svelte pnpm serve:watch" "cd packages/svelte/test-app && pnpm run dev" --names=server,vite",
"dev:test-app:vue": "pnpx concurrently -c "#c4b5fd,#ffa800" "cd tests/app && PACKAGE=vue3 pnpm serve:watch" "cd packages/vue3/test-app && pnpm run dev" --names=server,vite",
"es2022-check": "pnpm -r --filter './packages/' es2022-check",
"lint:test-app": "pnpm -r --filter './packages//test-app' lint",
"lint:test-app:react": "cd packages/react/test-app && pnpm run lint",
"lint:test-app:svelte": "cd packages/svelte/test-app && pnpm run lint",
"lint:test-app:vue": "cd packages/vue3/test-app && pnpm run lint",
"type-check:test-app": "pnpm -r --filter './packages//test-app' type-check",
"type-check:test-app:react": "cd packages/react/test-app && pnpm run type-check",
"type-check:test-app:svelte": "cd packages/svelte/test-app && pnpm run type-check",
"type-check:test-app:vue": "cd packages/vue3/test-app && pnpm run type-check",
"test:react": "PACKAGE=react node playwright.js",
"test:svelte": "PACKAGE=svelte node playwright.js",
"test:vue": "PACKAGE=vue3 node playwright.js",
"test:ssr:react": "PACKAGE=react SSR=true npx playwright test",
"test:ssr:svelte": "PACKAGE=svelte SSR=true npx playwright test",
"test:ssr:vue": "PACKAGE=vue3 SSR=true npx playwright test",
"test:vite": "cd packages/vite && pnpm test",
"playground:react": "cd playgrounds/react && ./init.sh && composer run dev",
"playground:svelte": "cd playgrounds/svelte5 && ./init.sh && composer run dev",
"playground:vue": "cd playgrounds/vue3 && ./init.sh && composer run dev",
"format": "oxfmt"
},
"devDependencies": {
"@playwright/test": "1.58.2",
"oxfmt": "^0.72.0",
"oxlint": "^1.66.0"
},
"optionalDependencies": {
"@rollup/rollup-linux-x64-gnu": "^4.59.0"
},
"engines": {
"pnpm": ">=11.1.1"
}
}