### CHANGELOG # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). For changes prior to v1.0.0, see the [legacy releases](https://legacy.inertiajs.com/releases). ## [Unreleased](https://github.com/inertiajs/inertia/compare/v3.6.1...3.x) - Nothing yet ## [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](https://github.com/buhrmi) in https://github.com/inertiajs/inertia/pull/3188 * [3.x] Support raw request bodies in the built-in HTTP client by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3189 * [3.x] Fix PHP 8.5 PDO deprecation notice in Playgrounds by [@pascalbaljet](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/nckrtl) in https://github.com/inertiajs/inertia/pull/3183 * [3.x] Defer forced reloads to a cancelable `location` event by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3180 * [3.x] Add poll marker to visit for polling requests by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3184 * [3.x] Send `X-Requested-With` header from the built-in HTTP client by [@pascalbaljet](https://github.com/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](https://github.com/atymic) in https://github.com/inertiajs/inertia/pull/3163 * [3.x] Support anchor target attribute by [@devhammed](https://github.com/devhammed) in https://github.com/inertiajs/inertia/pull/3159 * [3.x] Prevent unhandled rejection when a view transition is superseded by [@mortenhauberg](https://github.com/mortenhauberg) in https://github.com/inertiajs/inertia/pull/3165 * [3.x] feat: Add page to titleCallback by [@mrleblanc101](https://github.com/mrleblanc101) in https://github.com/inertiajs/inertia/pull/3160 * [3.x] Fix Svelte build failure from optional TypeScript parameters by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3173 * Revert "[3.x] Fix Svelte build failure from optional TypeScript parameters" by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3174 * [3.x] Bump dependencies by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3169 * [3.x] Add server provided head elements by [@benbjurstrom](https://github.com/benbjurstrom) in https://github.com/inertiajs/inertia/pull/3161 * [3.x] fix(core): add async option to FormComponentOptions by [@sawirricardo](https://github.com/sawirricardo) in https://github.com/inertiajs/inertia/pull/3157 * [3.x] fix(core): ensure robust SSR error classification by [@hamdyelbatal122](https://github.com/hamdyelbatal122) in https://github.com/inertiajs/inertia/pull/3151 * [3.x] Do not throw handled useHttp validation errors by [@cyphercodes](https://github.com/cyphercodes) in https://github.com/inertiajs/inertia/pull/3142 ### New Contributors * [@atymic](https://github.com/atymic) made their first contribution in https://github.com/inertiajs/inertia/pull/3163 * [@mrleblanc101](https://github.com/mrleblanc101) made their first contribution in https://github.com/inertiajs/inertia/pull/3160 * [@benbjurstrom](https://github.com/benbjurstrom) made their first contribution in https://github.com/inertiajs/inertia/pull/3161 * [@sawirricardo](https://github.com/sawirricardo) made their first contribution in https://github.com/inertiajs/inertia/pull/3157 * [@hamdyelbatal122](https://github.com/hamdyelbatal122) made their first contribution in https://github.com/inertiajs/inertia/pull/3151 * [@cyphercodes](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/3145 * [3.x] Add `cached` flag to the `inertia:navigate` event by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3146 * [3.x] Add `inertia:clientVisit` event and visit correlation id by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3147 * [3.x] Refactor visit ID to be a string by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3148 * [3.x] Add page and visit id to error event detail by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3152 * [3.x] Add internal request and response interceptors by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3153 * [3.x] Bump Playground dependencies by [@pascalbaljet](https://github.com/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](https://github.com/yoeriboven) in https://github.com/inertiajs/inertia/pull/3133 * [3.x] Instant visit: only preserve scroll behavior on instant visit by [@yoeriboven](https://github.com/yoeriboven) in https://github.com/inertiajs/inertia/pull/3134 * [3.x] Bump dependencies by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3137 * Dependabot cooldown + auto-merge by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3138 ### New Contributors * [@yoeriboven](https://github.com/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](https://github.com/mattwigham) in https://github.com/inertiajs/inertia/pull/3122 * [3.x] Migrate playgrounds from Prism to Laravel AI SDK by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3128 * [3.x] Support network URLs for loading CSS assets in SSR dev server by [@simonellensohn](https://github.com/simonellensohn) in https://github.com/inertiajs/inertia/pull/3121 * [3.x] Pass props to withApp callback by [@CL0Pinette](https://github.com/CL0Pinette) in https://github.com/inertiajs/inertia/pull/3125 * [3.x] Run pnpm audit on push and releases, not on PRs by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3129 * [3.x] Fix Svelte infinite scroll unmount race by [@hschne](https://github.com/hschne) in https://github.com/inertiajs/inertia/pull/3127 ### New Contributors * [@mattwigham](https://github.com/mattwigham) made their first contribution in https://github.com/inertiajs/inertia/pull/3122 * [@simonellensohn](https://github.com/simonellensohn) made their first contribution in https://github.com/inertiajs/inertia/pull/3121 * [@CL0Pinette](https://github.com/CL0Pinette) made their first contribution in https://github.com/inertiajs/inertia/pull/3125 * [@hschne](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3099 * [3.x] Pin GitHub Actions to commit SHAs and harden CI workflows by [@pascalbaljet](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/3100 * [3.x] Add `mode` option to `router.poll` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3093 * [3.x] Support dynamic data in `usePoll` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3098 * [3.x] Bump dependencies by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3107 * [3.x] Add Inertia.once for events that fire once by [@sebastiandedeyne](https://github.com/sebastiandedeyne) in https://github.com/inertiajs/inertia/pull/3105 * [3.x] Fix `httpException` event response data type by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3109 * [3.x] Skip DOM updates when `` request is cancelled by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3110 * [3.x] Upgrade to TypeScript 6 by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3108 * [3.x] Improve `router.poll` throttle semantics and stop+start handling by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3114 * [3.x] Migrate from Prettier and ESLint to Oxfmt and Oxlint by [@pascalbaljet](https://github.com/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](https://github.com/Vitalcheffe) in https://github.com/inertiajs/inertia/pull/3019 * [3.x] Fix Vue `` SSR crash on sibling slot transitions by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3092 ### New Contributors * [@Vitalcheffe](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3067 * [3.x] Bump CI action versions by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3071 * [3.x] Additional tests for layouts in React by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3073 * [3.0] Fix React `useForm` submitting stale data after synchronous `setData` by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/3057 * fix(core): support nonce for progress styles by [@artemxknpv](https://github.com/artemxknpv) in https://github.com/inertiajs/inertia/pull/3069 * [3.x] Sandbox error dialog iframe to prevent `window.parent` access by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3078 * [3.x] Add `host` option to SSR server by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3077 * [3.x] Block `__proto__` in query string parsing by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3079 * [3.x] Bump Playground dependencies by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3081 * [3.x] Escape title content in SSR head output by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3080 * [3.x] Add `rescue` slot to `` for failed deferred props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3076 * [3.x] Improve CSP support for progress bar and error dialog by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3086 * [3.x] Add deferred prop rescue example to playgrounds by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3089 ### New Contributors * [@artemxknpv](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3046 * [3.x] Update TSConfig and bump CI actions by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3047 * [3.x] Infer form data keys in `resetOnSuccess` and `resetOnError` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3048 * [3.x] Fix layout props callback misclassifying function-valued props as named layouts by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3049 * [3.x] Fix flash event not firing when response contains errors by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/3038 * [3.x] Fire flash event after full reload by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/3041 * [3.x] Improve Playwright CI cache by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3051 * [3.x] Add `onHttpException`, `onNetworkError`, and response to `onSuccess` in `useHttp` by [@pascalbaljet](https://github.com/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 `percentage` in upload progress events by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3030 * [3.x] Add test for optional scroll props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3032 * [3.x] Warm up lazy-loaded page dependencies in Vite plugin by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3035 * [3.x] Harden CI workflows and fix dependency vulnerabilities by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3013 * [3.x] Support anonymous arrow functions as React layout components by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3016 * [3.x] Fix `WhenVisible` crash during SSR by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3021 * [3.x] Remove plain when Head component sets a title by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3022 * [3.x] Fix `defineOptions({ layout: [...] })` type error with nested layouts by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3023 * [3.x] Fix flash data re-firing on partial reloads by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3024 * [3.x] Warm up SSR module graph on dev server start by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2713 * [3.x] Remove qs dependency by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2791 * [3.x] Svelte 5 Adapter based on #2586 by [@puRe1337](https://github.com/puRe1337) in https://github.com/inertiajs/inertia/pull/2677 * [3.x] Drop support for React < 19 by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2712 * [3.x] Pass props as second argument to resolve() in createInertiaApp() by [@HichemTab-tech](https://github.com/HichemTab-tech) in https://github.com/inertiajs/inertia/pull/2485 * [3.x] Only reset useForm processing and progress with onFinish by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2838 * [3.x] Bump Node.js to v24 + Bump GitHub CI Actions by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2847 * [3.x] Remove unused `pendingVisitOptions` parameter by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2853 * [3.x] Remove `hideProgress()` and `revealProgress()` exports by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2852 * [3.x] Svelte 5 improvements by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2863 * [3.x] Built-in XHR HTTP client + make Axios an optional peer dependency by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2833 * [3.x] Add `useHttp` hook for standalone HTTP requests by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2840 * [3.x] Generics in `<Form>` Component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2849 * [3.x] Add layout props helpers by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2859 * [3.x] Upgrade Svelte playground to Svelte 5 syntax by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2868 * [3.x] Migrate `future` options to be new defaults by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2867 * [3.x] Add `reloading` slot prop to `<Deferred>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2860 * [3.x] Rename `useDataElementForInitialPage` to `useDataAttributeForInitialPage` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2871 * [3.x] Add `preserveErrors` option to preserve validation errors during partial requests by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2819 * [3.x] SSR support in Vite development mode + simplified setup by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2864 * [3.x] Rename `invalid` and `exception` events and add visit callbacks by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2869 * [3.x] Optimistic updates for `router`, `useForm`, and `useHttp` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2866 * [3.x] Streamline adapter `index.ts` exports by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2872 * [3.x] Drop CJS builds in favor of ESM-only output by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2873 * [3.x] Use Precognition 2.x and bump all deps by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2877 * [3.x] Support for `withAllErrors` in `useHttp` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2880 * [3.x] Add `optimistic` prop to `<Form>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2881 * [3.x] Add test for named layout persistence across navigations by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2882 * [3.x] Allow calling `createInertiaApp()` without arguments by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2883 * [3.x] Add `layout` option to `createInertiaApp()` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2884 * [3.x] Update Playgrounds by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2885 * [3.x] Add a singleton for the usePage function by [@DavidCCoimbra](https://github.com/DavidCCoimbra) in https://github.com/inertiajs/inertia/pull/2874 * [3.x] Remove `legacy.useDataAttributeForInitialPage` config option by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2887 * [3.x] Concurrent optimistic updates by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2898 * [3.x] Preserve URL fragment across redirects with server-side `preserveFragment` option by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2897 * [3.x] Hash fragment redirect support by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2899 * [3.x] Support nested dot-notation prop types by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2901 * [3.x] Add strictMode option to React's createInertiaApp by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2909 * [3.x] Fix FOUC during SSR development by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2911 * [3.x] Make `clearHistory` and `encryptHistory` optional in page object by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2908 * [3.x] Instant visits by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2907 * Include resources directory in published packages by [@pushpak1300](https://github.com/pushpak1300) in https://github.com/inertiajs/inertia/pull/2914 * [3.x] Consolidate SSR error handling by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2915 * [3.x] Use the popover API for the progress bar by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2917 * [3.x] Minor clean up core package by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2918 * [3.x] Fix axios adapter being required by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2926 * [3.x] Fire `onHttpException` for server-rendered Inertia error pages by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2927 * [3.x] Fix duplicate base path in Vite SSR CSS link URLs by [@isaackaara](https://github.com/isaackaara) in https://github.com/inertiajs/inertia/pull/2936 * [3.x] Populate global page store during Svelte 5 SSR by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2938 * [3.x] Stop collecting CSS sub-dependencies during SSR by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2937 * [v3.x] refactor(svelte)!: migrate useLayoutProps from stores to runes by [@peaklabs-dev](https://github.com/peaklabs-dev) in https://github.com/inertiajs/inertia/pull/2944 * [3.x] fix: remove request from stream on network failure by [@Anthony14FR](https://github.com/Anthony14FR) in https://github.com/inertiajs/inertia/pull/2940 * [3.x] Support more createInertiaApp() patterns in SSR transform by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2929 * [v3.x] fix(types): module augmentation example by [@peaklabs-dev](https://github.com/peaklabs-dev) in https://github.com/inertiajs/inertia/pull/2945 * [3.x] Convert Vue adapter components to Composition API by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2947 * [3.x] fix: always fire flash event regardless of partial reload equality by [@Anthony14FR](https://github.com/Anthony14FR) in https://github.com/inertiajs/inertia/pull/2941 * [3.x] Include `SharedPageProps` in `createInertiaApp` and event types by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2956 * [3.x] Add `withApp` callback to `createInertiaApp` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2949 * [3.x] fix(type): add Record<string, string> to UrlMethodPair type by [@stafast](https://github.com/stafast) in https://github.com/inertiajs/inertia/pull/2952 * [3.x] Improve optimistic update rollback with multiple pending requests by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2958 * [3.x] Prevent useHttp from parsing empty 204 responses by [@entity](https://github.com/entity) in https://github.com/inertiajs/inertia/pull/2967 * [3.x] Include `SharedPageProps` in optimistic update callback types by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2968 * [3.x] Test SSR across multiple Node.js versions in CI by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2969 * [3.x] Migrate from `lodash-es` to `es-toolkit` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2973 * [3.x] Add Vite 8 support, drop Vite 6 by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2974 * [3.x] Fix Infinite Scroll SSR hydration by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2975 * [3.x] Simplify layout props by passing them directly as component prop by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2972 * [3.x] Improve form state stability by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2976 * [3.x] Allow overriding `useHttp` response type per method call by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2979 * Revert "[3.x] Allow overriding `useHttp` response type per method call" by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2980 * [3.x] Fix React form not re-rendering memoized children on `setData` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2986 * [3.x] Update Boost skills by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2987 * [3.x] Add generic type inference for <Form> `optimistic` and `transform` callbacks by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2990 * [3.x] Cleanup of `server.js` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2991 * [3.x] Clean up leftover `snapshotRef` in `useFormState` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2992 * [3.x] Additional Vite tests by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2994 * [3.x] Svelte linting fixes by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2995 * [3.x] Rename `networkError` event detail key to `error` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2996 * [3.x] Fix `PagesOption` type and make `setup`/`withApp` mutually exclusive by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2997 * [3.x] Guard against `void` return from `useHttp` optimistic callback by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3001 * [3.x] Fix Svelte Form ignoring global `withAllErrors` config by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2998 * [3.x] Add `HttpError` base class by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2999 * [3.x] Rename `handleErrors` SSR option to `formatErrors` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3000 * [3.x] Remove deprecated router.cancel() method by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3002 * [3.x] Bump Precognition package by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3006 * [3.x] Refactor Layout Props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/3005 ### New Contributors * [@puRe1337](https://github.com/puRe1337) made their first contribution in https://github.com/inertiajs/inertia/pull/2677 * [@DavidCCoimbra](https://github.com/DavidCCoimbra) made their first contribution in https://github.com/inertiajs/inertia/pull/2874 * [@Anthony14FR](https://github.com/Anthony14FR) made their first contribution in https://github.com/inertiajs/inertia/pull/2940 * [@stafast](https://github.com/stafast) made their first contribution in https://github.com/inertiajs/inertia/pull/2952 * [@entity](https://github.com/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](https://github.com/sveltejs)/kit from 2.50.2 to 2.52.2 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2904 * Add Boost Guidelines & Skills by [@pushpak1300](https://github.com/pushpak1300) in https://github.com/inertiajs/inertia/pull/2896 ### New Contributors * [@pushpak1300](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2888 * [2.x] Fix flash data being cleared by `history.replaceState` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2889 * [2.x] Handle `bfcache` restoration for encrypted history by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2890 * [2.x] Bump dependencies by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2893 * [2.x] Improve flaky tests and test app quality by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2876 * [2.x] Fix `useForm` type inference when passing data as callback by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2878 * Add global configuration support for withAllErrors in form components by [@skryukov](https://github.com/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 `useForm` type inference in generic wrapper components by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2851 * Support wildcard paths in `validate()` method by [@pascalbaljet](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2835 * Bump lodash-es from 4.17.22 to 4.17.23 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2836 * Fix cancellation of concurrent partial reloads with query parameters by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2843 * Support for the `formTarget` attribute in the `<Form>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2844 * Clear stale form errors on resubmit by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2845 * Prevent `<Deferred>` from rendering children with undefined props by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2822 * Add test for Precognition validation with transform key changes by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2827 * TS and console error on conflicting `useForm()` keys by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2823 * Allow `useForm` without arguments by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2830 * Pass `true` to `inert` attribute in React 19 by [@pascalbaljet](https://github.com/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 `async` and `sync` options to `cancelAll` method by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2814 * Fix smooth scrolling in Firefox and add Firefox to CI by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2815 * Improve flaky `<InfiniteScroll>` test in WebKit CI by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2818 * Pass `onceProps` as second argument in client-side visit props callback by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2816 * Prevent converting a string response to an object by [@pascalbaljet](https://github.com/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](https://github.com/joetifa2003) in https://github.com/inertiajs/inertia/pull/2808 * Add tests for deferred scroll props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2811 * Fix deferred props not loading after back button navigation by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2812 * Add test for concurrent reloads by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2813 * Cancel in-flight deferred prop requests on navigation by [@alexspeller](https://github.com/alexspeller) in https://github.com/inertiajs/inertia/pull/2656 * fix: preserve query parameters in test server responses by [@alexspeller](https://github.com/alexspeller) in https://github.com/inertiajs/inertia/pull/2665 * [2.x] Add Form Context Support by [@laserhybiz](https://github.com/laserhybiz) in https://github.com/inertiajs/inertia/pull/2671 ### New Contributors * [@joetifa2003](https://github.com/joetifa2003) made their first contribution in https://github.com/inertiajs/inertia/pull/2808 * [@alexspeller](https://github.com/alexspeller) made their first contribution in https://github.com/inertiajs/inertia/pull/2656 * [@laserhybiz](https://github.com/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](https://github.com/AydinHassan) in https://github.com/inertiajs/inertia/pull/2787 * Ensure Flash Data listener is registered before event is fired by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2799 * Improve indices detection in `mergeDataIntoQueryString()` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2798 * Fix `<WhenVisible>` re-registering observer when params change by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2804 ### New Contributors * [@AydinHassan](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2792 * Only call `replaceState()` when page data has actually changed by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2793 * Fix `@typescript-eslint/unbound-method` warning when destructuring `useForm()` methods by [@pascalbaljet](https://github.com/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](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2784 * Fix `hasAnyState()` to actually check for browser history by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2785 * Handle WebKit history throttle errors by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2786 * Merge `data` and `params` props in `<WhenVisible>` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2789 * Handle `QuotaExceededError` in WebKit by [@pascalbaljet](https://github.com/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](https://github.com/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](https://github.com/machour) in https://github.com/inertiajs/inertia/pull/2769 * Fix brackets notation qs parsing by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2722 * Support for Flash Data by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2757 ### New Contributors * [@machour](https://github.com/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](https://github.com/lcdss) in https://github.com/inertiajs/inertia/pull/2756 * Test for loading deferred props on `router.reload()` without `only`/`except` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2761 * Expose `fetching` in default `<WhenVisible>` slot by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2766 * Include submitter element value in Form component submission by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2750 * Fix for validating items in dynamic arrays by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2753 * Escape forward slashes when using useScriptElementForInitialPage by [@kirk-loretz-fsn](https://github.com/kirk-loretz-fsn) in https://github.com/inertiajs/inertia/pull/2751 * Sync Playground configs by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2754 * Fix race condition when restoring scroll regions by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2755 ### New Contributors * [@kirk-loretz-fsn](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2684 * Support for Precognition in `<Form>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2700 * Improve Precognition examples in Playgrounds by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2746 * Improve flaky tests by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2747 * bugfix(whenVisible-vue): Fix loaded state when data already exists by [@ClaraLeigh](https://github.com/ClaraLeigh) in https://github.com/inertiajs/inertia/pull/2748 ### New Contributors * [@ClaraLeigh](https://github.com/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 `viewTransition` to `FormComponentOptions` type by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2741 * Preserve untouched Once Props on Partial Reload + Once Props in Playground by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2743 * Only preserve loaded Deferred + Once props by [@pascalbaljet](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2727 * Add tests for SSR server by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2730 * Preserve errors when loading deferred props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2729 * Optimize page data size and parsing (37% size reduction!) by [@bram-pkg](https://github.com/bram-pkg) in https://github.com/inertiajs/inertia/pull/2687 * Support for `once()` props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2732 * Fix for sequential Client Side Visits by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2737 * Refactor duplicated initial page code by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2738 ### New Contributors * [@bram-pkg](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2710 * TypeScript fix accessing error keys of optional nested object by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2718 * Use FormValue in Form component by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2709 * Fix anchor hash scrolling on initial page visit in React by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2719 * Ensure page is rendered before scrolling to top by [@pascalbaljet](https://github.com/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](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2699 * Add test for reloading deferred props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2698 * Force `indices` array format when submitting data using `FormData` by [@pascalbaljet](https://github.com/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 `defaultValue` in Form component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2685 * Prevent navigation on right-click on `<Link>` with `prefetch="click"` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2676 * Export page component type for React adapter by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2691 * Switch `useContext` to `use` in `usePage()` hook by [@HichemTab-tech](https://github.com/HichemTab-tech) in https://github.com/inertiajs/inertia/pull/2680 * Improve serialization in `formDataToObject()` when mixing numeric and non-numeric object keys by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2692 * Fix `InfiniteScroll` scroll preservation by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2689 * Export Inertia `App` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2695 * Ignore `preserveScroll` and `preserveState` when finding cached response by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2694 * Upgrade Express server for test apps to v5 by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2693 * Add WebKit browser testing to CI with Safari compatibility fixes by [@pascalbaljet](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2697 * Fix array keys misalignment in form data and query by [@skryukov](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2673 * Improve TS for config defaults by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2674 * [v2.x] feat: allow adding type to `router.restore` by [@peaklabs-dev](https://github.com/peaklabs-dev) in https://github.com/inertiajs/inertia/pull/2545 * Configurable prefetch hover delay by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2667 * Improve support for `any` as form data value by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2658 * Opt-in to using `data-inertia` attribute in `<Head>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2663 * Opt-in to using `<dialog>` for error modals by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2664 * feat: give access to underlying data as object and as form data object by [@MeiKatz](https://github.com/MeiKatz) in https://github.com/inertiajs/inertia/pull/2605 ### New Contributors * [@MeiKatz](https://github.com/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](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2655 * Stabilize prop references when visiting the same page by [@pascalbaljet](https://github.com/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 `Component` object key in React's `App.ts` by [@pascalbaljet](https://github.com/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/core` in Playgrounds + dependencies bump by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2633 * Introduce types for Head Manager by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2634 * Fix resolving `preserveScroll` and `preserveState` in Client Side Visits by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2635 * Support for type-hinting shared Page Props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2636 * Add `globals.d.ts` file to Playgrounds by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2637 * Remove wrong `shouldIntercept()` call in `keydown` event handler in `<Link>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2638 * Introduce `CancelToken` and `CancelTokenCallback` types to replace Axios imports by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2639 * Internal TypeScript improvements by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2640 * Tests and TS improvements for the `<Head>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2641 * Make `data` prop of `<InfiniteScroll>` required by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2642 * TS fixes in Vue adapter for `useRemember` and `remember` mixin by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2643 * Bump vite from 5.4.20 to 5.4.21 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2647 * TypeScript improvements to `createInertiaApp()` and unifying it across adapters by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2648 * ESLint check for test-apps by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2626 * Restore scroll regions after navigation by [@pascalbaljet](https://github.com/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](https://github.com/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 `<InfiniteScroll>` updates query string by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2623 * Use `SlotsType` to type-hint Vue slots by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2620 * Fix race condition in `history.ts` by [@pascalbaljet](https://github.com/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 `<InfiniteScroll>` component. by [@pascalbaljet](https://github.com/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 `<InfiniteScroll>` cleanup after navigating away by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2610 * Fix for `<Form>` component when using React SSR by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2612 * Fix conflicting Client Side Visits by queuing the URL synchronization by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2613 * Improvements to `<InfiniteScroll>` in Svelte adapter by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2600 * Improve testing of scroll restoration by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2602 * Fix for reloading an unrelated prop affecting infinite scroll by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2603 * Add `preserve-url` prop to `<Link>` component by [@pascalbaljet](https://github.com/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 `ScrollProp` on Partial Reloads by [@pascalbaljet](https://github.com/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 `ScrollProp` when requested by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2591 * Remember Infinite Scroll state by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2561 * Client-side visit helpers to update props by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2589 * Introduction of the `<InfiniteScroll>` component by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2582 * Bump Playwright by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2585 * Progress indicator API by [@pascalbaljet](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2568 * Bump dependencies by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2571 * TypeScript upgrade by [@pascalbaljet](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/kresnasatya) in https://github.com/inertiajs/inertia/pull/2535 * Update dirty state after DOM changes (React only) by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2558 * Prevent errors caused by null href value by [@fritz-c](https://github.com/fritz-c) in https://github.com/inertiajs/inertia/pull/2550 * Remove data from the dependency array of setDefaults by [@jasonlbeggs](https://github.com/jasonlbeggs) in https://github.com/inertiajs/inertia/pull/2554 ### New Contributors * [@fritz-c](https://github.com/fritz-c) made their first contribution in https://github.com/inertiajs/inertia/pull/2550 * [@jasonlbeggs](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2515 * Add EditorConfig and fix some whitespace issues by [@jrmajor](https://github.com/jrmajor) in https://github.com/inertiajs/inertia/pull/2516 * Fix for nullable object types in `useForm` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2528 * Fix for Form Component in Svelte when resetting use input/button by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2525 * Improve Link component `as` prop by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2524 * [v2.x] fix: type error by changing page props type to `any` by [@peaklabs-dev](https://github.com/peaklabs-dev) in https://github.com/inertiajs/inertia/pull/2520 * Revert to back to Lodash to retain ES2020 compatibility by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2527 * Verify ES2020 compatibility in CI by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2530 * [Vue] Fixing action attribute on Form Component when using Wayfinder by [@nicolagianelli](https://github.com/nicolagianelli) in https://github.com/inertiajs/inertia/pull/2532 * Make package.json structure in Svelte package Consistent as Vue and React by [@kresnasatya](https://github.com/kresnasatya) in https://github.com/inertiajs/inertia/pull/2529 * Remove Svelte 5-next version constraint by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2533 * improve typescript configuration by [@sudo-barun](https://github.com/sudo-barun) in https://github.com/inertiajs/inertia/pull/2470 * Format JSON files with Prettier by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2534 * Fix warning about `inert` attribute in React < 19 by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2536 * Fix keyboard activation when using `prefetch: 'click'` by [@pedroborges](https://github.com/pedroborges) in https://github.com/inertiajs/inertia/pull/2538 * Fix `useForm` to respect manual `setDefaults()` calls in `onSuccess` and unify timing across adapters by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2539 * Run Playwright in parallel in CI by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2540 * Fix Coding Standards workflow by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2547 * bumpup axios to fix CVE-2025-7783 by [@vallerydelexy](https://github.com/vallerydelexy) in https://github.com/inertiajs/inertia/pull/2546 * Bump `@sveltejs/kit` version by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2548 ### New Contributors * [@peaklabs-dev](https://github.com/peaklabs-dev) made their first contribution in https://github.com/inertiajs/inertia/pull/2520 * [@nicolagianelli](https://github.com/nicolagianelli) made their first contribution in https://github.com/inertiajs/inertia/pull/2532 * [@kresnasatya](https://github.com/kresnasatya) made their first contribution in https://github.com/inertiajs/inertia/pull/2529 * [@vallerydelexy](https://github.com/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 `onSubmitComplete` by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/inertiajs/inertia/pull/2510 * Support for passing Wayfinder objects to router methods by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2497 * Tag-based cache invalidation for prefetch requests by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2484 * Add `resetOnError`, `resetOnSuccess`, `setDefaultsOnSuccess` to Form component by [@joetannenbaum](https://github.com/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 `Link` component types and support for prefetch events by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2464 * allow passing partial errors object to `setError()` by [@sudo-barun](https://github.com/sudo-barun) in https://github.com/inertiajs/inertia/pull/2461 * Add missing generic type support to PendingVisit and VisitHelperOptions by [@HichemTab-tech](https://github.com/HichemTab-tech) in https://github.com/inertiajs/inertia/pull/2454 * Revamp useForm's generic types across adaptors by [@Spice-King](https://github.com/Spice-King) in https://github.com/inertiajs/inertia/pull/2335 * TypeScript improvements for `Link` component and Client Side Visits by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2472 * Further TS improvements for `useForm` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2475 * Improve consistency in `useForm` across adapters by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2482 * Improve TypeScript support for Client Side Visit `props` callback by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2483 * TS improvements to Svelte's `<Form>` and `useForm()` implementations by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2489 * Typescript Improvements by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2468 * Test apps in TypeScript by [@pascalbaljet](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2501 * Support uppercase method in `<Form>` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2502 * Add `Form` component `disableWhileProcessing` prop by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/inertiajs/inertia/pull/2504 * Reset form fields by name in Form components by [@skryukov](https://github.com/skryukov) in https://github.com/inertiajs/inertia/pull/2499 * Add `onSubmitComplete` prop to `Form` component by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/inertiajs/inertia/pull/2503 * Remove failed prefetch requests from in-flight array by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2500 * Add `defaults()` method to Form component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2507 * Release script by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/inertiajs/inertia/pull/2508 * Only `reset()` and `defaults()` in `onSubmitComplete` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2509 ### New Contributors * [@sudo-barun](https://github.com/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 `as` prop of `Link` component. by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2443 * Use `nodemon` to trigger new files and deleted files in test apps by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2442 * Use ReactNode type for children props by [@chack1172](https://github.com/chack1172) in https://github.com/inertiajs/inertia/pull/2385 * Allow function as children component in react Deferred and WhenVisible by [@chack1172](https://github.com/chack1172) in https://github.com/inertiajs/inertia/pull/2386 * Improve test that waits for scroll position restoration by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2473 * Introduction of the `Form` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2474 * Improve `children` prop of `<Form>` Component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2487 * Add Form component ref support by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2496 * Make Svelte's <Deferred> not crash in an SSR environment by [@dkulchenko](https://github.com/dkulchenko) in https://github.com/inertiajs/inertia/pull/2396 * Fix core: Queue processing when an item fails by [@pintend](https://github.com/pintend) in https://github.com/inertiajs/inertia/pull/2467 * Migrate playgrounds to Tailwind 4 by [@jrmajor](https://github.com/jrmajor) in https://github.com/inertiajs/inertia/pull/2369 ### New Contributors * [@dkulchenko](https://github.com/dkulchenko) made their first contribution in https://github.com/inertiajs/inertia/pull/2396 * [@pintend](https://github.com/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](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2447 * Bump vite from 5.4.12 to 5.4.19 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2450 * Bump esbuild from 0.21.5 to 0.25.0 by [@dependabot](https://github.com/dependabot)[bot] in https://github.com/inertiajs/inertia/pull/2451 * Explicit string coercion in `Head` component by [@pascalbaljet](https://github.com/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](https://github.com/joelstein) in https://github.com/inertiajs/inertia/pull/2445 ### New Contributors * [@joelstein](https://github.com/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](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2418 * Escape the attribute values that are passed into the `Head` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2403 * Introduce single method to reset form state and clear errors by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2414 * Use `CacheForOption` type in React `Link` component by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2426 * Improve query string merging in `mergeDataIntoQueryString()` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2417 * Improve scrolling when using anchor hash by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2428 * Cancel sync request on popstate event by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2429 * Support for path traversal by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2413 * Add event callbacks to `ClientSideVisitOptions` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2405 * Pass parameters to `onFinish` and `onSuccess` callbacks on Client Side Visits by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2433 * Prevent JS builds and test apps from being minified by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2424 * Migrate to pnpm by [@jrmajor](https://github.com/jrmajor) in https://github.com/inertiajs/inertia/pull/2276 * Fix single-use prefetching by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2440 * Change defaults values order in onSuccess callback of useForm by [@yilanboy](https://github.com/yilanboy) in https://github.com/inertiajs/inertia/pull/2437 * Improve reactivity of Link components by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2441 ### New Contributors * [@yilanboy](https://github.com/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 SetDataAction` type by [@fxnm](https://github.com/fxnm) in https://github.com/inertiajs/inertia/pull/2395 * Call `provider.update` outside useEffect block to support SSR by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2397 * Improve state restore logic in `useRemember` by [@pascalbaljet](https://github.com/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](https://github.com/mpociot) in https://github.com/inertiajs/inertia/pull/2344 * fix: React StrictMode breaking Inertia Head by [@jordanhavard](https://github.com/jordanhavard) in https://github.com/inertiajs/inertia/pull/2328 * Bump multer from 1.4.4 to 2.0.1 in /tests/app by [@dependabot](https://github.com/dependabot) in https://github.com/inertiajs/inertia/pull/2373 * Initialize router before components in React by [@chack1172](https://github.com/chack1172) in https://github.com/inertiajs/inertia/pull/2379 * Prevent duplicate render of the initial page in React by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2377 * Update default state when `setDefault()` is called right after `setData()` is called by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2364 * [2.x] Restore `router.resolveComponent()` method by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2039 * Move `currentIsInitialPage` variable outside of `App` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2381 * Don't overwrite Vite class in Svelte playgrounds by [@jrmajor](https://github.com/jrmajor) in https://github.com/inertiajs/inertia/pull/2368 * Dependency update + Prevent Playwright 1.53.0 due to Svelte bug by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2382 * Update to Vite 6 by [@SuperDJ](https://github.com/SuperDJ) in https://github.com/inertiajs/inertia/pull/2315 * Fix React scroll restoration on popState by [@sebastiandedeyne](https://github.com/sebastiandedeyne) in https://github.com/inertiajs/inertia/pull/2357 * feat(useForm): export granular setData types and introduce SetDataAction<TForm> by [@hasib-devs](https://github.com/hasib-devs) in https://github.com/inertiajs/inertia/pull/2356 * Refactor `mergeStrategies` to `matchOn` by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2384 * Remove `setSwapComponent` method and cleanup after PR #2379 by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2383 ### New Contributors * [@jordanhavard](https://github.com/jordanhavard) made their first contribution in https://github.com/inertiajs/inertia/pull/2328 * [@chack1172](https://github.com/chack1172) made their first contribution in https://github.com/inertiajs/inertia/pull/2379 * [@jrmajor](https://github.com/jrmajor) made their first contribution in https://github.com/inertiajs/inertia/pull/2368 * [@SuperDJ](https://github.com/SuperDJ) made their first contribution in https://github.com/inertiajs/inertia/pull/2315 * [@hasib-devs](https://github.com/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: prefetch` header on prefetching by [@pascalbaljet](https://github.com/pascalbaljet) in https://github.com/inertiajs/inertia/pull/2367 ### New Contributors * [@pascalbaljet](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/sveltejs)/kit from 2.11.1 to 2.20.6 by [@dependabot](https://github.com/dependabot) in https://github.com/inertiajs/inertia/pull/2312 * Bump vite from 5.4.17 to 5.4.18 by [@dependabot](https://github.com/dependabot) in https://github.com/inertiajs/inertia/pull/2307 * Fix for deferred props + prefetch links by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/inertiajs/inertia/pull/2321 * Progress: Make hide and reveal CSP-compatible by [@flexponsive](https://github.com/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](https://github.com/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](https://github.com/CTOJoe) in https://github.com/inertiajs/inertia/pull/2320 * Bump vite from 5.4.18 to 5.4.19 by [@dependabot](https://github.com/dependabot) in https://github.com/inertiajs/inertia/pull/2334 * On back button, fetch from server if version hash is not current by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/inertiajs/inertia/pull/2342 * Allow custom URL protocols by [@mpociot](https://github.com/mpociot) in https://github.com/inertiajs/inertia/pull/2329 ### New Contributors * [@flexponsive](https://github.com/flexponsive) made their first contribution in https://github.com/inertiajs/inertia/pull/2316 * [@CTOJoe](https://github.com/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](https://github.com/HichemTab-tech) in https://github.com/inertiajs/inertia/pull/2069 * fix: build error because of invalid type definitions by [@fxnm](https://github.com/fxnm) in https://github.com/inertiajs/inertia/pull/2301 * fix(vue/useForm/defaults): untrack before assign by [@Dsaquel](https://github.com/Dsaquel) in https://github.com/inertiajs/inertia/pull/2112 * Improve type checking of request data by [@7nohe](https://github.com/7nohe) in https://github.com/inertiajs/inertia/pull/2304 * Remove empty payload from GET requests by [@edgars-vasiljevs](https://github.com/edgars-vasiljevs) in https://github.com/inertiajs/inertia/pull/2305 ### New Contributors * [@HichemTab-tech](https://github.com/HichemTab-tech) made their first contribution in https://github.com/inertiajs/inertia/pull/2069 * [@fxnm](https://github.com/fxnm) made their first contribution in https://github.com/inertiajs/inertia/pull/2301 * [@Dsaquel](https://github.com/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](https://github.com/Verox001) in https://github.com/inertiajs/inertia/pull/2217 * chore: replace lodash to decrease bundle size by [@lcdss](https://github.com/lcdss) in https://github.com/inertiajs/inertia/pull/2210 * do not pass url when storing scroll state to history by [@miDeb](https://github.com/miDeb) in https://github.com/inertiajs/inertia/pull/2280 * fix: react `Deferred` component error on partial visits by [@KaioFelps](https://github.com/KaioFelps) in https://github.com/inertiajs/inertia/pull/2223 * Bump vite from 5.4.16 to 5.4.17 by [@dependabot](https://github.com/dependabot) in https://github.com/inertiajs/inertia/pull/2295 * [2.x] SSR clustering by [@RobertBoes](https://github.com/RobertBoes) in https://github.com/inertiajs/inertia/pull/2206 * Allow Object type for href prop by [@nckrtl](https://github.com/nckrtl) in https://github.com/inertiajs/inertia/pull/2292 * Update GitHub Actions to Ubuntu 24.04 by [@joetannenbaum](https://github.com/joetannenbaum) in https://github.com/inertiajs/inertia/pull/2299 * [2.x]: Support for nested paths in forms by [@joaopalopes24](https://github.com/joaopalopes24) in https://github.com/inertiajs/inertia/pull/2181 ### New Contributors * [@Verox001](https://github.com/Verox001) made their first contribution in https://github.com/inertiajs/inertia/pull/2217 * [@lcdss](https://github.com/lcdss) made their first contribution in https://github.com/inertiajs/inertia/pull/2210 * [@miDeb](https://github.com/miDeb) made their first contribution in https://github.com/inertiajs/inertia/pull/2280 * [@KaioFelps](https://github.com/KaioFelps) made their first contribution in https://github.com/inertiajs/inertia/pull/2223 * [@nckrtl](https://github.com/nckrtl) made their first contribution in https://github.com/inertiajs/inertia/pull/2292 * [@joaopalopes24](https://github.com/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](https://github.com/inertiajs/inertia/pull/2284)) - Bump vite from 5.4.12 to 5.4.16 ([#2288](https://github.com/inertiajs/inertia/pull/2288)) - Fix location return history decryption throwing error ([#2282](https://github.com/inertiajs/inertia/pull/2282)) - Make isDirty reactive to defaults ([#2236](https://github.com/inertiajs/inertia/pull/2236)) - Fix playground WhenVisible always ([#2203](https://github.com/inertiajs/inertia/pull/2203)) - Wayfinder support ([#2290](https://github.com/inertiajs/inertia/pull/2290)) ## [v2.0.5](https://github.com/inertiajs/inertia/compare/v2.0.4...v2.0.5) - Fix history state errors by nicholaspufal ([#2265](https://github.com/inertiajs/inertia/pull/2265)) - Bump axios from 1.7.9 to 1.8.2 ([#2269](https://github.com/inertiajs/inertia/pull/2269)) - Bump esbuild from 0.16.17 to 0.25.0 #2231 ([#2231](https://github.com/inertiajs/inertia/pull/2231)) - Bump vite from 5.4.11 to 5.4.12 ([#2201](https://github.com/inertiajs/inertia/pull/2201)) ## [v2.0.4](https://github.com/inertiajs/inertia/compare/v2.0.3...v2.0.4) - Fix anchor links on initial visits ([#2258](https://github.com/inertiajs/inertia/pull/2258)) ## [v2.0.3](https://github.com/inertiajs/inertia/compare/v2.0.2...v2.0.3) - Fix: Reload on mount ([#2200](https://github.com/inertiajs/inertia/pull/2200)) ## [v2.0.2](https://github.com/inertiajs/inertia/compare/v2.0.1...v2.0.2) - Fix SSR with scroll restoration ([#2190](https://github.com/inertiajs/inertia/pull/2190)) - Fix for scroll + back bug ([#2191](https://github.com/inertiajs/inertia/pull/2191)) - Backport 1.x fixes from [v1.3.0](https://github.com/inertiajs/inertia/releases/tag/v1.3.0) release ([#2193](https://github.com/inertiajs/inertia/pull/2193)) ## [v2.0.1](https://github.com/inertiajs/inertia/compare/v2.0.0...v2.0.1) - Fix playground dependencies ([#2070](https://github.com/inertiajs/inertia/pull/2070)) - Removed Vitest tests + dependencies ([#2175](https://github.com/inertiajs/inertia/pull/2175)) - Augment `vue` instead of `@vue/runtime-core` ([#2099](https://github.com/inertiajs/inertia/pull/2099)) - Fix prefetch missing `cacheFor` default value ([#2136](https://github.com/inertiajs/inertia/pull/2136)) - Fix `useForm` re-renders by memoizing functions in React [#2146](https://github.com/inertiajs/inertia/pull/2146) - WhenVisible useEffect function is not recreated when params change. ([#2153](https://github.com/inertiajs/inertia/pull/2153)) - Ensure callback execution ([#2163](https://github.com/inertiajs/inertia/pull/2163)) - More resilient logic for stripping the origin from page URLs ([#2164](https://github.com/inertiajs/inertia/pull/2164)) - Add helper scripts for running tests ([#2173](https://github.com/inertiajs/inertia/pull/2173)) - Export `InertiaFormProps` in React ([#2161](https://github.com/inertiajs/inertia/pull/2161)) - Use default empty object in `useForm` Vue and Svelte ([#2052](https://github.com/inertiajs/inertia/pull/2052)) - Remove `data` option from `useForm` options type ([#2060](https://github.com/inertiajs/inertia/pull/2060)) - Take over scroll restoration from browser ([#2051](https://github.com/inertiajs/inertia/pull/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](https://github.com/inertiajs/inertia/pull/2131)) - Add client side visits ([#2130](https://github.com/inertiajs/inertia/pull/2130)) ### Changed - Removal of NProgress dependency ([#2045](https://github.com/inertiajs/inertia/pull/2045)) - Change TypeScript module resolution in the Svelte adapter ([#2035](https://github.com/inertiajs/inertia/pull/2035)) - Refactor `createInertiaApp` in Svelte adapter ([#2036](https://github.com/inertiajs/inertia/pull/2036)) ### Fixed - Fix: make Link href prop reactive ([#2089](https://github.com/inertiajs/inertia/pull/2089)) ## [v1.3.0](https://github.com/inertiajs/inertia/compare/v1.2.0...v1.3.0) ### Added - Add React 19 support ([#2121](https://github.com/inertiajs/inertia/pull/2121)) - Add Svelte 5 support ([#1970](https://github.com/inertiajs/inertia/pull/1970)) - Add TypeScript support to Svelte adapter ([#1866](https://github.com/inertiajs/inertia/pull/1866), [69292e](https://github.com/inertiajs/inertia/commit/69292ef3592ccca5e0f05f7ce131a53f6c1ba22b), [#2003](https://github.com/inertiajs/inertia/pull/2003), [#2005](https://github.com/inertiajs/inertia/pull/2005)) ### Changed - Skip intercepting non-left button clicks on links ([#1908](https://github.com/inertiajs/inertia/pull/1908), [#1910](https://github.com/inertiajs/inertia/pull/1910)) - Changed `preserveScroll` to be `true` on initial page visit ([#1360](https://github.com/inertiajs/inertia/pull/1360)) - Return early when using `router.on()` during SSR ([#1715](https://github.com/inertiajs/inertia/pull/1715)) - Use updater function in `setData` in `useForm` hook in React adapter ([#1859](https://github.com/inertiajs/inertia/pull/1859)) ### Fixed - Fix history navigation issue on Chrome iOS ([#1984](https://github.com/inertiajs/inertia/pull/1984), [#1992](https://github.com/inertiajs/inertia/pull/1992)) - Fix `setNavigationType` for Safari 10 ([#1957](https://github.com/inertiajs/inertia/pull/1957)) - Export `InertiaFormProps` in all adapters ([#1596](https://github.com/inertiajs/inertia/pull/1596), [#1734](https://github.com/inertiajs/inertia/pull/1734)) - Fix `isDirty` after `form.defaults()` call in Vue 3 ([#1985](https://github.com/inertiajs/inertia/pull/1985)) - Fix scroll reset on page navigation ([#1980](https://github.com/inertiajs/inertia/pull/1980)) - Fix scroll position restoration for `[scroll-region]` elements ([#1782](https://github.com/inertiajs/inertia/pull/1782), [#1980](https://github.com/inertiajs/inertia/pull/1980)) - Fix `useForm` re-renders by memoizing functions in React adapter ([#1607](https://github.com/inertiajs/inertia/pull/1607)) - Fix doubling hash when using `<React.StrictMode>` ([#1728](https://github.com/inertiajs/inertia/pull/1728)) - Fix type augmentation in Vue 3 adapter ([#1958](https://github.com/inertiajs/inertia/pull/1958)) - Fix form helper `transform` return type in React adapter ([#1896](https://github.com/inertiajs/inertia/pull/1896)) - Fix props reactivity in Svelte adapter ([#1969](https://github.com/inertiajs/inertia/pull/1969)) - Fix `<Render />` component to respect `preserveState` option in Svelte adapter ([#1943](https://github.com/inertiajs/inertia/pull/1943)) - Fix 'received an unexpected slot "default"' warning in Svelte adapter ([#1941](https://github.com/inertiajs/inertia/pull/1941)) - Fix command + click behavior on links in React adapter ([#2132](https://github.com/inertiajs/inertia/pull/2132)) - Fix import in Svelte adapter ([#2002](https://github.com/inertiajs/inertia/pull/2002)) ## [v1.2.0](https://github.com/inertiajs/inertia/compare/v1.1.0...v1.2.0) - Fix `preserveScroll` and `preserveState` types ([#1882](https://github.com/inertiajs/inertia/pull/1882)) - Revert "merge props from partial reloads" ([#1895](https://github.com/inertiajs/inertia/pull/1895)) ## [v1.1.0](https://github.com/inertiajs/inertia/compare/v1.0.16...v1.1.0) - Add new `except` visit option to exclude props from partial reloads ([#1876](https://github.com/inertiajs/inertia/pull/1876)) - Deep merge props from partial reloads ([#1877](https://github.com/inertiajs/inertia/pull/1877)) ## [v1.0.16](https://github.com/inertiajs/inertia/compare/v1.0.15...v1.0.16) - Fix Svelte 4 slot rendering issues ([#1763](https://github.com/inertiajs/inertia/pull/1763)) - Fix accessibility warning in Svelte `Link` component ([#1858](https://github.com/inertiajs/inertia/pull/1858)) - Use `Omit` instead of `Exclude` in router types ([#1857](https://github.com/inertiajs/inertia/pull/1857)) ## [v1.0.15](https://github.com/inertiajs/inertia/compare/v1.0.14...v1.0.15) - Bump axios from `v1.4.0` to `v1.6.0` ([#1723](https://github.com/inertiajs/inertia/pull/1723)) ## [v1.0.14](https://github.com/inertiajs/inertia/compare/v1.0.13...v1.0.14) - Revert "Clear errors on form reset (#1568)" ([#1716](https://github.com/inertiajs/inertia/pull/1716)) ## [v1.0.13](https://github.com/inertiajs/inertia/compare/v1.0.12...v1.0.13) - Clear errors on form reset ([#1568](https://github.com/inertiajs/inertia/pull/1568)) - Fix `Link` type in React ([#1659](https://github.com/inertiajs/inertia/pull/1659)) ## [v1.0.12](https://github.com/inertiajs/inertia/compare/v1.0.11...v1.0.12) - Fix type of `onClick` for `Link` component in React and Vue ([#1699](https://github.com/inertiajs/inertia/pull/1699), [#1701](https://github.com/inertiajs/inertia/pull/1701)) ## [v1.0.11](https://github.com/inertiajs/inertia/compare/v1.0.10...v1.0.11) - Fix form helper types for `setDefaults()` method (React) and `defaults()` method (Vue) ([#1504](https://github.com/inertiajs/inertia/pull/1504)) - Fix interface issue with `useForm()` in React and Vue adapters ([#1649](https://github.com/inertiajs/inertia/pull/1649)) ## [v1.0.10](https://github.com/inertiajs/inertia/compare/v1.0.9...v1.0.10) - Fix Svelte's `useForm` helper ([#1610](https://github.com/inertiajs/inertia/pull/1610)) ## [v1.0.9](https://github.com/inertiajs/inertia/compare/v1.0.8...v1.0.9) - Fix `<Head>` vNode handling in Vue 3 adapter ([#1590](https://github.com/inertiajs/inertia/pull/1590)) - Add Svelte 4 support ([60699c7](https://github.com/inertiajs/inertia/commit/60699c7c5978eebd393e0333b567d8e465f4b58f)) ## [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](https://github.com/inertiajs/inertia/pull/1570)) - Fix watching remembered data in Vue 3 adapter ([#1571](https://github.com/inertiajs/inertia/pull/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](https://github.com/inertiajs/inertia/pull/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](https://github.com/inertiajs/inertia/pull/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](https://github.com/inertiajs/inertia/pull/1527)) ### Changed - Simplify the Vue 2 form helper ([#1529](https://github.com/inertiajs/inertia/pull/1529)) ## [v1.0.4](https://github.com/inertiajs/inertia/compare/v1.0.3...v1.0.4) ### Added - Added `displayName` to `Link` component in React adapter ([#1512](https://github.com/inertiajs/inertia/pull/1512)) ### Fixed - Fix `usePage()` reactivity in Vue 3 adapter ([#1469](https://github.com/inertiajs/inertia/pull/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](https://github.com/inertiajs/inertia/pull/1516)) ## [v1.0.2](https://github.com/inertiajs/inertia/compare/v1.0.1...v1.0.2) ### Fixed - Added explicit children to `InertiaHeadProps` ([#1448](https://github.com/inertiajs/inertia/pull/1448)) - Exported `InertiaLinkProps` type ([#1450](https://github.com/inertiajs/inertia/pull/1450)) - Improved React `usePage` generic type ([#1451](https://github.com/inertiajs/inertia/pull/1451)) ## [v1.0.1](https://github.com/inertiajs/inertia/compare/v1.0.0...v1.0.1) ### Fixed - Fixed Vue type overrides for `$page` and `$inertia` ([#1393](https://github.com/inertiajs/inertia/pull/1393)) - Restored React `usePage` generic type ([#1396](https://github.com/inertiajs/inertia/pull/1396)) - Prevented need to use `Method` enum with the Link component ([#1392](https://github.com/inertiajs/inertia/pull/1392)) - Restored Vue 3 `usePage` generic type ([#1394](https://github.com/inertiajs/inertia/pull/1394)) - Fixed export of server types ([#1397](https://github.com/inertiajs/inertia/pull/1397)) - Updated form types to support nested data ([#1401](https://github.com/inertiajs/inertia/pull/1401)) - Allowed stronger type support with Vue `useForm` ([#1413](https://github.com/inertiajs/inertia/pull/1413)) - Fixed Vue 2 `setup` prop types ([#1418](https://github.com/inertiajs/inertia/pull/1418)) - Fixed issue when passing multiple children to React `Head` component ([#1433](https://github.com/inertiajs/inertia/pull/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](https://github.com/inertiajs/inertia/pull/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](https://github.com/inertiajs/inertia/commit/ff59196)) ### Changed - Renamed `@inertiajs/inertia` library to `@inertiajs/core` ([#1282](https://github.com/inertiajs/inertia/pull/1282)) - Renamed `@inertiajs/inertia-react` library to `@inertiajs/react` ([#1282](https://github.com/inertiajs/inertia/pull/1282)) - Renamed `@inertiajs/inertia-svelte` library to `@inertiajs/svelte` ([#1282](https://github.com/inertiajs/inertia/pull/1282)) - Renamed `@inertiajs/inertia-vue` library to `@inertiajs/vue2` ([#1282](https://github.com/inertiajs/inertia/pull/1282)) - Renamed `@inertiajs/inertia-vue3` library to `@inertiajs/vue3` ([#1282](https://github.com/inertiajs/inertia/pull/1282)) - Merged progress library to core and deprecated `@inertiajs/progress` library ([#1282](https://github.com/inertiajs/inertia/pull/1282), [0b5f773](https://github.com/inertiajs/inertia/commit/0b5f773)) - Merged server library to core and deprecated `@inertiajs/server` library ([#1282](https://github.com/inertiajs/inertia/pull/1282)) - Renamed `Inertia` named export to `router` ([#1282](https://github.com/inertiajs/inertia/pull/1282), [e556703](https://github.com/inertiajs/inertia/commit/e556703)) - Removed deprecated named exports ([#1282](https://github.com/inertiajs/inertia/pull/1282), [e556703](https://github.com/inertiajs/inertia/commit/e556703)) - Removed deprecated `app` argument from `createInertiaApp()` in Vue adapters ([#1282](https://github.com/inertiajs/inertia/pull/1282), [65f8a5f](https://github.com/inertiajs/inertia/commit/65f8a5f)) - Updated axios to 1.x ([#1377](https://github.com/inertiajs/inertia/pull/1377)) - Simplified `usePage()` hook in Vue 3 adapter ([#1373](https://github.com/inertiajs/inertia/pull/1373)) - Improved Svelte `use:inertia` and `<Link />` component ([#1344](https://github.com/inertiajs/inertia/pull/1344)) - Removed global `visitOptions()` hook ([#1282](https://github.com/inertiajs/inertia/pull/1282), [30908c2](https://github.com/inertiajs/inertia/commit/30908c2)) - Switched bundler from Microbundle to ESbuild ([f711b46](https://github.com/inertiajs/inertia/commit/f711b46), [8093713](https://github.com/inertiajs/inertia/commit/8093713), [342312d](https://github.com/inertiajs/inertia/commit/342312d), [c9e12b3](https://github.com/inertiajs/inertia/commit/c9e12b3)) ### Fixed - Fixed `<title>` tag not always being included when a `title` callback is defined in `createInertiaApp()` ([#1055](https://github.com/inertiajs/inertia/pull/1055)) - Fixed types to include `undefined` as a valid `FormDataConvertable` option ([#1165](https://github.com/inertiajs/inertia/pull/1165)) - Fixed issue where remembered state wasn't clear on a full page reload ([769f643](https://github.com/inertiajs/inertia/commit/769f643)) --- ### CONTRIBUTING # 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](https://pnpm.io/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 │ ├── svelte4/ Laravel + Svelte 4 │ ├── 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 suite ``` ### Key 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: ```sh git clone https://github.com/inertiajs/inertia.git inertia cd inertia pnpm install ``` Then, start the development environment: ```sh pnpm dev ``` This 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: ```sh cd packages/core && pnpm dev cd packages/react && pnpm dev ``` > **Note:** 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: ```sh pnpm test:react pnpm test:svelte pnpm test:vue ``` These 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: ```sh PACKAGE=react playwright test ``` You may filter tests by name: ```sh pnpm test:react -g "partial reload" ``` Run tests in headed mode (to see the browser): ```sh pnpm test:vue --headed ``` Or in debug mode: ```sh pnpm test:vue --debug ``` ### How 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 suite ``` When running a test command, the correct adapter is selected automatically: | Adapter | `PACKAGE` value | Test server port | App URL | | ------- | --------------- | ---------------- | -------------------------------------------------- | | React | `react` | 13716 | [http://localhost:13716/](http://localhost:13716/) | | Svelte | `svelte` | 13717 | [http://localhost:13717/](http://localhost:13717/) | | Vue 3 | `vue3` | 13715 | [http://localhost: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`](https://playwright.dev/docs/test-configuration#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: ```sh pnpm dev:test-app ``` Or start an individual one: ```sh pnpm dev:test-app:react pnpm dev:test-app:svelte pnpm dev:test-app:vue ``` Each 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.vue ``` Each 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: ```javascript // 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. ```typescript // 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: ```sh 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: ```sh pnpm playground:react ``` The playground script will automatically handle initial setup if needed: - Installing PHP dependencies via Composer - Installing Node.js dependencies via pnpm - Creating the `.env` file 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](http://127.0.0.1:8000). Each playground has its own pnpm script: ```sh pnpm playground:react pnpm playground:svelte4 pnpm playground:svelte5 pnpm playground:vue ``` ## Publishing (Maintainers Only) Releasing is handled by the included release script. You'll need both the `git` CLI and the GitHub CLI ([`gh`](https://cli.github.com)) installed. To create a new release: ```sh ./release.sh ``` The 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](https://docs.npmjs.com/trusted-publishers). --- ### README [](https://inertiajs.com/) ## 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](https://inertiajs.com/docs/v3/the-basics/forms), file uploads with progress, and server-side validation - [Optimistic updates](https://inertiajs.com/docs/v3/the-basics/optimistic-updates) that render before the server responds and roll back if it fails - [Partial reloads](https://inertiajs.com/docs/v3/data-props/partial-reloads), deferred props, prefetching, polling, and infinite scroll - [Server-side rendering](https://inertiajs.com/docs/v3/advanced/server-side-rendering), code splitting, and view transitions - [History encryption](https://inertiajs.com/docs/v3/security/history-encryption) for pages that hold sensitive data - [DevTools](https://inertiajs.com/docs/v3/advanced/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](https://github.com/inertiajs/inertia) repository. On the server, the [Laravel adapter](https://github.com/inertiajs/inertia-laravel) is officially maintained, and [community adapters](https://inertiajs.com/docs/v3/installation/community-adapters) cover Rails, Phoenix, Django, Symfony, AdonisJS, Go, .NET, and more. Laravel's official React, Vue, and Svelte [starter kits](https://laravel.com/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](https://inertiajs.com/docs/v3/getting-started) takes you from installation to how the protocol works under the hood. Prefer to read code? The [demo application](https://demo-v3.inertiajs.com/) 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](https://github.com/inertiajs/demo-v3) repository. ## Deploying Inertia.js An Inertia application runs anywhere your backend does. The fastest path from idea to production is [Laravel Cloud](https://cloud.laravel.com/). 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](CONTRIBUTING.md). ## Code of Conduct In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). ## Security Vulnerabilities Please review [our security policy](https://github.com/inertiajs/inertia/security/policy) on how to report security vulnerabilities. ## License Inertia is open-sourced software licensed under the [MIT license](LICENSE.md). ---