All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
For changes prior to v1.0.0, see the legacy releases.
- Nothing yet
v3.0.3 - 2026-04-07
- [3.x] Bump Vite and Vitest by @pascalbaljet in #3046
- [3.x] Update TSConfig and bump CI actions by @pascalbaljet in #3047
- [3.x] Infer form data keys in
resetOnSuccessandresetOnErrorby @pascalbaljet in #3048 - [3.x] Fix layout props callback misclassifying function-valued props as named layouts by @pascalbaljet in #3049
- [3.x] Fix flash event not firing when response contains errors by @skryukov in #3038
- [3.x] Fire flash event after full reload by @skryukov in #3041
- [3.x] Improve Playwright CI cache by @pascalbaljet in #3051
- [3.x] Add
onHttpException,onNetworkError, and response toonSuccessinuseHttpby @pascalbaljet in #3050
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.2...v3.0.3
v3.0.2 - 2026-04-02
- [3.x] Populate
percentagein upload progress events by @pascalbaljet in #3030 - [3.x] Add test for optional scroll props by @pascalbaljet in #3032
- [3.x] Warm up lazy-loaded page dependencies in Vite plugin by @pascalbaljet in #3035
- [3.x] Harden CI workflows and fix dependency vulnerabilities by @pascalbaljet in #3031
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.1...v3.0.2
v3.0.1 - 2026-03-31
- [3.x] Update Playgrounds by @pascalbaljet in #3013
- [3.x] Support anonymous arrow functions as React layout components by @pascalbaljet in #3016
- [3.x] Fix
WhenVisiblecrash during SSR by @pascalbaljet in #3021 - [3.x] Remove plain <title> when Head component sets a title by @pascalbaljet in #3022
- [3.x] Fix
defineOptions({ layout: [...] })type error with nested layouts by @pascalbaljet in #3023 - [3.x] Fix flash data re-firing on partial reloads by @pascalbaljet in #3024
- [3.x] Warm up SSR module graph on dev server start by @pascalbaljet in #3007
Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.0...v3.0.1
v3.0.0 - 2026-03-25
- [3.x] Drop support for Svelte 4 by @pascalbaljet in #2713
- [3.x] Remove qs dependency by @pascalbaljet in #2791
- [3.x] Svelte 5 Adapter based on #2586 by @puRe1337 in #2677
- [3.x] Drop support for React < 19 by @pascalbaljet in #2712
- [3.x] Pass props as second argument to resolve() in createInertiaApp() by @HichemTab-tech in #2485
- [3.x] Only reset useForm processing and progress with onFinish by @pascalbaljet in #2838
- [3.x] Bump Node.js to v24 + Bump GitHub CI Actions by @pascalbaljet in #2847
- [3.x] Remove unused
pendingVisitOptionsparameter by @pascalbaljet in #2853 - [3.x] Remove
hideProgress()andrevealProgress()exports by @pascalbaljet in #2852 - [3.x] Svelte 5 improvements by @pascalbaljet in #2863
- [3.x] Built-in XHR HTTP client + make Axios an optional peer dependency by @pascalbaljet in #2833
- [3.x] Add
useHttphook for standalone HTTP requests by @pascalbaljet in #2840 - [3.x] Generics in
<Form>Component by @pascalbaljet in #2849 - [3.x] Add layout props helpers by @pascalbaljet in #2859
- [3.x] Upgrade Svelte playground to Svelte 5 syntax by @pascalbaljet in #2868
- [3.x] Migrate
futureoptions to be new defaults by @pascalbaljet in #2867 - [3.x] Add
reloadingslot prop to<Deferred>component by @pascalbaljet in #2860 - [3.x] Rename
useDataElementForInitialPagetouseDataAttributeForInitialPageby @pascalbaljet in #2871 - [3.x] Add
preserveErrorsoption to preserve validation errors during partial requests by @pascalbaljet in #2819 - [3.x] SSR support in Vite development mode + simplified setup by @pascalbaljet in #2864
- [3.x] Rename
invalidandexceptionevents and add visit callbacks by @pascalbaljet in #2869 - [3.x] Optimistic updates for
router,useForm, anduseHttpby @pascalbaljet in #2866 - [3.x] Streamline adapter
index.tsexports by @pascalbaljet in #2872 - [3.x] Drop CJS builds in favor of ESM-only output by @pascalbaljet in #2873
- [3.x] Use Precognition 2.x and bump all deps by @pascalbaljet in #2877
- [3.x] Support for
withAllErrorsinuseHttpby @pascalbaljet in #2880 - [3.x] Add
optimisticprop to<Form>component by @pascalbaljet in #2881 - [3.x] Add test for named layout persistence across navigations by @pascalbaljet in #2882
- [3.x] Allow calling
createInertiaApp()without arguments by @pascalbaljet in #2883 - [3.x] Add
layoutoption tocreateInertiaApp()by @pascalbaljet in #2884 - [3.x] Update Playgrounds by @pascalbaljet in #2885
- [3.x] Add a singleton for the usePage function by @DavidCCoimbra in #2874
- [3.x] Remove
legacy.useDataAttributeForInitialPageconfig option by @pascalbaljet in #2887 - [3.x] Concurrent optimistic updates by @pascalbaljet in #2898
- [3.x] Preserve URL fragment across redirects with server-side
preserveFragmentoption by @pascalbaljet in #2897 - [3.x] Hash fragment redirect support by @pascalbaljet in #2899
- [3.x] Support nested dot-notation prop types by @pascalbaljet in #2901
- [3.x] Add strictMode option to React's createInertiaApp by @pascalbaljet in #2909
- [3.x] Fix FOUC during SSR development by @pascalbaljet in #2911
- [3.x] Make
clearHistoryandencryptHistoryoptional in page object by @pascalbaljet in #2908 - [3.x] Instant visits by @pascalbaljet in #2907
- Include resources directory in published packages by @pushpak1300 in #2914
- [3.x] Consolidate SSR error handling by @pascalbaljet in #2915
- [3.x] Use the popover API for the progress bar by @pascalbaljet in #2917
- [3.x] Minor clean up core package by @pascalbaljet in #2918
- [3.x] Fix axios adapter being required by @skryukov in #2926
- [3.x] Fire
onHttpExceptionfor server-rendered Inertia error pages by @pascalbaljet in #2927 - [3.x] Fix duplicate base path in Vite SSR CSS link URLs by @isaackaara in #2936
- [3.x] Populate global page store during Svelte 5 SSR by @pascalbaljet in #2938
- [3.x] Stop collecting CSS sub-dependencies during SSR by @pascalbaljet in #2937
- [v3.x] refactor(svelte)!: migrate useLayoutProps from stores to runes by @peaklabs-dev in #2944
- [3.x] fix: remove request from stream on network failure by @Anthony14FR in #2940
- [3.x] Support more createInertiaApp() patterns in SSR transform by @skryukov in #2929
- [v3.x] fix(types): module augmentation example by @peaklabs-dev in #2945
- [3.x] Convert Vue adapter components to Composition API by @pascalbaljet in #2947
- [3.x] fix: always fire flash event regardless of partial reload equality by @Anthony14FR in #2941
- [3.x] Include
SharedPagePropsincreateInertiaAppand event types by @pascalbaljet in #2956 - [3.x] Add
withAppcallback tocreateInertiaAppby @pascalbaljet in #2949 - [3.x] fix(type): add Record<string, string> to UrlMethodPair type by @stafast in #2952
- [3.x] Improve optimistic update rollback with multiple pending requests by @pascalbaljet in #2958
- [3.x] Prevent useHttp from parsing empty 204 responses by @entity in #2967
- [3.x] Include
SharedPagePropsin optimistic update callback types by @pascalbaljet in #2968 - [3.x] Test SSR across multiple Node.js versions in CI by @pascalbaljet in #2969
- [3.x] Migrate from
lodash-estoes-toolkitby @pascalbaljet in #2973 - [3.x] Add Vite 8 support, drop Vite 6 by @pascalbaljet in #2974
- [3.x] Fix Infinite Scroll SSR hydration by @pascalbaljet in #2975
- [3.x] Simplify layout props by passing them directly as component prop by @pascalbaljet in #2972
- [3.x] Improve form state stability by @pascalbaljet in #2976
- [3.x] Allow overriding
useHttpresponse type per method call by @pascalbaljet in #2979 - Revert "[3.x] Allow overriding
useHttpresponse type per method call" by @pascalbaljet in #2980 - [3.x] Fix React form not re-rendering memoized children on
setDataby @pascalbaljet in #2986 - [3.x] Update Boost skills by @pascalbaljet in #2987
- [3.x] Add generic type inference for
optimisticandtransformcallbacks by @pascalbaljet in #2990 - [3.x] Cleanup of
server.jsby @pascalbaljet in #2991 - [3.x] Clean up leftover
snapshotRefinuseFormStateby @pascalbaljet in #2992 - [3.x] Additional Vite tests by @pascalbaljet in #2994
- [3.x] Svelte linting fixes by @pascalbaljet in #2995
- [3.x] Rename
networkErrorevent detail key toerrorby @pascalbaljet in #2996 - [3.x] Fix
PagesOptiontype and makesetup/withAppmutually exclusive by @pascalbaljet in #2997 - [3.x] Guard against
voidreturn fromuseHttpoptimistic callback by @pascalbaljet in #3001 - [3.x] Fix Svelte Form ignoring global
withAllErrorsconfig by @pascalbaljet in #2998 - [3.x] Add
HttpErrorbase class by @pascalbaljet in #2999 - [3.x] Rename
handleErrorsSSR option toformatErrorsby @pascalbaljet in #3000 - [3.x] Remove deprecated router.cancel() method by @pascalbaljet in #3002
- [3.x] Bump Precognition package by @pascalbaljet in #3006
- [3.x] Refactor Layout Props by @pascalbaljet in #3005
- @puRe1337 made their first contribution in #2677
- @DavidCCoimbra made their first contribution in #2874
- @Anthony14FR made their first contribution in #2940
- @stafast made their first contribution in #2952
- @entity made their first contribution in #2967
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.16...v3.0.0
v2.3.16 - 2026-02-24
- Bump @sveltejs/kit from 2.50.2 to 2.52.2 by @dependabot[bot] in #2904
- Add Boost Guidelines & Skills by @pushpak1300 in #2896
- @pushpak1300 made their first contribution in #2896
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16
v2.3.15 - 2026-02-13
- Bump axios from 1.13.2 to 1.13.5 by @dependabot[bot] in #2888
- [2.x] Fix flash data being cleared by
history.replaceStateby @pascalbaljet in #2889 - [2.x] Handle
bfcacherestoration for encrypted history by @pascalbaljet in #2890 - [2.x] Bump dependencies by @pascalbaljet in #2891
- [2.x] Fix InfiniteScroll loading all pages in reverse mode with flex/grid layouts by @pascalbaljet in #2893
- [2.x] Improve flaky tests and test app quality by @pascalbaljet in #2895
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15
v2.3.14 - 2026-02-11
- [2.x] Shut down entire cluster on SSR shutdown by @pascalbaljet in #2876
- [2.x] Fix
useFormtype inference when passing data as callback by @pascalbaljet in #2878 - Add global configuration support for withAllErrors in form components by @skryukov in #2865
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14
v2.3.13 - 2026-01-30
- Fix
useFormtype inference in generic wrapper components by @pascalbaljet in #2851 - Support wildcard paths in
validate()method by @pascalbaljet in #2854
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13
v2.3.12 - 2026-01-27
- Bump lodash from 4.17.21 to 4.17.23 by @dependabot[bot] in #2835
- Bump lodash-es from 4.17.22 to 4.17.23 by @dependabot[bot] in #2836
- Fix cancellation of concurrent partial reloads with query parameters by @pascalbaljet in #2843
- Support for the
formTargetattribute in the<Form>component by @pascalbaljet in #2844 - Clear stale form errors on resubmit by @pascalbaljet in #2845
- Prevent
<Deferred>from rendering children with undefined props by @pascalbaljet in #2846
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12
v2.3.11 - 2026-01-20
- Bump and cleanup dependencies by @pascalbaljet in #2822
- Add test for Precognition validation with transform key changes by @pascalbaljet in #2827
- TS and console error on conflicting
useForm()keys by @pascalbaljet in #2823 - Allow
useFormwithout arguments by @pascalbaljet in #2830 - Pass
truetoinertattribute in React 19 by @pascalbaljet in #2831
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.10...v2.3.11
v2.3.10 - 2026-01-15
- Add
asyncandsyncoptions tocancelAllmethod by @pascalbaljet in #2814 - Fix smooth scrolling in Firefox and add Firefox to CI by @pascalbaljet in #2815
- Improve flaky
<InfiniteScroll>test in WebKit CI by @pascalbaljet in #2818 - Pass
oncePropsas second argument in client-side visit props callback by @pascalbaljet in #2816 - Prevent converting a string response to an object by @pascalbaljet in #2821
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.9...v2.3.10
v2.3.9 - 2026-01-14
- Fix React Precognition Error Sync (issue #2806) by @joetifa2003 in #2808
- Add tests for deferred scroll props by @pascalbaljet in #2811
- Fix deferred props not loading after back button navigation by @pascalbaljet in #2812
- Add test for concurrent reloads by @pascalbaljet in #2813
- Cancel in-flight deferred prop requests on navigation by @alexspeller in #2656
- fix: preserve query parameters in test server responses by @alexspeller in #2665
- [2.x] Add Form Context Support by @laserhybiz in #2671
- @joetifa2003 made their first contribution in #2808
- @alexspeller made their first contribution in #2656
- @laserhybiz made their first contribution in #2671
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.8...v2.3.9
v2.3.8 - 2026-01-09
- fix: update has more state when resetting before updating page by @AydinHassan in #2787
- Ensure Flash Data listener is registered before event is fired by @pascalbaljet in #2799
- Improve indices detection in
mergeDataIntoQueryString()by @pascalbaljet in #2798 - Fix
<WhenVisible>re-registering observer when params change by @pascalbaljet in #2804
- @AydinHassan made their first contribution in #2787
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.7...v2.3.8
v2.3.7 - 2026-01-07
- Add
dontRemember()method to form helper by @pascalbaljet in #2792 - Only call
replaceState()when page data has actually changed by @pascalbaljet in #2793 - Fix
@typescript-eslint/unbound-methodwarning when destructuringuseForm()methods by @pascalbaljet in #2794
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.6...v2.3.7
v2.3.6 - 2025-12-31
- Bump qs from 6.14.0 to 6.14.1 by @dependabot[bot] in #2790
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.5...v2.3.6
v2.3.5 - 2025-12-31
- Refresh the Infinite Scroll triggers after partial reload by @pascalbaljet in #2784
- Fix
hasAnyState()to actually check for browser history by @pascalbaljet in #2785 - Handle WebKit history throttle errors by @pascalbaljet in #2786
- Merge
dataandparamsprops in<WhenVisible>by @pascalbaljet in #2789 - Handle
QuotaExceededErrorin WebKit by @pascalbaljet in #2788
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.4...v2.3.5
v2.3.4 - 2025-12-19
- Only restore Infinite Scroll state from history on back/forward navigation by @pascalbaljet in #2777
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.3...v2.3.4
v2.3.3 - 2025-12-17
- Add support for protocol-relative urls in url.ts by @machour in #2769
- Fix brackets notation qs parsing by @skryukov in #2722
- Support for Flash Data by @pascalbaljet in #2757
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.2...v2.3.3
v2.3.2 - 2025-12-16
- Expose InertiaPrecognitiveForm type by @lcdss in #2756
- Test for loading deferred props on
router.reload()withoutonly/exceptby @pascalbaljet in #2761 - Expose
fetchingin default<WhenVisible>slot by @pascalbaljet in #2766 - Include submitter element value in Form component submission by @pascalbaljet in #2770
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.1...v2.3.2
v2.3.1 - 2025-12-12
- Test for Form + Vue Options API by @pascalbaljet in #2750
- Fix for validating items in dynamic arrays by @pascalbaljet in #2753
- Escape forward slashes when using useScriptElementForInitialPage by @kirk-loretz-fsn in #2751
- Sync Playground configs by @pascalbaljet in #2754
- Fix race condition when restoring scroll regions by @pascalbaljet in #2755
- @kirk-loretz-fsn made their first contribution in #2751
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.3.0...v2.3.1
v2.3.0 - 2025-12-11
- Support for Precognition in
useForm()by @pascalbaljet in #2684 - Support for Precognition in
<Form>component by @pascalbaljet in #2700 - Improve Precognition examples in Playgrounds by @pascalbaljet in #2746
- Improve flaky tests by @pascalbaljet in #2747
- bugfix(whenVisible-vue): Fix loaded state when data already exists by @ClaraLeigh in #2748
- @ClaraLeigh made their first contribution in #2748
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.21...v2.3.0
v2.2.21 - 2025-12-10
- Add
viewTransitiontoFormComponentOptionstype by @pascalbaljet in #2741 - Preserve untouched Once Props on Partial Reload + Once Props in Playground by @pascalbaljet in #2743
- Only preserve loaded Deferred + Once props by @pascalbaljet in #2745
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.20...v2.2.21
v2.2.20 - 2025-12-09
- Bump express from 5.1.0 to 5.2.0 by @dependabot[bot] in #2727
- Add tests for SSR server by @pascalbaljet in #2730
- Preserve errors when loading deferred props by @pascalbaljet in #2729
- Optimize page data size and parsing (37% size reduction!) by @bram-pkg in #2687
- Support for
once()props by @pascalbaljet in #2732 - Fix for sequential Client Side Visits by @pascalbaljet in #2737
- Refactor duplicated initial page code by @pascalbaljet in #2738
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.19...v2.2.20
v2.2.19 - 2025-11-27
- Bump dependencies by @pascalbaljet in #2710
- TypeScript fix accessing error keys of optional nested object by @pascalbaljet in #2718
- Use FormValue in Form component by @skryukov in #2709
- Fix anchor hash scrolling on initial page visit in React by @pascalbaljet in #2719
- Ensure page is rendered before scrolling to top by @pascalbaljet in #2721
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.18...v2.2.19
v2.2.18 - 2025-11-17
- Ensure
objectsAreEqual()checks all keys in both objects by @pascalbaljet in #2705
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.17...v2.2.18
v2.2.17 - 2025-11-14
- Reset
<WhenVisible>loading state after a page reload by @pascalbaljet in #2699 - Add test for reloading deferred props by @pascalbaljet in #2698
- Force
indicesarray format when submitting data usingFormDataby @pascalbaljet in #2701
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.16...v2.2.17
v2.2.16 - 2025-11-13
- Added test for
defaultValuein Form component by @pascalbaljet in #2685 - Prevent navigation on right-click on
<Link>withprefetch="click"by @pascalbaljet in #2676 - Export page component type for React adapter by @skryukov in #2691
- Switch
useContexttouseinusePage()hook by @HichemTab-tech in #2680 - Improve serialization in
formDataToObject()when mixing numeric and non-numeric object keys by @pascalbaljet in #2692 - Fix
InfiniteScrollscroll preservation by @skryukov in #2689 - Export Inertia
Appcomponent by @pascalbaljet in #2695 - Ignore
preserveScrollandpreserveStatewhen finding cached response by @pascalbaljet in #2694 - Upgrade Express server for test apps to v5 by @pascalbaljet in #2693
- Add WebKit browser testing to CI with Safari compatibility fixes by @pascalbaljet in #2696
- Bump symfony/http-foundation from 7.3.4 to 7.3.7 in /playgrounds/vue3 by @dependabot[bot] in #2697
- Fix array keys misalignment in form data and query by @skryukov in #2690
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.15...v2.2.16
v2.2.15 - 2025-10-30
- TS Fix for circularly references in form data by @pascalbaljet in #2673
- Improve TS for config defaults by @pascalbaljet in #2674
- [v2.x] feat: allow adding type to
router.restoreby @peaklabs-dev in #2545 - Configurable prefetch hover delay by @pascalbaljet in #2675
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.14...v2.2.15
v2.2.14 - 2025-10-28
- TS cleanup for
<Link>component + View Transition prop in Svelte by @pascalbaljet in #2667 - Improve support for
anyas form data value by @pascalbaljet in #2668
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.13...v2.2.14
v2.2.13 - 2025-10-28
- Support for View Transitions by @pascalbaljet in #2658
- Opt-in to using
data-inertiaattribute in<Head>component by @pascalbaljet in #2663 - Opt-in to using
<dialog>for error modals by @pascalbaljet in #2664 - feat: give access to underlying data as object and as form data object by @MeiKatz in #2605
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.12...v2.2.13
v2.2.12 - 2025-10-27
- Clone page props before writing it to the browser's history by @pascalbaljet in #2662
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.11...v2.2.12
v2.2.11 - 2025-10-24
- Configure global defaults and update during runtime by @pascalbaljet in #2655
- Stabilize prop references when visiting the same page by @pascalbaljet in #2657
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.10...v2.2.11
v2.2.10 - 2025-10-23
- Restore uppercase
Componentobject key in React'sApp.tsby @pascalbaljet in #2654
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.9...v2.2.10
v2.2.9 - 2025-10-21
- Use local
@inertiajs/corein Playgrounds + dependencies bump by @pascalbaljet in #2633 - Introduce types for Head Manager by @pascalbaljet in #2634
- Fix resolving
preserveScrollandpreserveStatein Client Side Visits by @pascalbaljet in #2635 - Support for type-hinting shared Page Props by @pascalbaljet in #2636
- Add
globals.d.tsfile to Playgrounds by @pascalbaljet in #2637 - Remove wrong
shouldIntercept()call inkeydownevent handler in<Link>component by @pascalbaljet in #2638 - Introduce
CancelTokenandCancelTokenCallbacktypes to replace Axios imports by @pascalbaljet in #2639 - Internal TypeScript improvements by @pascalbaljet in #2640
- Tests and TS improvements for the
<Head>component by @pascalbaljet in #2641 - Make
dataprop of<InfiniteScroll>required by @pascalbaljet in #2642 - TS fixes in Vue adapter for
useRememberandremembermixin by @pascalbaljet in #2643 - Bump vite from 5.4.20 to 5.4.21 by @dependabot[bot] in #2647
- TypeScript improvements to
createInertiaApp()and unifying it across adapters by @pascalbaljet in #2648 - ESLint check for test-apps by @pascalbaljet in #2560
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.8...v2.2.9
v2.2.8 - 2025-10-09
- Prevent false positives in
getScrollableParent()by @pascalbaljet in #2626 - Restore scroll regions after navigation by @pascalbaljet in #2627
- Prevent replacing history state when scroll regions are unchanged to fix popstate behavior in WebKit by @pascalbaljet in #2629
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.7...v2.2.8
v2.2.7 - 2025-10-07
- Preserve relative URL when
<InfiniteScroll>updates query string by @pascalbaljet in #2623 - Use
SlotsTypeto type-hint Vue slots by @pascalbaljet in #2620 - Fix race condition in
history.tsby @pascalbaljet in #2624
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.6...v2.2.7
v2.2.6 - 2025-10-03
- SSR fixes for
<InfiniteScroll>component. by @pascalbaljet in #2616
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.5...v2.2.6
v2.2.5 - 2025-10-02
- Improve
<InfiniteScroll>cleanup after navigating away by @pascalbaljet in #2610 - Fix for
<Form>component when using React SSR by @pascalbaljet in #2612 - Fix conflicting Client Side Visits by queuing the URL synchronization by @pascalbaljet in #2613
- Improvements to
<InfiniteScroll>in Svelte adapter by @pascalbaljet in #2614
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.4...v2.2.5
v2.2.4 - 2025-09-30
- Compile TS while developing + improve CLI output by @pascalbaljet in #2600
- Improve testing of scroll restoration by @pascalbaljet in #2602
- Fix for reloading an unrelated prop affecting infinite scroll by @pascalbaljet in #2603
- Add
preserve-urlprop to<Link>component by @pascalbaljet in #2541
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.3...v2.2.4
v2.2.3 - 2025-09-29
- Preserve
ScrollPropon Partial Reloads by @pascalbaljet in #2597
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.2...v2.2.3
v2.2.2 - 2025-09-28
- Reset
ScrollPropwhen requested by @pascalbaljet in #2595
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.1...v2.2.2
v2.2.1 - 2025-09-28
- Don't restore remembered state after a refresh by @pascalbaljet in #2591
- Remember Infinite Scroll state by @pascalbaljet in #2592
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.2.0...v2.2.1
v2.2.0 - 2025-09-26
- Support for merging nested prop paths by @pascalbaljet in #2561
- Client-side visit helpers to update props by @pascalbaljet in #2589
- Introduction of the
<InfiniteScroll>component by @pascalbaljet in #2580
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.11...v2.2.0
v2.1.11 - 2025-09-24
- Fix flaky tests in CI by @pascalbaljet in #2582
- Bump Playwright by @pascalbaljet in #2585
- Progress indicator API by @pascalbaljet in #2581
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.10...v2.1.11
v2.1.10 - 2025-09-22
- Fix PNPM publishing by @joetannenbaum in #2578
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.9...v2.1.10
v2.1.9 - 2025-09-22
- Fix PNPM build by @joetannenbaum in #2577
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.8...v2.1.9
v2.1.8 - 2025-09-22
- Publish packages in CI by @joetannenbaum in #2575
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.7...v2.1.8
v2.1.7 - 2025-09-18
- Bump axios from 1.11.0 to 1.12.0 by @dependabot[bot] in #2568
- Bump dependencies by @pascalbaljet in #2571
- TypeScript upgrade by @pascalbaljet in #2573
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.6...v2.1.7
v2.1.6 - 2025-09-12
- Invalidate prefetch cache when page is received from a network request by @pascalbaljet in #2567
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.5...v2.1.6
v2.1.5 - 2025-09-05
- Fix race condition when combining Deferred Props with an instant Partial Reload on mount by @pascalbaljet in #2562
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.4...v2.1.5
v2.1.4 - 2025-09-03
- Replace html-escape with built-in function on Svelte package by @kresnasatya in #2535
- Update dirty state after DOM changes (React only) by @pascalbaljet in #2558
- Prevent errors caused by null href value by @fritz-c in #2550
- Remove data from the dependency array of setDefaults by @jasonlbeggs in #2554
- @fritz-c made their first contribution in #2550
- @jasonlbeggs made their first contribution in #2554
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.3...v2.1.4
v2.1.3 - 2025-08-27
- Code formatting with Prettier by @pascalbaljet in #2515
- Add EditorConfig and fix some whitespace issues by @jrmajor in #2516
- Fix for nullable object types in
useFormby @pascalbaljet in #2528 - Fix for Form Component in Svelte when resetting use input/button by @pascalbaljet in #2525
- Improve Link component
asprop by @pascalbaljet in #2524 - [v2.x] fix: type error by changing page props type to
anyby @peaklabs-dev in #2520 - Revert to back to Lodash to retain ES2020 compatibility by @pascalbaljet in #2527
- Verify ES2020 compatibility in CI by @pascalbaljet in #2530
- [Vue] Fixing action attribute on Form Component when using Wayfinder by @nicolagianelli in #2532
- Make package.json structure in Svelte package Consistent as Vue and React by @kresnasatya in #2529
- Remove Svelte 5-next version constraint by @pascalbaljet in #2533
- improve typescript configuration by @sudo-barun in #2470
- Format JSON files with Prettier by @pascalbaljet in #2534
- Fix warning about
inertattribute in React < 19 by @pascalbaljet in #2536 - Fix keyboard activation when using
prefetch: 'click'by @pedroborges in #2538 - Fix
useFormto respect manualsetDefaults()calls inonSuccessand unify timing across adapters by @pascalbaljet in #2539 - Run Playwright in parallel in CI by @pascalbaljet in #2540
- Fix Coding Standards workflow by @pascalbaljet in #2547
- bumpup axios to fix CVE-2025-7783 by @vallerydelexy in #2546
- Bump
@sveltejs/kitversion by @pascalbaljet in #2548
- @peaklabs-dev made their first contribution in #2520
- @nicolagianelli made their first contribution in #2532
- @kresnasatya made their first contribution in #2529
- @vallerydelexy made their first contribution in #2546
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.2...v2.1.3
v2.1.2 - 2025-08-15
- Fix for manipulating form after redirect in
onSubmitCompleteby @joetannenbaum in #2510 - Support for passing Wayfinder objects to router methods by @pascalbaljet in #2497
- Tag-based cache invalidation for prefetch requests by @pascalbaljet in #2484
- Add
resetOnError,resetOnSuccess,setDefaultsOnSuccessto Form component by @joetannenbaum in #2514
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.1...v2.1.2
v2.1.1 - 2025-08-14
- Improve
Linkcomponent types and support for prefetch events by @pascalbaljet in #2464 - allow passing partial errors object to
setError()by @sudo-barun in #2461 - Add missing generic type support to PendingVisit and VisitHelperOptions by @HichemTab-tech in #2454
- Revamp useForm's generic types across adaptors by @Spice-King in #2335
- TypeScript improvements for
Linkcomponent and Client Side Visits by @pascalbaljet in #2472 - Further TS improvements for
useFormby @pascalbaljet in #2475 - Improve consistency in
useFormacross adapters by @pascalbaljet in #2482 - Improve TypeScript support for Client Side Visit
propscallback by @pascalbaljet in #2483 - TS improvements to Svelte's
<Form>anduseForm()implementations by @pascalbaljet in #2489 - Typescript Improvements by @pascalbaljet in #2468
- Test apps in TypeScript by @pascalbaljet in #2469
- Fix empty action in
<Form>component when the current URL has more than one segment by @pascalbaljet in #2501 - Support uppercase method in
<Form>component by @pascalbaljet in #2502 - Add
FormcomponentdisableWhileProcessingprop by @joetannenbaum in #2504 - Reset form fields by name in Form components by @skryukov in #2499
- Add
onSubmitCompleteprop toFormcomponent by @joetannenbaum in #2503 - Remove failed prefetch requests from in-flight array by @pascalbaljet in #2500
- Add
defaults()method to Form component by @pascalbaljet in #2507 - Release script by @joetannenbaum in #2508
- Only
reset()anddefaults()inonSubmitCompleteby @pascalbaljet in #2509
- @sudo-barun made their first contribution in #2461
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.1.0...v2.1.1
v2.1.0 - 2025-08-13
- Support for passing custom component to
asprop ofLinkcomponent. by @pascalbaljet in #2443 - Use
nodemonto trigger new files and deleted files in test apps by @pascalbaljet in #2442 - Use ReactNode type for children props by @chack1172 in #2385
- Allow function as children component in react Deferred and WhenVisible by @chack1172 in #2386
- Improve test that waits for scroll position restoration by @pascalbaljet in #2473
- Introduction of the
Formcomponent by @pascalbaljet in #2474 - Improve
childrenprop of<Form>Component by @pascalbaljet in #2487 - Add Form component ref support by @pascalbaljet in #2496
- Make Svelte's not crash in an SSR environment by @dkulchenko in #2396
- Fix core: Queue processing when an item fails by @pintend in #2467
- Migrate playgrounds to Tailwind 4 by @jrmajor in #2369
- @dkulchenko made their first contribution in #2396
- @pintend made their first contribution in #2467
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.17...v2.1.0
v2.0.17 - 2025-07-18
- Bump multer from 2.0.1 to 2.0.2 by @dependabot[bot] in #2447
- Bump vite from 5.4.12 to 5.4.19 by @dependabot[bot] in #2450
- Bump esbuild from 0.21.5 to 0.25.0 by @dependabot[bot] in #2451
- Explicit string coercion in
Headcomponent by @pascalbaljet in #2453
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.16...v2.0.17
v2.0.16 - 2025-07-18
- Make errorBag parameter optional by @joelstein in #2445
- @joelstein made their first contribution in #2445
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.15...v2.0.16
v2.0.15 - 2025-07-17
- Improve GitHub issue templates by @pascalbaljet in #2418
- Escape the attribute values that are passed into the
Headcomponent by @pascalbaljet in #2403 - Introduce single method to reset form state and clear errors by @pascalbaljet in #2414
- Use
CacheForOptiontype in ReactLinkcomponent by @pascalbaljet in #2426 - Improve query string merging in
mergeDataIntoQueryString()by @pascalbaljet in #2417 - Improve scrolling when using anchor hash by @pascalbaljet in #2428
- Cancel sync request on popstate event by @pascalbaljet in #2429
- Support for path traversal by @pascalbaljet in #2413
- Add event callbacks to
ClientSideVisitOptionsby @pascalbaljet in #2405 - Pass parameters to
onFinishandonSuccesscallbacks on Client Side Visits by @pascalbaljet in #2433 - Prevent JS builds and test apps from being minified by @pascalbaljet in #2424
- Migrate to pnpm by @jrmajor in #2276
- Fix single-use prefetching by @pascalbaljet in #2440
- Change defaults values order in onSuccess callback of useForm by @yilanboy in #2437
- Improve reactivity of Link components by @pascalbaljet in #2441
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.14...v2.0.15
v2.0.14 - 2025-06-26
- fix: fixed type error in
useForm SetDataActiontype by @fxnm in #2395 - Call
provider.updateoutside useEffect block to support SSR by @pascalbaljet in #2397 - Improve state restore logic in
useRememberby @pascalbaljet in #2401
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.13...v2.0.14
v2.0.13 - 2025-06-20
- Allow deepMerge on custom properties by @mpociot in #2344
- fix: React StrictMode breaking Inertia Head by @jordanhavard in #2328
- Bump multer from 1.4.4 to 2.0.1 in /tests/app by @dependabot in #2373
- Initialize router before components in React by @chack1172 in #2379
- Prevent duplicate render of the initial page in React by @pascalbaljet in #2377
- Update default state when
setDefault()is called right aftersetData()is called by @pascalbaljet in #2364 - [2.x] Restore
router.resolveComponent()method by @pascalbaljet in #2039 - Move
currentIsInitialPagevariable outside ofAppby @pascalbaljet in #2381 - Don't overwrite Vite class in Svelte playgrounds by @jrmajor in #2368
- Dependency update + Prevent Playwright 1.53.0 due to Svelte bug by @pascalbaljet in #2382
- Update to Vite 6 by @SuperDJ in #2315
- Fix React scroll restoration on popState by @sebastiandedeyne in #2357
- feat(useForm): export granular setData types and introduce SetDataAction by @hasib-devs in #2356
- Refactor
mergeStrategiestomatchOnby @pascalbaljet in #2384 - Remove
setSwapComponentmethod and cleanup after PR #2379 by @pascalbaljet in #2383
- @jordanhavard made their first contribution in #2328
- @chack1172 made their first contribution in #2379
- @jrmajor made their first contribution in #2368
- @SuperDJ made their first contribution in #2315
- @hasib-devs made their first contribution in #2356
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.12...v2.0.13
v2.0.12 - 2025-06-10
- Send
Purpose: prefetchheader on prefetching by @pascalbaljet in #2367
- @pascalbaljet made their first contribution in #2367
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.11...v2.0.12
v2.0.11 - 2025-05-16
- Fix progress bar not showing on subsequent page clicks by @joetannenbaum in #2349
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.10...v2.0.11
v2.0.10 - 2025-05-15
- Don't show progress bar on prefetch hover by @joetannenbaum in #2347
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.9...v2.0.10
v2.0.9 - 2025-05-09
- Bump @sveltejs/kit from 2.11.1 to 2.20.6 by @dependabot in #2312
- Bump vite from 5.4.17 to 5.4.18 by @dependabot in #2307
- Fix for deferred props + prefetch links by @joetannenbaum in #2321
- Progress: Make hide and reveal CSP-compatible by @flexponsive in #2316
- Corrected URL search parameter merge logic to match behavior prior to v2.0.8 by @joetannenbaum in #2341
- Corrects url search parameter merge logic to match behavior prior to v2.0.8 by @CTOJoe in #2320
- Bump vite from 5.4.18 to 5.4.19 by @dependabot in #2334
- On back button, fetch from server if version hash is not current by @joetannenbaum in #2342
- Allow custom URL protocols by @mpociot in #2329
- @flexponsive made their first contribution in #2316
- @CTOJoe made their first contribution in #2320
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.8...v2.0.9
v2.0.8 - 2025-04-10
- Add deepMerge Support for Merging Nested Arrays and Objects in Props by @HichemTab-tech in #2069
- fix: build error because of invalid type definitions by @fxnm in #2301
- fix(vue/useForm/defaults): untrack before assign by @Dsaquel in #2112
- Improve type checking of request data by @7nohe in #2304
- Remove empty payload from GET requests by @edgars-vasiljevs in #2305
- @HichemTab-tech made their first contribution in #2069
- @fxnm made their first contribution in #2301
- @Dsaquel made their first contribution in #2112
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.7...v2.0.8
v2.0.7 - 2025-04-08
- Added missing pages to React and Svelte5 playrounds by @Verox001 in #2217
- chore: replace lodash to decrease bundle size by @lcdss in #2210
- do not pass url when storing scroll state to history by @miDeb in #2280
- fix: react
Deferredcomponent error on partial visits by @KaioFelps in #2223 - Bump vite from 5.4.16 to 5.4.17 by @dependabot in #2295
- [2.x] SSR clustering by @RobertBoes in #2206
- Allow Object type for href prop by @nckrtl in #2292
- Update GitHub Actions to Ubuntu 24.04 by @joetannenbaum in #2299
- [2.x]: Support for nested paths in forms by @joaopalopes24 in #2181
- @Verox001 made their first contribution in #2217
- @lcdss made their first contribution in #2210
- @miDeb made their first contribution in #2280
- @KaioFelps made their first contribution in #2223
- @nckrtl made their first contribution in #2292
- @joaopalopes24 made their first contribution in #2181
Full Changelog: https://github.com/inertiajs/inertia/compare/v2.0.6...v2.0.7
- Deferred: More descriptive Deferred data prop error (#2284)
- Bump vite from 5.4.12 to 5.4.16 (#2288)
- Fix location return history decryption throwing error (#2282)
- Make isDirty reactive to defaults (#2236)
- Fix playground WhenVisible always (#2203)
- Wayfinder support (#2290)
- Fix history state errors by nicholaspufal (#2265)
- Bump axios from 1.7.9 to 1.8.2 (#2269)
- Bump esbuild from 0.16.17 to 0.25.0 #2231 (#2231)
- Bump vite from 5.4.11 to 5.4.12 (#2201)
- Fix anchor links on initial visits (#2258)
- Fix: Reload on mount (#2200)
- Fix SSR with scroll restoration (#2190)
- Fix for scroll + back bug (#2191)
- Backport 1.x fixes from v1.3.0 release (#2193)
- Fix playground dependencies (#2070)
- Removed Vitest tests + dependencies (#2175)
- Augment
vueinstead of@vue/runtime-core(#2099) - Fix prefetch missing
cacheFordefault value (#2136) - Fix
useFormre-renders by memoizing functions in React #2146 - WhenVisible useEffect function is not recreated when params change. (#2153)
- Ensure callback execution (#2163)
- More resilient logic for stripping the origin from page URLs (#2164)
- Add helper scripts for running tests (#2173)
- Export
InertiaFormPropsin React (#2161) - Use default empty object in
useFormVue and Svelte (#2052) - Remove
dataoption fromuseFormoptions type (#2060) - Take over scroll restoration from browser (#2051)
- Add polling
- Add link prefetching
- Add deferred props
- Add lazy loading of data when scrolling
- Add history encryption API
- Add React 19 support (#2131)
- Add client side visits (#2130)
- Removal of NProgress dependency (#2045)
- Change TypeScript module resolution in the Svelte adapter (#2035)
- Refactor
createInertiaAppin Svelte adapter (#2036)
- Fix: make Link href prop reactive (#2089)
- Add React 19 support (#2121)
- Add Svelte 5 support (#1970)
- Add TypeScript support to Svelte adapter (#1866, 69292e, #2003, #2005)
- Skip intercepting non-left button clicks on links (#1908, #1910)
- Changed
preserveScrollto betrueon initial page visit (#1360) - Return early when using
router.on()during SSR (#1715) - Use updater function in
setDatainuseFormhook in React adapter (#1859)
- Fix history navigation issue on Chrome iOS (#1984, #1992)
- Fix
setNavigationTypefor Safari 10 (#1957) - Export
InertiaFormPropsin all adapters (#1596, #1734) - Fix
isDirtyafterform.defaults()call in Vue 3 (#1985) - Fix scroll reset on page navigation (#1980)
- Fix scroll position restoration for
[scroll-region]elements (#1782, #1980) - Fix
useFormre-renders by memoizing functions in React adapter (#1607) - Fix doubling hash when using
<React.StrictMode>(#1728) - Fix type augmentation in Vue 3 adapter (#1958)
- Fix form helper
transformreturn type in React adapter (#1896) - Fix props reactivity in Svelte adapter (#1969)
- Fix
<Render />component to respectpreserveStateoption in Svelte adapter (#1943) - Fix 'received an unexpected slot "default"' warning in Svelte adapter (#1941)
- Fix command + click behavior on links in React adapter (#2132)
- Fix import in Svelte adapter (#2002)
- Fix
preserveScrollandpreserveStatetypes (#1882) - Revert "merge props from partial reloads" (#1895)
- Add new
exceptvisit option to exclude props from partial reloads (#1876) - Deep merge props from partial reloads (#1877)
- Fix Svelte 4 slot rendering issues (#1763)
- Fix accessibility warning in Svelte
Linkcomponent (#1858) - Use
Omitinstead ofExcludein router types (#1857)
- Bump axios from
v1.4.0tov1.6.0(#1723)
- Revert "Clear errors on form reset (#1568)" (#1716)
- Fix form helper types for
setDefaults()method (React) anddefaults()method (Vue) (#1504) - Fix interface issue with
useForm()in React and Vue adapters (#1649)
- Fix Svelte's
useFormhelper (#1610)
- Fix
<Head>vNode handling in Vue 3 adapter (#1570) - Fix watching remembered data in Vue 3 adapter (#1571)
- Fix
<Head>fragment detection in Vue 3 adapter (#1509)
- Fix
usePage()null object error in Vue 3 adapter (#1530)
- Fix
usePage()reactivity in Vue 2 adapter (#1527)
- Simplify the Vue 2 form helper (#1529)
- Added
displayNametoLinkcomponent in React adapter (#1512)
- Fix
usePage()reactivity in Vue 3 adapter (#1469)
- Added initialization callback to form helper in Vue adapters (#1516)
- Added explicit children to
InertiaHeadProps(#1448) - Exported
InertiaLinkPropstype (#1450) - Improved React
usePagegeneric type (#1451)
- Fixed Vue type overrides for
$pageand$inertia(#1393) - Restored React
usePagegeneric type (#1396) - Prevented need to use
Methodenum with the Link component (#1392) - Restored Vue 3
usePagegeneric type (#1394) - Fixed export of server types (#1397)
- Updated form types to support nested data (#1401)
- Allowed stronger type support with Vue
useForm(#1413) - Fixed Vue 2
setupprop types (#1418) - Fixed issue when passing multiple children to React
Headcomponent (#1433)
v1.0.0 - 2023-01-14
- Added SSR support to Svelte library (#1349)
- Added first-class TypeScript support to React adapter
- Added first-class TypeScript support to Vue 2 adapter
- Added first-class TypeScript support to Vue 3 adapter
- Added new
useForm()hook to Vue 2 adapter (ff59196)
- Renamed
@inertiajs/inertialibrary to@inertiajs/core(#1282) - Renamed
@inertiajs/inertia-reactlibrary to@inertiajs/react(#1282) - Renamed
@inertiajs/inertia-sveltelibrary to@inertiajs/svelte(#1282) - Renamed
@inertiajs/inertia-vuelibrary to@inertiajs/vue2(#1282) - Renamed
@inertiajs/inertia-vue3library to@inertiajs/vue3(#1282) - Merged progress library to core and deprecated
@inertiajs/progresslibrary (#1282, 0b5f773) - Merged server library to core and deprecated
@inertiajs/serverlibrary (#1282) - Renamed
Inertianamed export torouter(#1282, e556703) - Removed deprecated named exports (#1282, e556703)
- Removed deprecated
appargument fromcreateInertiaApp()in Vue adapters (#1282, 65f8a5f) - Updated axios to 1.x (#1377)
- Simplified
usePage()hook in Vue 3 adapter (#1373) - Improved Svelte
use:inertiaand<Link />component (#1344) - Removed global
visitOptions()hook (#1282, 30908c2) - Switched bundler from Microbundle to ESbuild (f711b46, 8093713, 342312d, c9e12b3)