inertia Documentation

Inertia.js lets you quickly build modern single-page React, Vue and Svelte apps using classic server-side routing and controllers.

8,135 stars TypeScript TypeScript 8 files · ~33,675 tokens
RAW Doc

File: README.md

About Inertia.js

Inertia.js lets builders ship modern single-page applications in React, Vue, or Svelte without building an API. Your backend keeps doing what it already does well: routing, controllers, models, authorization, validation. Instead of returning a template, it returns a page component with its data. Inertia connects the two halves, so a click never triggers a full page reload.

It all stays in one application: one codebase, one router, one source of truth, and the single-page experience your users expect. Fewer moving parts means fewer decisions between an idea and a production application, whether a human or an agent is writing the code.

Everything a real product needs, designed to work together:

  • Page visits, forms, file uploads with progress, and server-side validation
  • Optimistic updates that render before the server responds and roll back if it fails
  • Partial reloads, deferred props, prefetching, polling, and infinite scroll
  • Server-side rendering, code splitting, and view transitions
  • History encryption for pages that hold sensitive data
  • DevTools that show every request, header, and hydrated prop while you build

Adapters

Inertia is the layer between your backend and your frontend, and it works through adapters. It doesn't replace the frameworks you already use, on either side. The React, Vue, and Svelte adapters all live in the inertiajs/inertia repository. On the server, the Laravel adapter is officially maintained, and community adapters cover Rails, Phoenix, Django, Symfony, AdonisJS, Go, .NET, and more.

Laravel's official React, Vue, and Svelte starter kits are built on Inertia. A new application begins with login, registration, password resets, email verification, two-factor authentication, and profile settings already working.

Learning Inertia.js

The documentation takes you from installation to how the protocol works under the hood. Prefer to read code? The demo application is a mini CRM built with Laravel and Vue, with showcase pages for forms, navigation, data loading, prefetching, state management, and error handling. Its source is in the demo-v3 repository.

Deploying Inertia.js

An Inertia application runs anywhere your backend does. The fastest path from idea to production is Laravel Cloud. Connect a repository and you can deploy a app in under a minute. There are no servers to configure, and your asset build and SSR server are handled for you. Add a managed database, cache, or object storage in seconds, with the right environment variables connected for you automatically. With Flex compute, your full stack scales to zero when it's idle and wakes in under 500 milliseconds, which means staging environments and side projects cost nothing while nobody is using them. The Starter plan is $5 a month and comes with $5 in usage credits included. Try Cloud with your first month for free.

Contributing

Thank you for considering contributing to Inertia! You can read the contribution guide here.

Code of Conduct

In order to ensure that the Laravel community is welcoming to all, please review and abide by the Code of Conduct.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

License

Inertia is open-sourced software licensed under the MIT license.


File: CHANGELOG.md

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

For changes prior to v1.0.0, see the legacy releases.

[Unreleased](https://github.com/inertiajs/inertia/compare/v3.9.1...3.x)

  • Nothing yet

[v3.9.1](https://github.com/inertiajs/inertia/compare/v3.9.0...v3.9.1) - 2026-10-09

What's Changed

Full Changelog: https://github.com/inertiajs/inertia/compare/v3.9.0...v3.9.1

[v3.9.0](https://github.com/inertiajs/inertia/compare/v3.8.0...v3.9.0) - 2026-10-09

What's Changed

New Contributors

Full Changelog: https://github.com/inertiajs/inertia/compare/v3.8.0...v3.9.0

[v3.8.0](https://github.com/inertiajs/inertia/compare/v3.7.1...v3.8.0) - 2026-10-01

What's Changed

New Contributors

Full Changelog: https://github.com/inertiajs/inertia/compare/v3.7.1...v3.8.0

[v3.7.1](https://github.com/inertiajs/inertia/compare/v3.7.0...v3.7.1) - 2026-09-11

What's Changed

New Contributors

Full Changelog: https://github.com/inertiajs/inertia/compare/v3.7.0...v3.7.1

[v3.7.0](https://github.com/inertiajs/inertia/compare/v3.6.1...v3.7.0) - 2026-08-18

What's Changed

New Contributors

Full Changelog: https://github.com/inertiajs/inertia/compare/v3.6.1...v3.7.0

[v3.6.1](https://github.com/inertiajs/inertia/compare/v3.6.0...v3.6.1) - 2026-07-07

What's Changed

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

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

New Contributors

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

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

New Contributors

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

New Contributors

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

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

New Contributors

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

New Contributors

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

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

Full Changelog: https://github.com/inertiajs/inertia/compare/v3.0.1...v3.0.2

[v3.0.1](https://github.com/inertiajs/inertia/compare/v3.0.0...v3.0.1) - 2026-03-31

What's Changed

  • [3.x] Update Playgrounds by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3013
  • [3.x] Support anonymous arrow functions as React layout components by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3016
  • [3.x] Fix WhenVisible crash during SSR by @pascalbaljet in https://github.com/inertiajs/inertia/pull/3021
  • [3.x] Remove plain when Head component sets a title by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3022">https://github.com/inertiajs/inertia/pull/3022</a></li> <li>[3.x] Fix <code>defineOptions({ layout: [...] })</code> type error with nested layouts by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3023">https://github.com/inertiajs/inertia/pull/3023</a></li> <li>[3.x] Fix flash data re-firing on partial reloads by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3024">https://github.com/inertiajs/inertia/pull/3024</a></li> <li>[3.x] Warm up SSR module graph on dev server start by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3007">https://github.com/inertiajs/inertia/pull/3007</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v3.0.0...v3.0.1">https://github.com/inertiajs/inertia/compare/v3.0.0...v3.0.1</a></p> <h2 id="v3-0-0-https-github-com-inertiajs-inertia-compare-v2-3-16-v3-0-0-2026-03-25" class="doc-h2"><span>[v3.0.0](https://github.com/inertiajs/inertia/compare/v2.3.16...v3.0.0) - 2026-03-25</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v3.0.0](https://github.com/inertiajs/inertia/compare/v2.3.16...v3.0.0) - 2026-03-25')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>[3.x] Drop support for Svelte 4 by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2713">https://github.com/inertiajs/inertia/pull/2713</a></li> <li>[3.x] Remove qs dependency by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2791">https://github.com/inertiajs/inertia/pull/2791</a></li> <li>[3.x] Svelte 5 Adapter based on #2586 by <a href="https://github.com/puRe1337">@puRe1337</a> in <a href="https://github.com/inertiajs/inertia/pull/2677">https://github.com/inertiajs/inertia/pull/2677</a></li> <li>[3.x] Drop support for React < 19 by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2712">https://github.com/inertiajs/inertia/pull/2712</a></li> <li>[3.x] Pass props as second argument to resolve() in createInertiaApp() by <a href="https://github.com/HichemTab-tech">@HichemTab-tech</a> in <a href="https://github.com/inertiajs/inertia/pull/2485">https://github.com/inertiajs/inertia/pull/2485</a></li> <li>[3.x] Only reset useForm processing and progress with onFinish by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2838">https://github.com/inertiajs/inertia/pull/2838</a></li> <li>[3.x] Bump Node.js to v24 + Bump GitHub CI Actions by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2847">https://github.com/inertiajs/inertia/pull/2847</a></li> <li>[3.x] Remove unused <code>pendingVisitOptions</code> parameter by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2853">https://github.com/inertiajs/inertia/pull/2853</a></li> <li>[3.x] Remove <code>hideProgress()</code> and <code>revealProgress()</code> exports by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2852">https://github.com/inertiajs/inertia/pull/2852</a></li> <li>[3.x] Svelte 5 improvements by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2863">https://github.com/inertiajs/inertia/pull/2863</a></li> <li>[3.x] Built-in XHR HTTP client + make Axios an optional peer dependency by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2833">https://github.com/inertiajs/inertia/pull/2833</a></li> <li>[3.x] Add <code>useHttp</code> hook for standalone HTTP requests by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2840">https://github.com/inertiajs/inertia/pull/2840</a></li> <li>[3.x] Generics in <code><Form></code> Component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2849">https://github.com/inertiajs/inertia/pull/2849</a></li> <li>[3.x] Add layout props helpers by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2859">https://github.com/inertiajs/inertia/pull/2859</a></li> <li>[3.x] Upgrade Svelte playground to Svelte 5 syntax by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2868">https://github.com/inertiajs/inertia/pull/2868</a></li> <li>[3.x] Migrate <code>future</code> options to be new defaults by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2867">https://github.com/inertiajs/inertia/pull/2867</a></li> <li>[3.x] Add <code>reloading</code> slot prop to <code><Deferred></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2860">https://github.com/inertiajs/inertia/pull/2860</a></li> <li>[3.x] Rename <code>useDataElementForInitialPage</code> to <code>useDataAttributeForInitialPage</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2871">https://github.com/inertiajs/inertia/pull/2871</a></li> <li>[3.x] Add <code>preserveErrors</code> option to preserve validation errors during partial requests by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2819">https://github.com/inertiajs/inertia/pull/2819</a></li> <li>[3.x] SSR support in Vite development mode + simplified setup by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2864">https://github.com/inertiajs/inertia/pull/2864</a></li> <li>[3.x] Rename <code>invalid</code> and <code>exception</code> events and add visit callbacks by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2869">https://github.com/inertiajs/inertia/pull/2869</a></li> <li>[3.x] Optimistic updates for <code>router</code>, <code>useForm</code>, and <code>useHttp</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2866">https://github.com/inertiajs/inertia/pull/2866</a></li> <li>[3.x] Streamline adapter <code>index.ts</code> exports by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2872">https://github.com/inertiajs/inertia/pull/2872</a></li> <li>[3.x] Drop CJS builds in favor of ESM-only output by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2873">https://github.com/inertiajs/inertia/pull/2873</a></li> <li>[3.x] Use Precognition 2.x and bump all deps by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2877">https://github.com/inertiajs/inertia/pull/2877</a></li> <li>[3.x] Support for <code>withAllErrors</code> in <code>useHttp</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2880">https://github.com/inertiajs/inertia/pull/2880</a></li> <li>[3.x] Add <code>optimistic</code> prop to <code><Form></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2881">https://github.com/inertiajs/inertia/pull/2881</a></li> <li>[3.x] Add test for named layout persistence across navigations by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2882">https://github.com/inertiajs/inertia/pull/2882</a></li> <li>[3.x] Allow calling <code>createInertiaApp()</code> without arguments by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2883">https://github.com/inertiajs/inertia/pull/2883</a></li> <li>[3.x] Add <code>layout</code> option to <code>createInertiaApp()</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2884">https://github.com/inertiajs/inertia/pull/2884</a></li> <li>[3.x] Update Playgrounds by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2885">https://github.com/inertiajs/inertia/pull/2885</a></li> <li>[3.x] Add a singleton for the usePage function by <a href="https://github.com/DavidCCoimbra">@DavidCCoimbra</a> in <a href="https://github.com/inertiajs/inertia/pull/2874">https://github.com/inertiajs/inertia/pull/2874</a></li> <li>[3.x] Remove <code>legacy.useDataAttributeForInitialPage</code> config option by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2887">https://github.com/inertiajs/inertia/pull/2887</a></li> <li>[3.x] Concurrent optimistic updates by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2898">https://github.com/inertiajs/inertia/pull/2898</a></li> <li>[3.x] Preserve URL fragment across redirects with server-side <code>preserveFragment</code> option by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2897">https://github.com/inertiajs/inertia/pull/2897</a></li> <li>[3.x] Hash fragment redirect support by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2899">https://github.com/inertiajs/inertia/pull/2899</a></li> <li>[3.x] Support nested dot-notation prop types by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2901">https://github.com/inertiajs/inertia/pull/2901</a></li> <li>[3.x] Add strictMode option to React's createInertiaApp by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2909">https://github.com/inertiajs/inertia/pull/2909</a></li> <li>[3.x] Fix FOUC during SSR development by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2911">https://github.com/inertiajs/inertia/pull/2911</a></li> <li>[3.x] Make <code>clearHistory</code> and <code>encryptHistory</code> optional in page object by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2908">https://github.com/inertiajs/inertia/pull/2908</a></li> <li>[3.x] Instant visits by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2907">https://github.com/inertiajs/inertia/pull/2907</a></li> <li>Include resources directory in published packages by <a href="https://github.com/pushpak1300">@pushpak1300</a> in <a href="https://github.com/inertiajs/inertia/pull/2914">https://github.com/inertiajs/inertia/pull/2914</a></li> <li>[3.x] Consolidate SSR error handling by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2915">https://github.com/inertiajs/inertia/pull/2915</a></li> <li>[3.x] Use the popover API for the progress bar by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2917">https://github.com/inertiajs/inertia/pull/2917</a></li> <li>[3.x] Minor clean up core package by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2918">https://github.com/inertiajs/inertia/pull/2918</a></li> <li>[3.x] Fix axios adapter being required by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2926">https://github.com/inertiajs/inertia/pull/2926</a></li> <li>[3.x] Fire <code>onHttpException</code> for server-rendered Inertia error pages by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2927">https://github.com/inertiajs/inertia/pull/2927</a></li> <li>[3.x] Fix duplicate base path in Vite SSR CSS link URLs by <a href="https://github.com/isaackaara">@isaackaara</a> in <a href="https://github.com/inertiajs/inertia/pull/2936">https://github.com/inertiajs/inertia/pull/2936</a></li> <li>[3.x] Populate global page store during Svelte 5 SSR by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2938">https://github.com/inertiajs/inertia/pull/2938</a></li> <li>[3.x] Stop collecting CSS sub-dependencies during SSR by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2937">https://github.com/inertiajs/inertia/pull/2937</a></li> <li>[v3.x] refactor(svelte)!: migrate useLayoutProps from stores to runes by <a href="https://github.com/peaklabs-dev">@peaklabs-dev</a> in <a href="https://github.com/inertiajs/inertia/pull/2944">https://github.com/inertiajs/inertia/pull/2944</a></li> <li>[3.x] fix: remove request from stream on network failure by <a href="https://github.com/Anthony14FR">@Anthony14FR</a> in <a href="https://github.com/inertiajs/inertia/pull/2940">https://github.com/inertiajs/inertia/pull/2940</a></li> <li>[3.x] Support more createInertiaApp() patterns in SSR transform by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2929">https://github.com/inertiajs/inertia/pull/2929</a></li> <li>[v3.x] fix(types): module augmentation example by <a href="https://github.com/peaklabs-dev">@peaklabs-dev</a> in <a href="https://github.com/inertiajs/inertia/pull/2945">https://github.com/inertiajs/inertia/pull/2945</a></li> <li>[3.x] Convert Vue adapter components to Composition API by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2947">https://github.com/inertiajs/inertia/pull/2947</a></li> <li>[3.x] fix: always fire flash event regardless of partial reload equality by <a href="https://github.com/Anthony14FR">@Anthony14FR</a> in <a href="https://github.com/inertiajs/inertia/pull/2941">https://github.com/inertiajs/inertia/pull/2941</a></li> <li>[3.x] Include <code>SharedPageProps</code> in <code>createInertiaApp</code> and event types by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2956">https://github.com/inertiajs/inertia/pull/2956</a></li> <li>[3.x] Add <code>withApp</code> callback to <code>createInertiaApp</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2949">https://github.com/inertiajs/inertia/pull/2949</a></li> <li>[3.x] fix(type): add Record<string, string> to UrlMethodPair type by <a href="https://github.com/stafast">@stafast</a> in <a href="https://github.com/inertiajs/inertia/pull/2952">https://github.com/inertiajs/inertia/pull/2952</a></li> <li>[3.x] Improve optimistic update rollback with multiple pending requests by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2958">https://github.com/inertiajs/inertia/pull/2958</a></li> <li>[3.x] Prevent useHttp from parsing empty 204 responses by <a href="https://github.com/entity">@entity</a> in <a href="https://github.com/inertiajs/inertia/pull/2967">https://github.com/inertiajs/inertia/pull/2967</a></li> <li>[3.x] Include <code>SharedPageProps</code> in optimistic update callback types by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2968">https://github.com/inertiajs/inertia/pull/2968</a></li> <li>[3.x] Test SSR across multiple Node.js versions in CI by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2969">https://github.com/inertiajs/inertia/pull/2969</a></li> <li>[3.x] Migrate from <code>lodash-es</code> to <code>es-toolkit</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2973">https://github.com/inertiajs/inertia/pull/2973</a></li> <li>[3.x] Add Vite 8 support, drop Vite 6 by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2974">https://github.com/inertiajs/inertia/pull/2974</a></li> <li>[3.x] Fix Infinite Scroll SSR hydration by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2975">https://github.com/inertiajs/inertia/pull/2975</a></li> <li>[3.x] Simplify layout props by passing them directly as component prop by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2972">https://github.com/inertiajs/inertia/pull/2972</a></li> <li>[3.x] Improve form state stability by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2976">https://github.com/inertiajs/inertia/pull/2976</a></li> <li>[3.x] Allow overriding <code>useHttp</code> response type per method call by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2979">https://github.com/inertiajs/inertia/pull/2979</a></li> <li>Revert "[3.x] Allow overriding <code>useHttp</code> response type per method call" by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2980">https://github.com/inertiajs/inertia/pull/2980</a></li> <li>[3.x] Fix React form not re-rendering memoized children on <code>setData</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2986">https://github.com/inertiajs/inertia/pull/2986</a></li> <li>[3.x] Update Boost skills by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2987">https://github.com/inertiajs/inertia/pull/2987</a></li> <li>[3.x] Add generic type inference for <Form> <code>optimistic</code> and <code>transform</code> callbacks by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2990">https://github.com/inertiajs/inertia/pull/2990</a></li> <li>[3.x] Cleanup of <code>server.js</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2991">https://github.com/inertiajs/inertia/pull/2991</a></li> <li>[3.x] Clean up leftover <code>snapshotRef</code> in <code>useFormState</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2992">https://github.com/inertiajs/inertia/pull/2992</a></li> <li>[3.x] Additional Vite tests by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2994">https://github.com/inertiajs/inertia/pull/2994</a></li> <li>[3.x] Svelte linting fixes by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2995">https://github.com/inertiajs/inertia/pull/2995</a></li> <li>[3.x] Rename <code>networkError</code> event detail key to <code>error</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2996">https://github.com/inertiajs/inertia/pull/2996</a></li> <li>[3.x] Fix <code>PagesOption</code> type and make <code>setup</code>/<code>withApp</code> mutually exclusive by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2997">https://github.com/inertiajs/inertia/pull/2997</a></li> <li>[3.x] Guard against <code>void</code> return from <code>useHttp</code> optimistic callback by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3001">https://github.com/inertiajs/inertia/pull/3001</a></li> <li>[3.x] Fix Svelte Form ignoring global <code>withAllErrors</code> config by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2998">https://github.com/inertiajs/inertia/pull/2998</a></li> <li>[3.x] Add <code>HttpError</code> base class by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2999">https://github.com/inertiajs/inertia/pull/2999</a></li> <li>[3.x] Rename <code>handleErrors</code> SSR option to <code>formatErrors</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3000">https://github.com/inertiajs/inertia/pull/3000</a></li> <li>[3.x] Remove deprecated router.cancel() method by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3002">https://github.com/inertiajs/inertia/pull/3002</a></li> <li>[3.x] Bump Precognition package by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3006">https://github.com/inertiajs/inertia/pull/3006</a></li> <li>[3.x] Refactor Layout Props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/3005">https://github.com/inertiajs/inertia/pull/3005</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/puRe1337">@puRe1337</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2677">https://github.com/inertiajs/inertia/pull/2677</a></li> <li><a href="https://github.com/DavidCCoimbra">@DavidCCoimbra</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2874">https://github.com/inertiajs/inertia/pull/2874</a></li> <li><a href="https://github.com/Anthony14FR">@Anthony14FR</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2940">https://github.com/inertiajs/inertia/pull/2940</a></li> <li><a href="https://github.com/stafast">@stafast</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2952">https://github.com/inertiajs/inertia/pull/2952</a></li> <li><a href="https://github.com/entity">@entity</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2967">https://github.com/inertiajs/inertia/pull/2967</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.16...v3.0.0">https://github.com/inertiajs/inertia/compare/v2.3.16...v3.0.0</a></p> <h2 id="v2-3-16-https-github-com-inertiajs-inertia-compare-v2-3-15-v2-3-16-2026-02-24" class="doc-h2"><span>[v2.3.16](https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16) - 2026-02-24</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.16](https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16) - 2026-02-24')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump <a href="https://github.com/sveltejs">@sveltejs</a>/kit from 2.50.2 to 2.52.2 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2904">https://github.com/inertiajs/inertia/pull/2904</a></li> <li>Add Boost Guidelines & Skills by <a href="https://github.com/pushpak1300">@pushpak1300</a> in <a href="https://github.com/inertiajs/inertia/pull/2896">https://github.com/inertiajs/inertia/pull/2896</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/pushpak1300">@pushpak1300</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2896">https://github.com/inertiajs/inertia/pull/2896</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16">https://github.com/inertiajs/inertia/compare/v2.3.15...v2.3.16</a></p> <h2 id="v2-3-15-https-github-com-inertiajs-inertia-compare-v2-3-14-v2-3-15-2026-02-13" class="doc-h2"><span>[v2.3.15](https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15) - 2026-02-13</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.15](https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15) - 2026-02-13')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump axios from 1.13.2 to 1.13.5 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2888">https://github.com/inertiajs/inertia/pull/2888</a></li> <li>[2.x] Fix flash data being cleared by <code>history.replaceState</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2889">https://github.com/inertiajs/inertia/pull/2889</a></li> <li>[2.x] Handle <code>bfcache</code> restoration for encrypted history by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2890">https://github.com/inertiajs/inertia/pull/2890</a></li> <li>[2.x] Bump dependencies by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2891">https://github.com/inertiajs/inertia/pull/2891</a></li> <li>[2.x] Fix InfiniteScroll loading all pages in reverse mode with flex/grid layouts by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2893">https://github.com/inertiajs/inertia/pull/2893</a></li> <li>[2.x] Improve flaky tests and test app quality by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2895">https://github.com/inertiajs/inertia/pull/2895</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15">https://github.com/inertiajs/inertia/compare/v2.3.14...v2.3.15</a></p> <h2 id="v2-3-14-https-github-com-inertiajs-inertia-compare-v2-3-13-v2-3-14-2026-02-11" class="doc-h2"><span>[v2.3.14](https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14) - 2026-02-11</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.14](https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14) - 2026-02-11')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>[2.x] Shut down entire cluster on SSR shutdown by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2876">https://github.com/inertiajs/inertia/pull/2876</a></li> <li>[2.x] Fix <code>useForm</code> type inference when passing data as callback by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2878">https://github.com/inertiajs/inertia/pull/2878</a></li> <li>Add global configuration support for withAllErrors in form components by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2865">https://github.com/inertiajs/inertia/pull/2865</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14">https://github.com/inertiajs/inertia/compare/v2.3.13...v2.3.14</a></p> <h2 id="v2-3-13-https-github-com-inertiajs-inertia-compare-v2-3-12-v2-3-13-2026-01-30" class="doc-h2"><span>[v2.3.13](https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13) - 2026-01-30</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.13](https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13) - 2026-01-30')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix <code>useForm</code> type inference in generic wrapper components by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2851">https://github.com/inertiajs/inertia/pull/2851</a></li> <li>Support wildcard paths in <code>validate()</code> method by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2854">https://github.com/inertiajs/inertia/pull/2854</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13">https://github.com/inertiajs/inertia/compare/v2.3.12...v2.3.13</a></p> <h2 id="v2-3-12-https-github-com-inertiajs-inertia-compare-v2-3-11-v2-3-12-2026-01-27" class="doc-h2"><span>[v2.3.12](https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12) - 2026-01-27</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.12](https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12) - 2026-01-27')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump lodash from 4.17.21 to 4.17.23 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2835">https://github.com/inertiajs/inertia/pull/2835</a></li> <li>Bump lodash-es from 4.17.22 to 4.17.23 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2836">https://github.com/inertiajs/inertia/pull/2836</a></li> <li>Fix cancellation of concurrent partial reloads with query parameters by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2843">https://github.com/inertiajs/inertia/pull/2843</a></li> <li>Support for the <code>formTarget</code> attribute in the <code><Form></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2844">https://github.com/inertiajs/inertia/pull/2844</a></li> <li>Clear stale form errors on resubmit by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2845">https://github.com/inertiajs/inertia/pull/2845</a></li> <li>Prevent <code><Deferred></code> from rendering children with undefined props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2846">https://github.com/inertiajs/inertia/pull/2846</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12">https://github.com/inertiajs/inertia/compare/v2.3.11...v2.3.12</a></p> <h2 id="v2-3-11-https-github-com-inertiajs-inertia-compare-v2-3-10-v2-3-11-2026-01-20" class="doc-h2"><span>[v2.3.11](https://github.com/inertiajs/inertia/compare/v2.3.10...v2.3.11) - 2026-01-20</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.11](https://github.com/inertiajs/inertia/compare/v2.3.10...v2.3.11) - 2026-01-20')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump and cleanup dependencies by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2822">https://github.com/inertiajs/inertia/pull/2822</a></li> <li>Add test for Precognition validation with transform key changes by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2827">https://github.com/inertiajs/inertia/pull/2827</a></li> <li>TS and console error on conflicting <code>useForm()</code> keys by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2823">https://github.com/inertiajs/inertia/pull/2823</a></li> <li>Allow <code>useForm</code> without arguments by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2830">https://github.com/inertiajs/inertia/pull/2830</a></li> <li>Pass <code>true</code> to <code>inert</code> attribute in React 19 by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2831">https://github.com/inertiajs/inertia/pull/2831</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.10...v2.3.11">https://github.com/inertiajs/inertia/compare/v2.3.10...v2.3.11</a></p> <h2 id="v2-3-10-https-github-com-inertiajs-inertia-compare-v2-3-9-v2-3-10-2026-01-15" class="doc-h2"><span>[v2.3.10](https://github.com/inertiajs/inertia/compare/v2.3.9...v2.3.10) - 2026-01-15</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.10](https://github.com/inertiajs/inertia/compare/v2.3.9...v2.3.10) - 2026-01-15')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Add <code>async</code> and <code>sync</code> options to <code>cancelAll</code> method by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2814">https://github.com/inertiajs/inertia/pull/2814</a></li> <li>Fix smooth scrolling in Firefox and add Firefox to CI by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2815">https://github.com/inertiajs/inertia/pull/2815</a></li> <li>Improve flaky `` test in WebKit CI by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2818">https://github.com/inertiajs/inertia/pull/2818</a></li> <li>Pass <code>onceProps</code> as second argument in client-side visit props callback by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2816">https://github.com/inertiajs/inertia/pull/2816</a></li> <li>Prevent converting a string response to an object by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2821">https://github.com/inertiajs/inertia/pull/2821</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.9...v2.3.10">https://github.com/inertiajs/inertia/compare/v2.3.9...v2.3.10</a></p> <h2 id="v2-3-9-https-github-com-inertiajs-inertia-compare-v2-3-8-v2-3-9-2026-01-14" class="doc-h2"><span>[v2.3.9](https://github.com/inertiajs/inertia/compare/v2.3.8...v2.3.9) - 2026-01-14</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.9](https://github.com/inertiajs/inertia/compare/v2.3.8...v2.3.9) - 2026-01-14')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix React Precognition Error Sync (issue #2806) by <a href="https://github.com/joetifa2003">@joetifa2003</a> in <a href="https://github.com/inertiajs/inertia/pull/2808">https://github.com/inertiajs/inertia/pull/2808</a></li> <li>Add tests for deferred scroll props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2811">https://github.com/inertiajs/inertia/pull/2811</a></li> <li>Fix deferred props not loading after back button navigation by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2812">https://github.com/inertiajs/inertia/pull/2812</a></li> <li>Add test for concurrent reloads by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2813">https://github.com/inertiajs/inertia/pull/2813</a></li> <li>Cancel in-flight deferred prop requests on navigation by <a href="https://github.com/alexspeller">@alexspeller</a> in <a href="https://github.com/inertiajs/inertia/pull/2656">https://github.com/inertiajs/inertia/pull/2656</a></li> <li>fix: preserve query parameters in test server responses by <a href="https://github.com/alexspeller">@alexspeller</a> in <a href="https://github.com/inertiajs/inertia/pull/2665">https://github.com/inertiajs/inertia/pull/2665</a></li> <li>[2.x] Add Form Context Support by <a href="https://github.com/laserhybiz">@laserhybiz</a> in <a href="https://github.com/inertiajs/inertia/pull/2671">https://github.com/inertiajs/inertia/pull/2671</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/joetifa2003">@joetifa2003</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2808">https://github.com/inertiajs/inertia/pull/2808</a></li> <li><a href="https://github.com/alexspeller">@alexspeller</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2656">https://github.com/inertiajs/inertia/pull/2656</a></li> <li><a href="https://github.com/laserhybiz">@laserhybiz</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2671">https://github.com/inertiajs/inertia/pull/2671</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.8...v2.3.9">https://github.com/inertiajs/inertia/compare/v2.3.8...v2.3.9</a></p> <h2 id="v2-3-8-https-github-com-inertiajs-inertia-compare-v2-3-7-v2-3-8-2026-01-09" class="doc-h2"><span>[v2.3.8](https://github.com/inertiajs/inertia/compare/v2.3.7...v2.3.8) - 2026-01-09</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.8](https://github.com/inertiajs/inertia/compare/v2.3.7...v2.3.8) - 2026-01-09')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>fix: update has more state when resetting before updating page by <a href="https://github.com/AydinHassan">@AydinHassan</a> in <a href="https://github.com/inertiajs/inertia/pull/2787">https://github.com/inertiajs/inertia/pull/2787</a></li> <li>Ensure Flash Data listener is registered before event is fired by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2799">https://github.com/inertiajs/inertia/pull/2799</a></li> <li>Improve indices detection in <code>mergeDataIntoQueryString()</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2798">https://github.com/inertiajs/inertia/pull/2798</a></li> <li>Fix <code><WhenVisible></code> re-registering observer when params change by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2804">https://github.com/inertiajs/inertia/pull/2804</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/AydinHassan">@AydinHassan</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2787">https://github.com/inertiajs/inertia/pull/2787</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.7...v2.3.8">https://github.com/inertiajs/inertia/compare/v2.3.7...v2.3.8</a></p> <h2 id="v2-3-7-https-github-com-inertiajs-inertia-compare-v2-3-6-v2-3-7-2026-01-07" class="doc-h2"><span>[v2.3.7](https://github.com/inertiajs/inertia/compare/v2.3.6...v2.3.7) - 2026-01-07</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.7](https://github.com/inertiajs/inertia/compare/v2.3.6...v2.3.7) - 2026-01-07')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Add <code>dontRemember()</code> method to form helper by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2792">https://github.com/inertiajs/inertia/pull/2792</a></li> <li>Only call <code>replaceState()</code> when page data has actually changed by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2793">https://github.com/inertiajs/inertia/pull/2793</a></li> <li>Fix <code>@typescript-eslint/unbound-method</code> warning when destructuring <code>useForm()</code> methods by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2794">https://github.com/inertiajs/inertia/pull/2794</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.6...v2.3.7">https://github.com/inertiajs/inertia/compare/v2.3.6...v2.3.7</a></p> <h2 id="v2-3-6-https-github-com-inertiajs-inertia-compare-v2-3-5-v2-3-6-2025-12-31" class="doc-h2"><span>[v2.3.6](https://github.com/inertiajs/inertia/compare/v2.3.5...v2.3.6) - 2025-12-31</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.6](https://github.com/inertiajs/inertia/compare/v2.3.5...v2.3.6) - 2025-12-31')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump qs from 6.14.0 to 6.14.1 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2790">https://github.com/inertiajs/inertia/pull/2790</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.5...v2.3.6">https://github.com/inertiajs/inertia/compare/v2.3.5...v2.3.6</a></p> <h2 id="v2-3-5-https-github-com-inertiajs-inertia-compare-v2-3-4-v2-3-5-2025-12-31" class="doc-h2"><span>[v2.3.5](https://github.com/inertiajs/inertia/compare/v2.3.4...v2.3.5) - 2025-12-31</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.5](https://github.com/inertiajs/inertia/compare/v2.3.4...v2.3.5) - 2025-12-31')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Refresh the Infinite Scroll triggers after partial reload by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2784">https://github.com/inertiajs/inertia/pull/2784</a></li> <li>Fix <code>hasAnyState()</code> to actually check for browser history by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2785">https://github.com/inertiajs/inertia/pull/2785</a></li> <li>Handle WebKit history throttle errors by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2786">https://github.com/inertiajs/inertia/pull/2786</a></li> <li>Merge <code>data</code> and <code>params</code> props in <code><WhenVisible></code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2789">https://github.com/inertiajs/inertia/pull/2789</a></li> <li>Handle <code>QuotaExceededError</code> in WebKit by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2788">https://github.com/inertiajs/inertia/pull/2788</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.4...v2.3.5">https://github.com/inertiajs/inertia/compare/v2.3.4...v2.3.5</a></p> <h2 id="v2-3-4-https-github-com-inertiajs-inertia-compare-v2-3-3-v2-3-4-2025-12-19" class="doc-h2"><span>[v2.3.4](https://github.com/inertiajs/inertia/compare/v2.3.3...v2.3.4) - 2025-12-19</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.4](https://github.com/inertiajs/inertia/compare/v2.3.3...v2.3.4) - 2025-12-19')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Only restore Infinite Scroll state from history on back/forward navigation by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2777">https://github.com/inertiajs/inertia/pull/2777</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.3...v2.3.4">https://github.com/inertiajs/inertia/compare/v2.3.3...v2.3.4</a></p> <h2 id="v2-3-3-https-github-com-inertiajs-inertia-compare-v2-3-2-v2-3-3-2025-12-17" class="doc-h2"><span>[v2.3.3](https://github.com/inertiajs/inertia/compare/v2.3.2...v2.3.3) - 2025-12-17</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.3](https://github.com/inertiajs/inertia/compare/v2.3.2...v2.3.3) - 2025-12-17')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Add support for protocol-relative urls in url.ts by <a href="https://github.com/machour">@machour</a> in <a href="https://github.com/inertiajs/inertia/pull/2769">https://github.com/inertiajs/inertia/pull/2769</a></li> <li>Fix brackets notation qs parsing by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2722">https://github.com/inertiajs/inertia/pull/2722</a></li> <li>Support for Flash Data by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2757">https://github.com/inertiajs/inertia/pull/2757</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/machour">@machour</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2769">https://github.com/inertiajs/inertia/pull/2769</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.2...v2.3.3">https://github.com/inertiajs/inertia/compare/v2.3.2...v2.3.3</a></p> <h2 id="v2-3-2-https-github-com-inertiajs-inertia-compare-v2-3-1-v2-3-2-2025-12-16" class="doc-h2"><span>[v2.3.2](https://github.com/inertiajs/inertia/compare/v2.3.1...v2.3.2) - 2025-12-16</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.2](https://github.com/inertiajs/inertia/compare/v2.3.1...v2.3.2) - 2025-12-16')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Expose InertiaPrecognitiveForm type by <a href="https://github.com/lcdss">@lcdss</a> in <a href="https://github.com/inertiajs/inertia/pull/2756">https://github.com/inertiajs/inertia/pull/2756</a></li> <li>Test for loading deferred props on <code>router.reload()</code> without <code>only</code>/<code>except</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2761">https://github.com/inertiajs/inertia/pull/2761</a></li> <li>Expose <code>fetching</code> in default <code><WhenVisible></code> slot by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2766">https://github.com/inertiajs/inertia/pull/2766</a></li> <li>Include submitter element value in Form component submission by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2770">https://github.com/inertiajs/inertia/pull/2770</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.1...v2.3.2">https://github.com/inertiajs/inertia/compare/v2.3.1...v2.3.2</a></p> <h2 id="v2-3-1-https-github-com-inertiajs-inertia-compare-v2-3-0-v2-3-1-2025-12-12" class="doc-h2"><span>[v2.3.1](https://github.com/inertiajs/inertia/compare/v2.3.0...v2.3.1) - 2025-12-12</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.1](https://github.com/inertiajs/inertia/compare/v2.3.0...v2.3.1) - 2025-12-12')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Test for Form + Vue Options API by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2750">https://github.com/inertiajs/inertia/pull/2750</a></li> <li>Fix for validating items in dynamic arrays by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2753">https://github.com/inertiajs/inertia/pull/2753</a></li> <li>Escape forward slashes when using useScriptElementForInitialPage by <a href="https://github.com/kirk-loretz-fsn">@kirk-loretz-fsn</a> in <a href="https://github.com/inertiajs/inertia/pull/2751">https://github.com/inertiajs/inertia/pull/2751</a></li> <li>Sync Playground configs by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2754">https://github.com/inertiajs/inertia/pull/2754</a></li> <li>Fix race condition when restoring scroll regions by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2755">https://github.com/inertiajs/inertia/pull/2755</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/kirk-loretz-fsn">@kirk-loretz-fsn</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2751">https://github.com/inertiajs/inertia/pull/2751</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.3.0...v2.3.1">https://github.com/inertiajs/inertia/compare/v2.3.0...v2.3.1</a></p> <h2 id="v2-3-0-https-github-com-inertiajs-inertia-compare-v2-2-21-v2-3-0-2025-12-11" class="doc-h2"><span>[v2.3.0](https://github.com/inertiajs/inertia/compare/v2.2.21...v2.3.0) - 2025-12-11</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.3.0](https://github.com/inertiajs/inertia/compare/v2.2.21...v2.3.0) - 2025-12-11')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Support for Precognition in <code>useForm()</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2684">https://github.com/inertiajs/inertia/pull/2684</a></li> <li>Support for Precognition in <code><Form></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2700">https://github.com/inertiajs/inertia/pull/2700</a></li> <li>Improve Precognition examples in Playgrounds by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2746">https://github.com/inertiajs/inertia/pull/2746</a></li> <li>Improve flaky tests by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2747">https://github.com/inertiajs/inertia/pull/2747</a></li> <li>bugfix(whenVisible-vue): Fix loaded state when data already exists by <a href="https://github.com/ClaraLeigh">@ClaraLeigh</a> in <a href="https://github.com/inertiajs/inertia/pull/2748">https://github.com/inertiajs/inertia/pull/2748</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/ClaraLeigh">@ClaraLeigh</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2748">https://github.com/inertiajs/inertia/pull/2748</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.21...v2.3.0">https://github.com/inertiajs/inertia/compare/v2.2.21...v2.3.0</a></p> <h2 id="v2-2-21-https-github-com-inertiajs-inertia-compare-v2-2-20-v2-2-21-2025-12-10" class="doc-h2"><span>[v2.2.21](https://github.com/inertiajs/inertia/compare/v2.2.20...v2.2.21) - 2025-12-10</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.21](https://github.com/inertiajs/inertia/compare/v2.2.20...v2.2.21) - 2025-12-10')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Add <code>viewTransition</code> to <code>FormComponentOptions</code> type by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2741">https://github.com/inertiajs/inertia/pull/2741</a></li> <li>Preserve untouched Once Props on Partial Reload + Once Props in Playground by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2743">https://github.com/inertiajs/inertia/pull/2743</a></li> <li>Only preserve loaded Deferred + Once props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2745">https://github.com/inertiajs/inertia/pull/2745</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.20...v2.2.21">https://github.com/inertiajs/inertia/compare/v2.2.20...v2.2.21</a></p> <h2 id="v2-2-20-https-github-com-inertiajs-inertia-compare-v2-2-19-v2-2-20-2025-12-09" class="doc-h2"><span>[v2.2.20](https://github.com/inertiajs/inertia/compare/v2.2.19...v2.2.20) - 2025-12-09</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.20](https://github.com/inertiajs/inertia/compare/v2.2.19...v2.2.20) - 2025-12-09')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump express from 5.1.0 to 5.2.0 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2727">https://github.com/inertiajs/inertia/pull/2727</a></li> <li>Add tests for SSR server by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2730">https://github.com/inertiajs/inertia/pull/2730</a></li> <li>Preserve errors when loading deferred props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2729">https://github.com/inertiajs/inertia/pull/2729</a></li> <li>Optimize page data size and parsing (37% size reduction!) by <a href="https://github.com/bram-pkg">@bram-pkg</a> in <a href="https://github.com/inertiajs/inertia/pull/2687">https://github.com/inertiajs/inertia/pull/2687</a></li> <li>Support for <code>once()</code> props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2732">https://github.com/inertiajs/inertia/pull/2732</a></li> <li>Fix for sequential Client Side Visits by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2737">https://github.com/inertiajs/inertia/pull/2737</a></li> <li>Refactor duplicated initial page code by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2738">https://github.com/inertiajs/inertia/pull/2738</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/bram-pkg">@bram-pkg</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2687">https://github.com/inertiajs/inertia/pull/2687</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.19...v2.2.20">https://github.com/inertiajs/inertia/compare/v2.2.19...v2.2.20</a></p> <h2 id="v2-2-19-https-github-com-inertiajs-inertia-compare-v2-2-18-v2-2-19-2025-11-27" class="doc-h2"><span>[v2.2.19](https://github.com/inertiajs/inertia/compare/v2.2.18...v2.2.19) - 2025-11-27</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.19](https://github.com/inertiajs/inertia/compare/v2.2.18...v2.2.19) - 2025-11-27')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump dependencies by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2710">https://github.com/inertiajs/inertia/pull/2710</a></li> <li>TypeScript fix accessing error keys of optional nested object by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2718">https://github.com/inertiajs/inertia/pull/2718</a></li> <li>Use FormValue in Form component by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2709">https://github.com/inertiajs/inertia/pull/2709</a></li> <li>Fix anchor hash scrolling on initial page visit in React by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2719">https://github.com/inertiajs/inertia/pull/2719</a></li> <li>Ensure page is rendered before scrolling to top by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2721">https://github.com/inertiajs/inertia/pull/2721</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.18...v2.2.19">https://github.com/inertiajs/inertia/compare/v2.2.18...v2.2.19</a></p> <h2 id="v2-2-18-https-github-com-inertiajs-inertia-compare-v2-2-17-v2-2-18-2025-11-17" class="doc-h2"><span>[v2.2.18](https://github.com/inertiajs/inertia/compare/v2.2.17...v2.2.18) - 2025-11-17</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.18](https://github.com/inertiajs/inertia/compare/v2.2.17...v2.2.18) - 2025-11-17')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Ensure <code>objectsAreEqual()</code> checks all keys in both objects by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2705">https://github.com/inertiajs/inertia/pull/2705</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.17...v2.2.18">https://github.com/inertiajs/inertia/compare/v2.2.17...v2.2.18</a></p> <h2 id="v2-2-17-https-github-com-inertiajs-inertia-compare-v2-2-16-v2-2-17-2025-11-14" class="doc-h2"><span>[v2.2.17](https://github.com/inertiajs/inertia/compare/v2.2.16...v2.2.17) - 2025-11-14</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.17](https://github.com/inertiajs/inertia/compare/v2.2.16...v2.2.17) - 2025-11-14')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Reset <code><WhenVisible></code> loading state after a page reload by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2699">https://github.com/inertiajs/inertia/pull/2699</a></li> <li>Add test for reloading deferred props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2698">https://github.com/inertiajs/inertia/pull/2698</a></li> <li>Force <code>indices</code> array format when submitting data using <code>FormData</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2701">https://github.com/inertiajs/inertia/pull/2701</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.16...v2.2.17">https://github.com/inertiajs/inertia/compare/v2.2.16...v2.2.17</a></p> <h2 id="v2-2-16-https-github-com-inertiajs-inertia-compare-v2-2-15-v2-2-16-2025-11-13" class="doc-h2"><span>[v2.2.16](https://github.com/inertiajs/inertia/compare/v2.2.15...v2.2.16) - 2025-11-13</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.16](https://github.com/inertiajs/inertia/compare/v2.2.15...v2.2.16) - 2025-11-13')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Added test for <code>defaultValue</code> in Form component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2685">https://github.com/inertiajs/inertia/pull/2685</a></li> <li>Prevent navigation on right-click on <code><Link></code> with <code>prefetch="click"</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2676">https://github.com/inertiajs/inertia/pull/2676</a></li> <li>Export page component type for React adapter by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2691">https://github.com/inertiajs/inertia/pull/2691</a></li> <li>Switch <code>useContext</code> to <code>use</code> in <code>usePage()</code> hook by <a href="https://github.com/HichemTab-tech">@HichemTab-tech</a> in <a href="https://github.com/inertiajs/inertia/pull/2680">https://github.com/inertiajs/inertia/pull/2680</a></li> <li>Improve serialization in <code>formDataToObject()</code> when mixing numeric and non-numeric object keys by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2692">https://github.com/inertiajs/inertia/pull/2692</a></li> <li>Fix <code>InfiniteScroll</code> scroll preservation by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2689">https://github.com/inertiajs/inertia/pull/2689</a></li> <li>Export Inertia <code>App</code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2695">https://github.com/inertiajs/inertia/pull/2695</a></li> <li>Ignore <code>preserveScroll</code> and <code>preserveState</code> when finding cached response by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2694">https://github.com/inertiajs/inertia/pull/2694</a></li> <li>Upgrade Express server for test apps to v5 by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2693">https://github.com/inertiajs/inertia/pull/2693</a></li> <li>Add WebKit browser testing to CI with Safari compatibility fixes by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2696">https://github.com/inertiajs/inertia/pull/2696</a></li> <li>Bump symfony/http-foundation from 7.3.4 to 7.3.7 in /playgrounds/vue3 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2697">https://github.com/inertiajs/inertia/pull/2697</a></li> <li>Fix array keys misalignment in form data and query by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2690">https://github.com/inertiajs/inertia/pull/2690</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.15...v2.2.16">https://github.com/inertiajs/inertia/compare/v2.2.15...v2.2.16</a></p> <h2 id="v2-2-15-https-github-com-inertiajs-inertia-compare-v2-2-14-v2-2-15-2025-10-30" class="doc-h2"><span>[v2.2.15](https://github.com/inertiajs/inertia/compare/v2.2.14...v2.2.15) - 2025-10-30</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.15](https://github.com/inertiajs/inertia/compare/v2.2.14...v2.2.15) - 2025-10-30')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>TS Fix for circularly references in form data by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2673">https://github.com/inertiajs/inertia/pull/2673</a></li> <li>Improve TS for config defaults by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2674">https://github.com/inertiajs/inertia/pull/2674</a></li> <li>[v2.x] feat: allow adding type to <code>router.restore</code> by <a href="https://github.com/peaklabs-dev">@peaklabs-dev</a> in <a href="https://github.com/inertiajs/inertia/pull/2545">https://github.com/inertiajs/inertia/pull/2545</a></li> <li>Configurable prefetch hover delay by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2675">https://github.com/inertiajs/inertia/pull/2675</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.14...v2.2.15">https://github.com/inertiajs/inertia/compare/v2.2.14...v2.2.15</a></p> <h2 id="v2-2-14-https-github-com-inertiajs-inertia-compare-v2-2-13-v2-2-14-2025-10-28" class="doc-h2"><span>[v2.2.14](https://github.com/inertiajs/inertia/compare/v2.2.13...v2.2.14) - 2025-10-28</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.14](https://github.com/inertiajs/inertia/compare/v2.2.13...v2.2.14) - 2025-10-28')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>TS cleanup for <code><Link></code> component + View Transition prop in Svelte by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2667">https://github.com/inertiajs/inertia/pull/2667</a></li> <li>Improve support for <code>any</code> as form data value by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2668">https://github.com/inertiajs/inertia/pull/2668</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.13...v2.2.14">https://github.com/inertiajs/inertia/compare/v2.2.13...v2.2.14</a></p> <h2 id="v2-2-13-https-github-com-inertiajs-inertia-compare-v2-2-12-v2-2-13-2025-10-28" class="doc-h2"><span>[v2.2.13](https://github.com/inertiajs/inertia/compare/v2.2.12...v2.2.13) - 2025-10-28</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.13](https://github.com/inertiajs/inertia/compare/v2.2.12...v2.2.13) - 2025-10-28')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Support for View Transitions by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2658">https://github.com/inertiajs/inertia/pull/2658</a></li> <li>Opt-in to using <code>data-inertia</code> attribute in <code><Head></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2663">https://github.com/inertiajs/inertia/pull/2663</a></li> <li>Opt-in to using <code><dialog></code> for error modals by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2664">https://github.com/inertiajs/inertia/pull/2664</a></li> <li>feat: give access to underlying data as object and as form data object by <a href="https://github.com/MeiKatz">@MeiKatz</a> in <a href="https://github.com/inertiajs/inertia/pull/2605">https://github.com/inertiajs/inertia/pull/2605</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/MeiKatz">@MeiKatz</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2605">https://github.com/inertiajs/inertia/pull/2605</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.12...v2.2.13">https://github.com/inertiajs/inertia/compare/v2.2.12...v2.2.13</a></p> <h2 id="v2-2-12-https-github-com-inertiajs-inertia-compare-v2-2-11-v2-2-12-2025-10-27" class="doc-h2"><span>[v2.2.12](https://github.com/inertiajs/inertia/compare/v2.2.11...v2.2.12) - 2025-10-27</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.12](https://github.com/inertiajs/inertia/compare/v2.2.11...v2.2.12) - 2025-10-27')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Clone page props before writing it to the browser's history by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2662">https://github.com/inertiajs/inertia/pull/2662</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.11...v2.2.12">https://github.com/inertiajs/inertia/compare/v2.2.11...v2.2.12</a></p> <h2 id="v2-2-11-https-github-com-inertiajs-inertia-compare-v2-2-10-v2-2-11-2025-10-24" class="doc-h2"><span>[v2.2.11](https://github.com/inertiajs/inertia/compare/v2.2.10...v2.2.11) - 2025-10-24</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.11](https://github.com/inertiajs/inertia/compare/v2.2.10...v2.2.11) - 2025-10-24')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Configure global defaults and update during runtime by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2655">https://github.com/inertiajs/inertia/pull/2655</a></li> <li>Stabilize prop references when visiting the same page by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2657">https://github.com/inertiajs/inertia/pull/2657</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.10...v2.2.11">https://github.com/inertiajs/inertia/compare/v2.2.10...v2.2.11</a></p> <h2 id="v2-2-10-https-github-com-inertiajs-inertia-compare-v2-2-9-v2-2-10-2025-10-23" class="doc-h2"><span>[v2.2.10](https://github.com/inertiajs/inertia/compare/v2.2.9...v2.2.10) - 2025-10-23</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.10](https://github.com/inertiajs/inertia/compare/v2.2.9...v2.2.10) - 2025-10-23')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Restore uppercase <code>Component</code> object key in React's <code>App.ts</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2654">https://github.com/inertiajs/inertia/pull/2654</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.9...v2.2.10">https://github.com/inertiajs/inertia/compare/v2.2.9...v2.2.10</a></p> <h2 id="v2-2-9-https-github-com-inertiajs-inertia-compare-v2-2-8-v2-2-9-2025-10-21" class="doc-h2"><span>[v2.2.9](https://github.com/inertiajs/inertia/compare/v2.2.8...v2.2.9) - 2025-10-21</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.9](https://github.com/inertiajs/inertia/compare/v2.2.8...v2.2.9) - 2025-10-21')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Use local <code>@inertiajs/core</code> in Playgrounds + dependencies bump by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2633">https://github.com/inertiajs/inertia/pull/2633</a></li> <li>Introduce types for Head Manager by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2634">https://github.com/inertiajs/inertia/pull/2634</a></li> <li>Fix resolving <code>preserveScroll</code> and <code>preserveState</code> in Client Side Visits by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2635">https://github.com/inertiajs/inertia/pull/2635</a></li> <li>Support for type-hinting shared Page Props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2636">https://github.com/inertiajs/inertia/pull/2636</a></li> <li>Add <code>globals.d.ts</code> file to Playgrounds by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2637">https://github.com/inertiajs/inertia/pull/2637</a></li> <li>Remove wrong <code>shouldIntercept()</code> call in <code>keydown</code> event handler in <code><Link></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2638">https://github.com/inertiajs/inertia/pull/2638</a></li> <li>Introduce <code>CancelToken</code> and <code>CancelTokenCallback</code> types to replace Axios imports by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2639">https://github.com/inertiajs/inertia/pull/2639</a></li> <li>Internal TypeScript improvements by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2640">https://github.com/inertiajs/inertia/pull/2640</a></li> <li>Tests and TS improvements for the <code><Head></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2641">https://github.com/inertiajs/inertia/pull/2641</a></li> <li>Make <code>data</code> prop of `` required by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2642">https://github.com/inertiajs/inertia/pull/2642</a></li> <li>TS fixes in Vue adapter for <code>useRemember</code> and <code>remember</code> mixin by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2643">https://github.com/inertiajs/inertia/pull/2643</a></li> <li>Bump vite from 5.4.20 to 5.4.21 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2647">https://github.com/inertiajs/inertia/pull/2647</a></li> <li>TypeScript improvements to <code>createInertiaApp()</code> and unifying it across adapters by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2648">https://github.com/inertiajs/inertia/pull/2648</a></li> <li>ESLint check for test-apps by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2560">https://github.com/inertiajs/inertia/pull/2560</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.8...v2.2.9">https://github.com/inertiajs/inertia/compare/v2.2.8...v2.2.9</a></p> <h2 id="v2-2-8-https-github-com-inertiajs-inertia-compare-v2-2-7-v2-2-8-2025-10-09" class="doc-h2"><span>[v2.2.8](https://github.com/inertiajs/inertia/compare/v2.2.7...v2.2.8) - 2025-10-09</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.8](https://github.com/inertiajs/inertia/compare/v2.2.7...v2.2.8) - 2025-10-09')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Prevent false positives in <code>getScrollableParent()</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2626">https://github.com/inertiajs/inertia/pull/2626</a></li> <li>Restore scroll regions after navigation by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2627">https://github.com/inertiajs/inertia/pull/2627</a></li> <li>Prevent replacing history state when scroll regions are unchanged to fix popstate behavior in WebKit by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2629">https://github.com/inertiajs/inertia/pull/2629</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.7...v2.2.8">https://github.com/inertiajs/inertia/compare/v2.2.7...v2.2.8</a></p> <h2 id="v2-2-7-https-github-com-inertiajs-inertia-compare-v2-2-6-v2-2-7-2025-10-07" class="doc-h2"><span>[v2.2.7](https://github.com/inertiajs/inertia/compare/v2.2.6...v2.2.7) - 2025-10-07</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.7](https://github.com/inertiajs/inertia/compare/v2.2.6...v2.2.7) - 2025-10-07')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Preserve relative URL when `` updates query string by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2623">https://github.com/inertiajs/inertia/pull/2623</a></li> <li>Use <code>SlotsType</code> to type-hint Vue slots by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2620">https://github.com/inertiajs/inertia/pull/2620</a></li> <li>Fix race condition in <code>history.ts</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2624">https://github.com/inertiajs/inertia/pull/2624</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.6...v2.2.7">https://github.com/inertiajs/inertia/compare/v2.2.6...v2.2.7</a></p> <h2 id="v2-2-6-https-github-com-inertiajs-inertia-compare-v2-2-5-v2-2-6-2025-10-03" class="doc-h2"><span>[v2.2.6](https://github.com/inertiajs/inertia/compare/v2.2.5...v2.2.6) - 2025-10-03</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.6](https://github.com/inertiajs/inertia/compare/v2.2.5...v2.2.6) - 2025-10-03')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>SSR fixes for `` component. by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2616">https://github.com/inertiajs/inertia/pull/2616</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.5...v2.2.6">https://github.com/inertiajs/inertia/compare/v2.2.5...v2.2.6</a></p> <h2 id="v2-2-5-https-github-com-inertiajs-inertia-compare-v2-2-4-v2-2-5-2025-10-02" class="doc-h2"><span>[v2.2.5](https://github.com/inertiajs/inertia/compare/v2.2.4...v2.2.5) - 2025-10-02</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.5](https://github.com/inertiajs/inertia/compare/v2.2.4...v2.2.5) - 2025-10-02')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Improve `` cleanup after navigating away by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2610">https://github.com/inertiajs/inertia/pull/2610</a></li> <li>Fix for <code><Form></code> component when using React SSR by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2612">https://github.com/inertiajs/inertia/pull/2612</a></li> <li>Fix conflicting Client Side Visits by queuing the URL synchronization by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2613">https://github.com/inertiajs/inertia/pull/2613</a></li> <li>Improvements to `` in Svelte adapter by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2614">https://github.com/inertiajs/inertia/pull/2614</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.4...v2.2.5">https://github.com/inertiajs/inertia/compare/v2.2.4...v2.2.5</a></p> <h2 id="v2-2-4-https-github-com-inertiajs-inertia-compare-v2-2-3-v2-2-4-2025-09-30" class="doc-h2"><span>[v2.2.4](https://github.com/inertiajs/inertia/compare/v2.2.3...v2.2.4) - 2025-09-30</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.4](https://github.com/inertiajs/inertia/compare/v2.2.3...v2.2.4) - 2025-09-30')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Compile TS while developing + improve CLI output by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2600">https://github.com/inertiajs/inertia/pull/2600</a></li> <li>Improve testing of scroll restoration by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2602">https://github.com/inertiajs/inertia/pull/2602</a></li> <li>Fix for reloading an unrelated prop affecting infinite scroll by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2603">https://github.com/inertiajs/inertia/pull/2603</a></li> <li>Add <code>preserve-url</code> prop to <code><Link></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2541">https://github.com/inertiajs/inertia/pull/2541</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.3...v2.2.4">https://github.com/inertiajs/inertia/compare/v2.2.3...v2.2.4</a></p> <h2 id="v2-2-3-https-github-com-inertiajs-inertia-compare-v2-2-2-v2-2-3-2025-09-29" class="doc-h2"><span>[v2.2.3](https://github.com/inertiajs/inertia/compare/v2.2.2...v2.2.3) - 2025-09-29</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.3](https://github.com/inertiajs/inertia/compare/v2.2.2...v2.2.3) - 2025-09-29')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Preserve <code>ScrollProp</code> on Partial Reloads by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2597">https://github.com/inertiajs/inertia/pull/2597</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.2...v2.2.3">https://github.com/inertiajs/inertia/compare/v2.2.2...v2.2.3</a></p> <h2 id="v2-2-2-https-github-com-inertiajs-inertia-compare-v2-2-1-v2-2-2-2025-09-28" class="doc-h2"><span>[v2.2.2](https://github.com/inertiajs/inertia/compare/v2.2.1...v2.2.2) - 2025-09-28</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.2](https://github.com/inertiajs/inertia/compare/v2.2.1...v2.2.2) - 2025-09-28')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Reset <code>ScrollProp</code> when requested by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2595">https://github.com/inertiajs/inertia/pull/2595</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.1...v2.2.2">https://github.com/inertiajs/inertia/compare/v2.2.1...v2.2.2</a></p> <h2 id="v2-2-1-https-github-com-inertiajs-inertia-compare-v2-2-0-v2-2-1-2025-09-28" class="doc-h2"><span>[v2.2.1](https://github.com/inertiajs/inertia/compare/v2.2.0...v2.2.1) - 2025-09-28</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.1](https://github.com/inertiajs/inertia/compare/v2.2.0...v2.2.1) - 2025-09-28')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Don't restore remembered state after a refresh by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2591">https://github.com/inertiajs/inertia/pull/2591</a></li> <li>Remember Infinite Scroll state by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2592">https://github.com/inertiajs/inertia/pull/2592</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.2.0...v2.2.1">https://github.com/inertiajs/inertia/compare/v2.2.0...v2.2.1</a></p> <h2 id="v2-2-0-https-github-com-inertiajs-inertia-compare-v2-1-11-v2-2-0-2025-09-26" class="doc-h2"><span>[v2.2.0](https://github.com/inertiajs/inertia/compare/v2.1.11...v2.2.0) - 2025-09-26</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.2.0](https://github.com/inertiajs/inertia/compare/v2.1.11...v2.2.0) - 2025-09-26')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Support for merging nested prop paths by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2561">https://github.com/inertiajs/inertia/pull/2561</a></li> <li>Client-side visit helpers to update props by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2589">https://github.com/inertiajs/inertia/pull/2589</a></li> <li>Introduction of the `` component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2580">https://github.com/inertiajs/inertia/pull/2580</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.11...v2.2.0">https://github.com/inertiajs/inertia/compare/v2.1.11...v2.2.0</a></p> <h2 id="v2-1-11-https-github-com-inertiajs-inertia-compare-v2-1-10-v2-1-11-2025-09-24" class="doc-h2"><span>[v2.1.11](https://github.com/inertiajs/inertia/compare/v2.1.10...v2.1.11) - 2025-09-24</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.11](https://github.com/inertiajs/inertia/compare/v2.1.10...v2.1.11) - 2025-09-24')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix flaky tests in CI by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2582">https://github.com/inertiajs/inertia/pull/2582</a></li> <li>Bump Playwright by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2585">https://github.com/inertiajs/inertia/pull/2585</a></li> <li>Progress indicator API by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2581">https://github.com/inertiajs/inertia/pull/2581</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.10...v2.1.11">https://github.com/inertiajs/inertia/compare/v2.1.10...v2.1.11</a></p> <h2 id="v2-1-10-https-github-com-inertiajs-inertia-compare-v2-1-9-v2-1-10-2025-09-22" class="doc-h2"><span>[v2.1.10](https://github.com/inertiajs/inertia/compare/v2.1.9...v2.1.10) - 2025-09-22</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.10](https://github.com/inertiajs/inertia/compare/v2.1.9...v2.1.10) - 2025-09-22')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix PNPM publishing by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2578">https://github.com/inertiajs/inertia/pull/2578</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.9...v2.1.10">https://github.com/inertiajs/inertia/compare/v2.1.9...v2.1.10</a></p> <h2 id="v2-1-9-https-github-com-inertiajs-inertia-compare-v2-1-8-v2-1-9-2025-09-22" class="doc-h2"><span>[v2.1.9](https://github.com/inertiajs/inertia/compare/v2.1.8...v2.1.9) - 2025-09-22</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.9](https://github.com/inertiajs/inertia/compare/v2.1.8...v2.1.9) - 2025-09-22')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix PNPM build by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2577">https://github.com/inertiajs/inertia/pull/2577</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.8...v2.1.9">https://github.com/inertiajs/inertia/compare/v2.1.8...v2.1.9</a></p> <h2 id="v2-1-8-https-github-com-inertiajs-inertia-compare-v2-1-7-v2-1-8-2025-09-22" class="doc-h2"><span>[v2.1.8](https://github.com/inertiajs/inertia/compare/v2.1.7...v2.1.8) - 2025-09-22</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.8](https://github.com/inertiajs/inertia/compare/v2.1.7...v2.1.8) - 2025-09-22')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Publish packages in CI by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2575">https://github.com/inertiajs/inertia/pull/2575</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.7...v2.1.8">https://github.com/inertiajs/inertia/compare/v2.1.7...v2.1.8</a></p> <h2 id="v2-1-7-https-github-com-inertiajs-inertia-compare-v2-1-6-v2-1-7-2025-09-18" class="doc-h2"><span>[v2.1.7](https://github.com/inertiajs/inertia/compare/v2.1.6...v2.1.7) - 2025-09-18</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.7](https://github.com/inertiajs/inertia/compare/v2.1.6...v2.1.7) - 2025-09-18')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump axios from 1.11.0 to 1.12.0 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2568">https://github.com/inertiajs/inertia/pull/2568</a></li> <li>Bump dependencies by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2571">https://github.com/inertiajs/inertia/pull/2571</a></li> <li>TypeScript upgrade by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2573">https://github.com/inertiajs/inertia/pull/2573</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.6...v2.1.7">https://github.com/inertiajs/inertia/compare/v2.1.6...v2.1.7</a></p> <h2 id="v2-1-6-https-github-com-inertiajs-inertia-compare-v2-1-5-v2-1-6-2025-09-12" class="doc-h2"><span>[v2.1.6](https://github.com/inertiajs/inertia/compare/v2.1.5...v2.1.6) - 2025-09-12</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.6](https://github.com/inertiajs/inertia/compare/v2.1.5...v2.1.6) - 2025-09-12')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Invalidate prefetch cache when page is received from a network request by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2567">https://github.com/inertiajs/inertia/pull/2567</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.5...v2.1.6">https://github.com/inertiajs/inertia/compare/v2.1.5...v2.1.6</a></p> <h2 id="v2-1-5-https-github-com-inertiajs-inertia-compare-v2-1-4-v2-1-5-2025-09-05" class="doc-h2"><span>[v2.1.5](https://github.com/inertiajs/inertia/compare/v2.1.4...v2.1.5) - 2025-09-05</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.5](https://github.com/inertiajs/inertia/compare/v2.1.4...v2.1.5) - 2025-09-05')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix race condition when combining Deferred Props with an instant Partial Reload on mount by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2562">https://github.com/inertiajs/inertia/pull/2562</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.4...v2.1.5">https://github.com/inertiajs/inertia/compare/v2.1.4...v2.1.5</a></p> <h2 id="v2-1-4-https-github-com-inertiajs-inertia-compare-v2-1-3-v2-1-4-2025-09-03" class="doc-h2"><span>[v2.1.4](https://github.com/inertiajs/inertia/compare/v2.1.3...v2.1.4) - 2025-09-03</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.4](https://github.com/inertiajs/inertia/compare/v2.1.3...v2.1.4) - 2025-09-03')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Replace html-escape with built-in function on Svelte package by <a href="https://github.com/kresnasatya">@kresnasatya</a> in <a href="https://github.com/inertiajs/inertia/pull/2535">https://github.com/inertiajs/inertia/pull/2535</a></li> <li>Update dirty state after DOM changes (React only) by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2558">https://github.com/inertiajs/inertia/pull/2558</a></li> <li>Prevent errors caused by null href value by <a href="https://github.com/fritz-c">@fritz-c</a> in <a href="https://github.com/inertiajs/inertia/pull/2550">https://github.com/inertiajs/inertia/pull/2550</a></li> <li>Remove data from the dependency array of setDefaults by <a href="https://github.com/jasonlbeggs">@jasonlbeggs</a> in <a href="https://github.com/inertiajs/inertia/pull/2554">https://github.com/inertiajs/inertia/pull/2554</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/fritz-c">@fritz-c</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2550">https://github.com/inertiajs/inertia/pull/2550</a></li> <li><a href="https://github.com/jasonlbeggs">@jasonlbeggs</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2554">https://github.com/inertiajs/inertia/pull/2554</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.3...v2.1.4">https://github.com/inertiajs/inertia/compare/v2.1.3...v2.1.4</a></p> <h2 id="v2-1-3-https-github-com-inertiajs-inertia-compare-v2-1-2-v2-1-3-2025-08-27" class="doc-h2"><span>[v2.1.3](https://github.com/inertiajs/inertia/compare/v2.1.2...v2.1.3) - 2025-08-27</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.3](https://github.com/inertiajs/inertia/compare/v2.1.2...v2.1.3) - 2025-08-27')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Code formatting with Prettier by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2515">https://github.com/inertiajs/inertia/pull/2515</a></li> <li>Add EditorConfig and fix some whitespace issues by <a href="https://github.com/jrmajor">@jrmajor</a> in <a href="https://github.com/inertiajs/inertia/pull/2516">https://github.com/inertiajs/inertia/pull/2516</a></li> <li>Fix for nullable object types in <code>useForm</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2528">https://github.com/inertiajs/inertia/pull/2528</a></li> <li>Fix for Form Component in Svelte when resetting use input/button by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2525">https://github.com/inertiajs/inertia/pull/2525</a></li> <li>Improve Link component <code>as</code> prop by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2524">https://github.com/inertiajs/inertia/pull/2524</a></li> <li>[v2.x] fix: type error by changing page props type to <code>any</code> by <a href="https://github.com/peaklabs-dev">@peaklabs-dev</a> in <a href="https://github.com/inertiajs/inertia/pull/2520">https://github.com/inertiajs/inertia/pull/2520</a></li> <li>Revert to back to Lodash to retain ES2020 compatibility by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2527">https://github.com/inertiajs/inertia/pull/2527</a></li> <li>Verify ES2020 compatibility in CI by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2530">https://github.com/inertiajs/inertia/pull/2530</a></li> <li>[Vue] Fixing action attribute on Form Component when using Wayfinder by <a href="https://github.com/nicolagianelli">@nicolagianelli</a> in <a href="https://github.com/inertiajs/inertia/pull/2532">https://github.com/inertiajs/inertia/pull/2532</a></li> <li>Make package.json structure in Svelte package Consistent as Vue and React by <a href="https://github.com/kresnasatya">@kresnasatya</a> in <a href="https://github.com/inertiajs/inertia/pull/2529">https://github.com/inertiajs/inertia/pull/2529</a></li> <li>Remove Svelte 5-next version constraint by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2533">https://github.com/inertiajs/inertia/pull/2533</a></li> <li>improve typescript configuration by <a href="https://github.com/sudo-barun">@sudo-barun</a> in <a href="https://github.com/inertiajs/inertia/pull/2470">https://github.com/inertiajs/inertia/pull/2470</a></li> <li>Format JSON files with Prettier by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2534">https://github.com/inertiajs/inertia/pull/2534</a></li> <li>Fix warning about <code>inert</code> attribute in React < 19 by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2536">https://github.com/inertiajs/inertia/pull/2536</a></li> <li>Fix keyboard activation when using <code>prefetch: 'click'</code> by <a href="https://github.com/pedroborges">@pedroborges</a> in <a href="https://github.com/inertiajs/inertia/pull/2538">https://github.com/inertiajs/inertia/pull/2538</a></li> <li>Fix <code>useForm</code> to respect manual <code>setDefaults()</code> calls in <code>onSuccess</code> and unify timing across adapters by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2539">https://github.com/inertiajs/inertia/pull/2539</a></li> <li>Run Playwright in parallel in CI by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2540">https://github.com/inertiajs/inertia/pull/2540</a></li> <li>Fix Coding Standards workflow by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2547">https://github.com/inertiajs/inertia/pull/2547</a></li> <li>bumpup axios to fix CVE-2025-7783 by <a href="https://github.com/vallerydelexy">@vallerydelexy</a> in <a href="https://github.com/inertiajs/inertia/pull/2546">https://github.com/inertiajs/inertia/pull/2546</a></li> <li>Bump <code>@sveltejs/kit</code> version by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2548">https://github.com/inertiajs/inertia/pull/2548</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/peaklabs-dev">@peaklabs-dev</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2520">https://github.com/inertiajs/inertia/pull/2520</a></li> <li><a href="https://github.com/nicolagianelli">@nicolagianelli</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2532">https://github.com/inertiajs/inertia/pull/2532</a></li> <li><a href="https://github.com/kresnasatya">@kresnasatya</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2529">https://github.com/inertiajs/inertia/pull/2529</a></li> <li><a href="https://github.com/vallerydelexy">@vallerydelexy</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2546">https://github.com/inertiajs/inertia/pull/2546</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.2...v2.1.3">https://github.com/inertiajs/inertia/compare/v2.1.2...v2.1.3</a></p> <h2 id="v2-1-2-https-github-com-inertiajs-inertia-compare-v2-1-1-v2-1-2-2025-08-15" class="doc-h2"><span>[v2.1.2](https://github.com/inertiajs/inertia/compare/v2.1.1...v2.1.2) - 2025-08-15</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.2](https://github.com/inertiajs/inertia/compare/v2.1.1...v2.1.2) - 2025-08-15')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix for manipulating form after redirect in <code>onSubmitComplete</code> by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2510">https://github.com/inertiajs/inertia/pull/2510</a></li> <li>Support for passing Wayfinder objects to router methods by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2497">https://github.com/inertiajs/inertia/pull/2497</a></li> <li>Tag-based cache invalidation for prefetch requests by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2484">https://github.com/inertiajs/inertia/pull/2484</a></li> <li>Add <code>resetOnError</code>, <code>resetOnSuccess</code>, <code>setDefaultsOnSuccess</code> to Form component by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2514">https://github.com/inertiajs/inertia/pull/2514</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.1...v2.1.2">https://github.com/inertiajs/inertia/compare/v2.1.1...v2.1.2</a></p> <h2 id="v2-1-1-https-github-com-inertiajs-inertia-compare-v2-1-0-v2-1-1-2025-08-14" class="doc-h2"><span>[v2.1.1](https://github.com/inertiajs/inertia/compare/v2.1.0...v2.1.1) - 2025-08-14</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.1](https://github.com/inertiajs/inertia/compare/v2.1.0...v2.1.1) - 2025-08-14')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Improve <code>Link</code> component types and support for prefetch events by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2464">https://github.com/inertiajs/inertia/pull/2464</a></li> <li>allow passing partial errors object to <code>setError()</code> by <a href="https://github.com/sudo-barun">@sudo-barun</a> in <a href="https://github.com/inertiajs/inertia/pull/2461">https://github.com/inertiajs/inertia/pull/2461</a></li> <li>Add missing generic type support to PendingVisit and VisitHelperOptions by <a href="https://github.com/HichemTab-tech">@HichemTab-tech</a> in <a href="https://github.com/inertiajs/inertia/pull/2454">https://github.com/inertiajs/inertia/pull/2454</a></li> <li>Revamp useForm's generic types across adaptors by <a href="https://github.com/Spice-King">@Spice-King</a> in <a href="https://github.com/inertiajs/inertia/pull/2335">https://github.com/inertiajs/inertia/pull/2335</a></li> <li>TypeScript improvements for <code>Link</code> component and Client Side Visits by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2472">https://github.com/inertiajs/inertia/pull/2472</a></li> <li>Further TS improvements for <code>useForm</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2475">https://github.com/inertiajs/inertia/pull/2475</a></li> <li>Improve consistency in <code>useForm</code> across adapters by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2482">https://github.com/inertiajs/inertia/pull/2482</a></li> <li>Improve TypeScript support for Client Side Visit <code>props</code> callback by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2483">https://github.com/inertiajs/inertia/pull/2483</a></li> <li>TS improvements to Svelte's <code><Form></code> and <code>useForm()</code> implementations by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2489">https://github.com/inertiajs/inertia/pull/2489</a></li> <li>Typescript Improvements by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2468">https://github.com/inertiajs/inertia/pull/2468</a></li> <li>Test apps in TypeScript by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2469">https://github.com/inertiajs/inertia/pull/2469</a></li> <li>Fix empty action in <code><Form></code> component when the current URL has more than one segment by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2501">https://github.com/inertiajs/inertia/pull/2501</a></li> <li>Support uppercase method in <code><Form></code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2502">https://github.com/inertiajs/inertia/pull/2502</a></li> <li>Add <code>Form</code> component <code>disableWhileProcessing</code> prop by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2504">https://github.com/inertiajs/inertia/pull/2504</a></li> <li>Reset form fields by name in Form components by <a href="https://github.com/skryukov">@skryukov</a> in <a href="https://github.com/inertiajs/inertia/pull/2499">https://github.com/inertiajs/inertia/pull/2499</a></li> <li>Add <code>onSubmitComplete</code> prop to <code>Form</code> component by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2503">https://github.com/inertiajs/inertia/pull/2503</a></li> <li>Remove failed prefetch requests from in-flight array by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2500">https://github.com/inertiajs/inertia/pull/2500</a></li> <li>Add <code>defaults()</code> method to Form component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2507">https://github.com/inertiajs/inertia/pull/2507</a></li> <li>Release script by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2508">https://github.com/inertiajs/inertia/pull/2508</a></li> <li>Only <code>reset()</code> and <code>defaults()</code> in <code>onSubmitComplete</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2509">https://github.com/inertiajs/inertia/pull/2509</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/sudo-barun">@sudo-barun</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2461">https://github.com/inertiajs/inertia/pull/2461</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.1.0...v2.1.1">https://github.com/inertiajs/inertia/compare/v2.1.0...v2.1.1</a></p> <h2 id="v2-1-0-https-github-com-inertiajs-inertia-compare-v2-0-17-v2-1-0-2025-08-13" class="doc-h2"><span>[v2.1.0](https://github.com/inertiajs/inertia/compare/v2.0.17...v2.1.0) - 2025-08-13</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.1.0](https://github.com/inertiajs/inertia/compare/v2.0.17...v2.1.0) - 2025-08-13')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Support for passing custom component to <code>as</code> prop of <code>Link</code> component. by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2443">https://github.com/inertiajs/inertia/pull/2443</a></li> <li>Use <code>nodemon</code> to trigger new files and deleted files in test apps by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2442">https://github.com/inertiajs/inertia/pull/2442</a></li> <li>Use ReactNode type for children props by <a href="https://github.com/chack1172">@chack1172</a> in <a href="https://github.com/inertiajs/inertia/pull/2385">https://github.com/inertiajs/inertia/pull/2385</a></li> <li>Allow function as children component in react Deferred and WhenVisible by <a href="https://github.com/chack1172">@chack1172</a> in <a href="https://github.com/inertiajs/inertia/pull/2386">https://github.com/inertiajs/inertia/pull/2386</a></li> <li>Improve test that waits for scroll position restoration by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2473">https://github.com/inertiajs/inertia/pull/2473</a></li> <li>Introduction of the <code>Form</code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2474">https://github.com/inertiajs/inertia/pull/2474</a></li> <li>Improve <code>children</code> prop of <code><Form></code> Component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2487">https://github.com/inertiajs/inertia/pull/2487</a></li> <li>Add Form component ref support by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2496">https://github.com/inertiajs/inertia/pull/2496</a></li> <li>Make Svelte's <Deferred> not crash in an SSR environment by <a href="https://github.com/dkulchenko">@dkulchenko</a> in <a href="https://github.com/inertiajs/inertia/pull/2396">https://github.com/inertiajs/inertia/pull/2396</a></li> <li>Fix core: Queue processing when an item fails by <a href="https://github.com/pintend">@pintend</a> in <a href="https://github.com/inertiajs/inertia/pull/2467">https://github.com/inertiajs/inertia/pull/2467</a></li> <li>Migrate playgrounds to Tailwind 4 by <a href="https://github.com/jrmajor">@jrmajor</a> in <a href="https://github.com/inertiajs/inertia/pull/2369">https://github.com/inertiajs/inertia/pull/2369</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/dkulchenko">@dkulchenko</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2396">https://github.com/inertiajs/inertia/pull/2396</a></li> <li><a href="https://github.com/pintend">@pintend</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2467">https://github.com/inertiajs/inertia/pull/2467</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.17...v2.1.0">https://github.com/inertiajs/inertia/compare/v2.0.17...v2.1.0</a></p> <h2 id="v2-0-17-https-github-com-inertiajs-inertia-compare-v2-0-16-v2-0-17-2025-07-18" class="doc-h2"><span>[v2.0.17](https://github.com/inertiajs/inertia/compare/v2.0.16...v2.0.17) - 2025-07-18</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.17](https://github.com/inertiajs/inertia/compare/v2.0.16...v2.0.17) - 2025-07-18')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump multer from 2.0.1 to 2.0.2 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2447">https://github.com/inertiajs/inertia/pull/2447</a></li> <li>Bump vite from 5.4.12 to 5.4.19 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2450">https://github.com/inertiajs/inertia/pull/2450</a></li> <li>Bump esbuild from 0.21.5 to 0.25.0 by <a href="https://github.com/dependabot">@dependabot</a>[bot] in <a href="https://github.com/inertiajs/inertia/pull/2451">https://github.com/inertiajs/inertia/pull/2451</a></li> <li>Explicit string coercion in <code>Head</code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2453">https://github.com/inertiajs/inertia/pull/2453</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.16...v2.0.17">https://github.com/inertiajs/inertia/compare/v2.0.16...v2.0.17</a></p> <h2 id="v2-0-16-https-github-com-inertiajs-inertia-compare-v2-0-15-v2-0-16-2025-07-18" class="doc-h2"><span>[v2.0.16](https://github.com/inertiajs/inertia/compare/v2.0.15...v2.0.16) - 2025-07-18</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.16](https://github.com/inertiajs/inertia/compare/v2.0.15...v2.0.16) - 2025-07-18')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Make errorBag parameter optional by <a href="https://github.com/joelstein">@joelstein</a> in <a href="https://github.com/inertiajs/inertia/pull/2445">https://github.com/inertiajs/inertia/pull/2445</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/joelstein">@joelstein</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2445">https://github.com/inertiajs/inertia/pull/2445</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.15...v2.0.16">https://github.com/inertiajs/inertia/compare/v2.0.15...v2.0.16</a></p> <h2 id="v2-0-15-https-github-com-inertiajs-inertia-compare-v2-0-14-v2-0-15-2025-07-17" class="doc-h2"><span>[v2.0.15](https://github.com/inertiajs/inertia/compare/v2.0.14...v2.0.15) - 2025-07-17</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.15](https://github.com/inertiajs/inertia/compare/v2.0.14...v2.0.15) - 2025-07-17')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Improve GitHub issue templates by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2418">https://github.com/inertiajs/inertia/pull/2418</a></li> <li>Escape the attribute values that are passed into the <code>Head</code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2403">https://github.com/inertiajs/inertia/pull/2403</a></li> <li>Introduce single method to reset form state and clear errors by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2414">https://github.com/inertiajs/inertia/pull/2414</a></li> <li>Use <code>CacheForOption</code> type in React <code>Link</code> component by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2426">https://github.com/inertiajs/inertia/pull/2426</a></li> <li>Improve query string merging in <code>mergeDataIntoQueryString()</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2417">https://github.com/inertiajs/inertia/pull/2417</a></li> <li>Improve scrolling when using anchor hash by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2428">https://github.com/inertiajs/inertia/pull/2428</a></li> <li>Cancel sync request on popstate event by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2429">https://github.com/inertiajs/inertia/pull/2429</a></li> <li>Support for path traversal by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2413">https://github.com/inertiajs/inertia/pull/2413</a></li> <li>Add event callbacks to <code>ClientSideVisitOptions</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2405">https://github.com/inertiajs/inertia/pull/2405</a></li> <li>Pass parameters to <code>onFinish</code> and <code>onSuccess</code> callbacks on Client Side Visits by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2433">https://github.com/inertiajs/inertia/pull/2433</a></li> <li>Prevent JS builds and test apps from being minified by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2424">https://github.com/inertiajs/inertia/pull/2424</a></li> <li>Migrate to pnpm by <a href="https://github.com/jrmajor">@jrmajor</a> in <a href="https://github.com/inertiajs/inertia/pull/2276">https://github.com/inertiajs/inertia/pull/2276</a></li> <li>Fix single-use prefetching by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2440">https://github.com/inertiajs/inertia/pull/2440</a></li> <li>Change defaults values order in onSuccess callback of useForm by <a href="https://github.com/yilanboy">@yilanboy</a> in <a href="https://github.com/inertiajs/inertia/pull/2437">https://github.com/inertiajs/inertia/pull/2437</a></li> <li>Improve reactivity of Link components by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2441">https://github.com/inertiajs/inertia/pull/2441</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/yilanboy">@yilanboy</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2437">https://github.com/inertiajs/inertia/pull/2437</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.14...v2.0.15">https://github.com/inertiajs/inertia/compare/v2.0.14...v2.0.15</a></p> <h2 id="v2-0-14-https-github-com-inertiajs-inertia-compare-v2-0-13-v2-0-14-2025-06-26" class="doc-h2"><span>[v2.0.14](https://github.com/inertiajs/inertia/compare/v2.0.13...v2.0.14) - 2025-06-26</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.14](https://github.com/inertiajs/inertia/compare/v2.0.13...v2.0.14) - 2025-06-26')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>fix: fixed type error in <code>useForm SetDataAction</code> type by <a href="https://github.com/fxnm">@fxnm</a> in <a href="https://github.com/inertiajs/inertia/pull/2395">https://github.com/inertiajs/inertia/pull/2395</a></li> <li>Call <code>provider.update</code> outside useEffect block to support SSR by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2397">https://github.com/inertiajs/inertia/pull/2397</a></li> <li>Improve state restore logic in <code>useRemember</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2401">https://github.com/inertiajs/inertia/pull/2401</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.13...v2.0.14">https://github.com/inertiajs/inertia/compare/v2.0.13...v2.0.14</a></p> <h2 id="v2-0-13-https-github-com-inertiajs-inertia-compare-v2-0-12-v2-0-13-2025-06-20" class="doc-h2"><span>[v2.0.13](https://github.com/inertiajs/inertia/compare/v2.0.12...v2.0.13) - 2025-06-20</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.13](https://github.com/inertiajs/inertia/compare/v2.0.12...v2.0.13) - 2025-06-20')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Allow deepMerge on custom properties by <a href="https://github.com/mpociot">@mpociot</a> in <a href="https://github.com/inertiajs/inertia/pull/2344">https://github.com/inertiajs/inertia/pull/2344</a></li> <li>fix: React StrictMode breaking Inertia Head by <a href="https://github.com/jordanhavard">@jordanhavard</a> in <a href="https://github.com/inertiajs/inertia/pull/2328">https://github.com/inertiajs/inertia/pull/2328</a></li> <li>Bump multer from 1.4.4 to 2.0.1 in /tests/app by <a href="https://github.com/dependabot">@dependabot</a> in <a href="https://github.com/inertiajs/inertia/pull/2373">https://github.com/inertiajs/inertia/pull/2373</a></li> <li>Initialize router before components in React by <a href="https://github.com/chack1172">@chack1172</a> in <a href="https://github.com/inertiajs/inertia/pull/2379">https://github.com/inertiajs/inertia/pull/2379</a></li> <li>Prevent duplicate render of the initial page in React by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2377">https://github.com/inertiajs/inertia/pull/2377</a></li> <li>Update default state when <code>setDefault()</code> is called right after <code>setData()</code> is called by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2364">https://github.com/inertiajs/inertia/pull/2364</a></li> <li>[2.x] Restore <code>router.resolveComponent()</code> method by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2039">https://github.com/inertiajs/inertia/pull/2039</a></li> <li>Move <code>currentIsInitialPage</code> variable outside of <code>App</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2381">https://github.com/inertiajs/inertia/pull/2381</a></li> <li>Don't overwrite Vite class in Svelte playgrounds by <a href="https://github.com/jrmajor">@jrmajor</a> in <a href="https://github.com/inertiajs/inertia/pull/2368">https://github.com/inertiajs/inertia/pull/2368</a></li> <li>Dependency update + Prevent Playwright 1.53.0 due to Svelte bug by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2382">https://github.com/inertiajs/inertia/pull/2382</a></li> <li>Update to Vite 6 by <a href="https://github.com/SuperDJ">@SuperDJ</a> in <a href="https://github.com/inertiajs/inertia/pull/2315">https://github.com/inertiajs/inertia/pull/2315</a></li> <li>Fix React scroll restoration on popState by <a href="https://github.com/sebastiandedeyne">@sebastiandedeyne</a> in <a href="https://github.com/inertiajs/inertia/pull/2357">https://github.com/inertiajs/inertia/pull/2357</a></li> <li>feat(useForm): export granular setData types and introduce SetDataAction<TForm> by <a href="https://github.com/hasib-devs">@hasib-devs</a> in <a href="https://github.com/inertiajs/inertia/pull/2356">https://github.com/inertiajs/inertia/pull/2356</a></li> <li>Refactor <code>mergeStrategies</code> to <code>matchOn</code> by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2384">https://github.com/inertiajs/inertia/pull/2384</a></li> <li>Remove <code>setSwapComponent</code> method and cleanup after PR #2379 by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2383">https://github.com/inertiajs/inertia/pull/2383</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/jordanhavard">@jordanhavard</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2328">https://github.com/inertiajs/inertia/pull/2328</a></li> <li><a href="https://github.com/chack1172">@chack1172</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2379">https://github.com/inertiajs/inertia/pull/2379</a></li> <li><a href="https://github.com/jrmajor">@jrmajor</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2368">https://github.com/inertiajs/inertia/pull/2368</a></li> <li><a href="https://github.com/SuperDJ">@SuperDJ</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2315">https://github.com/inertiajs/inertia/pull/2315</a></li> <li><a href="https://github.com/hasib-devs">@hasib-devs</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2356">https://github.com/inertiajs/inertia/pull/2356</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.12...v2.0.13">https://github.com/inertiajs/inertia/compare/v2.0.12...v2.0.13</a></p> <h2 id="v2-0-12-https-github-com-inertiajs-inertia-compare-v2-0-11-v2-0-12-2025-06-10" class="doc-h2"><span>[v2.0.12](https://github.com/inertiajs/inertia/compare/v2.0.11...v2.0.12) - 2025-06-10</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.12](https://github.com/inertiajs/inertia/compare/v2.0.11...v2.0.12) - 2025-06-10')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Send <code>Purpose: prefetch</code> header on prefetching by <a href="https://github.com/pascalbaljet">@pascalbaljet</a> in <a href="https://github.com/inertiajs/inertia/pull/2367">https://github.com/inertiajs/inertia/pull/2367</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/pascalbaljet">@pascalbaljet</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2367">https://github.com/inertiajs/inertia/pull/2367</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.11...v2.0.12">https://github.com/inertiajs/inertia/compare/v2.0.11...v2.0.12</a></p> <h2 id="v2-0-11-https-github-com-inertiajs-inertia-compare-v2-0-10-v2-0-11-2025-05-16" class="doc-h2"><span>[v2.0.11](https://github.com/inertiajs/inertia/compare/v2.0.10...v2.0.11) - 2025-05-16</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.11](https://github.com/inertiajs/inertia/compare/v2.0.10...v2.0.11) - 2025-05-16')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix progress bar not showing on subsequent page clicks by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2349">https://github.com/inertiajs/inertia/pull/2349</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.10...v2.0.11">https://github.com/inertiajs/inertia/compare/v2.0.10...v2.0.11</a></p> <h2 id="v2-0-10-https-github-com-inertiajs-inertia-compare-v2-0-9-v2-0-10-2025-05-15" class="doc-h2"><span>[v2.0.10](https://github.com/inertiajs/inertia/compare/v2.0.9...v2.0.10) - 2025-05-15</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.10](https://github.com/inertiajs/inertia/compare/v2.0.9...v2.0.10) - 2025-05-15')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Don't show progress bar on prefetch hover by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2347">https://github.com/inertiajs/inertia/pull/2347</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.9...v2.0.10">https://github.com/inertiajs/inertia/compare/v2.0.9...v2.0.10</a></p> <h2 id="v2-0-9-https-github-com-inertiajs-inertia-compare-v2-0-8-v2-0-9-2025-05-09" class="doc-h2"><span>[v2.0.9](https://github.com/inertiajs/inertia/compare/v2.0.8...v2.0.9) - 2025-05-09</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.9](https://github.com/inertiajs/inertia/compare/v2.0.8...v2.0.9) - 2025-05-09')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Bump <a href="https://github.com/sveltejs">@sveltejs</a>/kit from 2.11.1 to 2.20.6 by <a href="https://github.com/dependabot">@dependabot</a> in <a href="https://github.com/inertiajs/inertia/pull/2312">https://github.com/inertiajs/inertia/pull/2312</a></li> <li>Bump vite from 5.4.17 to 5.4.18 by <a href="https://github.com/dependabot">@dependabot</a> in <a href="https://github.com/inertiajs/inertia/pull/2307">https://github.com/inertiajs/inertia/pull/2307</a></li> <li>Fix for deferred props + prefetch links by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2321">https://github.com/inertiajs/inertia/pull/2321</a></li> <li>Progress: Make hide and reveal CSP-compatible by <a href="https://github.com/flexponsive">@flexponsive</a> in <a href="https://github.com/inertiajs/inertia/pull/2316">https://github.com/inertiajs/inertia/pull/2316</a></li> <li>Corrected URL search parameter merge logic to match behavior prior to v2.0.8 by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2341">https://github.com/inertiajs/inertia/pull/2341</a></li> <li>Corrects url search parameter merge logic to match behavior prior to v2.0.8 by <a href="https://github.com/CTOJoe">@CTOJoe</a> in <a href="https://github.com/inertiajs/inertia/pull/2320">https://github.com/inertiajs/inertia/pull/2320</a></li> <li>Bump vite from 5.4.18 to 5.4.19 by <a href="https://github.com/dependabot">@dependabot</a> in <a href="https://github.com/inertiajs/inertia/pull/2334">https://github.com/inertiajs/inertia/pull/2334</a></li> <li>On back button, fetch from server if version hash is not current by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2342">https://github.com/inertiajs/inertia/pull/2342</a></li> <li>Allow custom URL protocols by <a href="https://github.com/mpociot">@mpociot</a> in <a href="https://github.com/inertiajs/inertia/pull/2329">https://github.com/inertiajs/inertia/pull/2329</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/flexponsive">@flexponsive</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2316">https://github.com/inertiajs/inertia/pull/2316</a></li> <li><a href="https://github.com/CTOJoe">@CTOJoe</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2320">https://github.com/inertiajs/inertia/pull/2320</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.8...v2.0.9">https://github.com/inertiajs/inertia/compare/v2.0.8...v2.0.9</a></p> <h2 id="v2-0-8-https-github-com-inertiajs-inertia-compare-v2-0-7-v2-0-8-2025-04-10" class="doc-h2"><span>[v2.0.8](https://github.com/inertiajs/inertia/compare/v2.0.7...v2.0.8) - 2025-04-10</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.8](https://github.com/inertiajs/inertia/compare/v2.0.7...v2.0.8) - 2025-04-10')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Add deepMerge Support for Merging Nested Arrays and Objects in Props by <a href="https://github.com/HichemTab-tech">@HichemTab-tech</a> in <a href="https://github.com/inertiajs/inertia/pull/2069">https://github.com/inertiajs/inertia/pull/2069</a></li> <li>fix: build error because of invalid type definitions by <a href="https://github.com/fxnm">@fxnm</a> in <a href="https://github.com/inertiajs/inertia/pull/2301">https://github.com/inertiajs/inertia/pull/2301</a></li> <li>fix(vue/useForm/defaults): untrack before assign by <a href="https://github.com/Dsaquel">@Dsaquel</a> in <a href="https://github.com/inertiajs/inertia/pull/2112">https://github.com/inertiajs/inertia/pull/2112</a></li> <li>Improve type checking of request data by <a href="https://github.com/7nohe">@7nohe</a> in <a href="https://github.com/inertiajs/inertia/pull/2304">https://github.com/inertiajs/inertia/pull/2304</a></li> <li>Remove empty payload from GET requests by <a href="https://github.com/edgars-vasiljevs">@edgars-vasiljevs</a> in <a href="https://github.com/inertiajs/inertia/pull/2305">https://github.com/inertiajs/inertia/pull/2305</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/HichemTab-tech">@HichemTab-tech</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2069">https://github.com/inertiajs/inertia/pull/2069</a></li> <li><a href="https://github.com/fxnm">@fxnm</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2301">https://github.com/inertiajs/inertia/pull/2301</a></li> <li><a href="https://github.com/Dsaquel">@Dsaquel</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2112">https://github.com/inertiajs/inertia/pull/2112</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.7...v2.0.8">https://github.com/inertiajs/inertia/compare/v2.0.7...v2.0.8</a></p> <h2 id="v2-0-7-https-github-com-inertiajs-inertia-compare-v2-0-6-v2-0-7-2025-04-08" class="doc-h2"><span>[v2.0.7](https://github.com/inertiajs/inertia/compare/v2.0.6...v2.0.7) - 2025-04-08</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.7](https://github.com/inertiajs/inertia/compare/v2.0.6...v2.0.7) - 2025-04-08')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="what-s-changed" class="doc-h3"><span>What's Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('What\'s Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Added missing pages to React and Svelte5 playrounds by <a href="https://github.com/Verox001">@Verox001</a> in <a href="https://github.com/inertiajs/inertia/pull/2217">https://github.com/inertiajs/inertia/pull/2217</a></li> <li>chore: replace lodash to decrease bundle size by <a href="https://github.com/lcdss">@lcdss</a> in <a href="https://github.com/inertiajs/inertia/pull/2210">https://github.com/inertiajs/inertia/pull/2210</a></li> <li>do not pass url when storing scroll state to history by <a href="https://github.com/miDeb">@miDeb</a> in <a href="https://github.com/inertiajs/inertia/pull/2280">https://github.com/inertiajs/inertia/pull/2280</a></li> <li>fix: react <code>Deferred</code> component error on partial visits by <a href="https://github.com/KaioFelps">@KaioFelps</a> in <a href="https://github.com/inertiajs/inertia/pull/2223">https://github.com/inertiajs/inertia/pull/2223</a></li> <li>Bump vite from 5.4.16 to 5.4.17 by <a href="https://github.com/dependabot">@dependabot</a> in <a href="https://github.com/inertiajs/inertia/pull/2295">https://github.com/inertiajs/inertia/pull/2295</a></li> <li>[2.x] SSR clustering by <a href="https://github.com/RobertBoes">@RobertBoes</a> in <a href="https://github.com/inertiajs/inertia/pull/2206">https://github.com/inertiajs/inertia/pull/2206</a></li> <li>Allow Object type for href prop by <a href="https://github.com/nckrtl">@nckrtl</a> in <a href="https://github.com/inertiajs/inertia/pull/2292">https://github.com/inertiajs/inertia/pull/2292</a></li> <li>Update GitHub Actions to Ubuntu 24.04 by <a href="https://github.com/joetannenbaum">@joetannenbaum</a> in <a href="https://github.com/inertiajs/inertia/pull/2299">https://github.com/inertiajs/inertia/pull/2299</a></li> <li>[2.x]: Support for nested paths in forms by <a href="https://github.com/joaopalopes24">@joaopalopes24</a> in <a href="https://github.com/inertiajs/inertia/pull/2181">https://github.com/inertiajs/inertia/pull/2181</a></li> </ul> <h3 id="new-contributors" class="doc-h3"><span>New Contributors</span> <button class="copy-section-btn" onclick="copySectionPrompt('New Contributors')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><a href="https://github.com/Verox001">@Verox001</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2217">https://github.com/inertiajs/inertia/pull/2217</a></li> <li><a href="https://github.com/lcdss">@lcdss</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2210">https://github.com/inertiajs/inertia/pull/2210</a></li> <li><a href="https://github.com/miDeb">@miDeb</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2280">https://github.com/inertiajs/inertia/pull/2280</a></li> <li><a href="https://github.com/KaioFelps">@KaioFelps</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2223">https://github.com/inertiajs/inertia/pull/2223</a></li> <li><a href="https://github.com/nckrtl">@nckrtl</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2292">https://github.com/inertiajs/inertia/pull/2292</a></li> <li><a href="https://github.com/joaopalopes24">@joaopalopes24</a> made their first contribution in <a href="https://github.com/inertiajs/inertia/pull/2181">https://github.com/inertiajs/inertia/pull/2181</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/inertiajs/inertia/compare/v2.0.6...v2.0.7">https://github.com/inertiajs/inertia/compare/v2.0.6...v2.0.7</a></p> <h2 id="v2-0-6-https-github-com-inertiajs-inertia-compare-v2-0-5-v2-0-6" class="doc-h2"><span>[v2.0.6](https://github.com/inertiajs/inertia/compare/v2.0.5...v2.0.6)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.6](https://github.com/inertiajs/inertia/compare/v2.0.5...v2.0.6)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Deferred: More descriptive Deferred data prop error (<a href="https://github.com/inertiajs/inertia/pull/2284">#2284</a>)</li> <li>Bump vite from 5.4.12 to 5.4.16 (<a href="https://github.com/inertiajs/inertia/pull/2288">#2288</a>)</li> <li>Fix location return history decryption throwing error (<a href="https://github.com/inertiajs/inertia/pull/2282">#2282</a>)</li> <li>Make isDirty reactive to defaults (<a href="https://github.com/inertiajs/inertia/pull/2236">#2236</a>)</li> <li>Fix playground WhenVisible always (<a href="https://github.com/inertiajs/inertia/pull/2203">#2203</a>)</li> <li>Wayfinder support (<a href="https://github.com/inertiajs/inertia/pull/2290">#2290</a>)</li> </ul> <h2 id="v2-0-5-https-github-com-inertiajs-inertia-compare-v2-0-4-v2-0-5" class="doc-h2"><span>[v2.0.5](https://github.com/inertiajs/inertia/compare/v2.0.4...v2.0.5)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.5](https://github.com/inertiajs/inertia/compare/v2.0.4...v2.0.5)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix history state errors by nicholaspufal (<a href="https://github.com/inertiajs/inertia/pull/2265">#2265</a>)</li> <li>Bump axios from 1.7.9 to 1.8.2 (<a href="https://github.com/inertiajs/inertia/pull/2269">#2269</a>)</li> <li>Bump esbuild from 0.16.17 to 0.25.0 #2231 (<a href="https://github.com/inertiajs/inertia/pull/2231">#2231</a>)</li> <li>Bump vite from 5.4.11 to 5.4.12 (<a href="https://github.com/inertiajs/inertia/pull/2201">#2201</a>)</li> </ul> <h2 id="v2-0-4-https-github-com-inertiajs-inertia-compare-v2-0-3-v2-0-4" class="doc-h2"><span>[v2.0.4](https://github.com/inertiajs/inertia/compare/v2.0.3...v2.0.4)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.4](https://github.com/inertiajs/inertia/compare/v2.0.3...v2.0.4)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix anchor links on initial visits (<a href="https://github.com/inertiajs/inertia/pull/2258">#2258</a>)</li> </ul> <h2 id="v2-0-3-https-github-com-inertiajs-inertia-compare-v2-0-2-v2-0-3" class="doc-h2"><span>[v2.0.3](https://github.com/inertiajs/inertia/compare/v2.0.2...v2.0.3)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.3](https://github.com/inertiajs/inertia/compare/v2.0.2...v2.0.3)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix: Reload on mount (<a href="https://github.com/inertiajs/inertia/pull/2200">#2200</a>)</li> </ul> <h2 id="v2-0-2-https-github-com-inertiajs-inertia-compare-v2-0-1-v2-0-2" class="doc-h2"><span>[v2.0.2](https://github.com/inertiajs/inertia/compare/v2.0.1...v2.0.2)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.2](https://github.com/inertiajs/inertia/compare/v2.0.1...v2.0.2)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix SSR with scroll restoration (<a href="https://github.com/inertiajs/inertia/pull/2190">#2190</a>)</li> <li>Fix for scroll + back bug (<a href="https://github.com/inertiajs/inertia/pull/2191">#2191</a>)</li> <li>Backport 1.x fixes from <a href="https://github.com/inertiajs/inertia/releases/tag/v1.3.0">v1.3.0</a> release (<a href="https://github.com/inertiajs/inertia/pull/2193">#2193</a>)</li> </ul> <h2 id="v2-0-1-https-github-com-inertiajs-inertia-compare-v2-0-0-v2-0-1" class="doc-h2"><span>[v2.0.1](https://github.com/inertiajs/inertia/compare/v2.0.0...v2.0.1)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.1](https://github.com/inertiajs/inertia/compare/v2.0.0...v2.0.1)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix playground dependencies (<a href="https://github.com/inertiajs/inertia/pull/2070">#2070</a>)</li> <li>Removed Vitest tests + dependencies (<a href="https://github.com/inertiajs/inertia/pull/2175">#2175</a>)</li> <li>Augment <code>vue</code> instead of <code>@vue/runtime-core</code> (<a href="https://github.com/inertiajs/inertia/pull/2099">#2099</a>)</li> <li>Fix prefetch missing <code>cacheFor</code> default value (<a href="https://github.com/inertiajs/inertia/pull/2136">#2136</a>)</li> <li>Fix <code>useForm</code> re-renders by memoizing functions in React <a href="https://github.com/inertiajs/inertia/pull/2146">#2146</a></li> <li>WhenVisible useEffect function is not recreated when params change. (<a href="https://github.com/inertiajs/inertia/pull/2153">#2153</a>)</li> <li>Ensure callback execution (<a href="https://github.com/inertiajs/inertia/pull/2163">#2163</a>)</li> <li>More resilient logic for stripping the origin from page URLs (<a href="https://github.com/inertiajs/inertia/pull/2164">#2164</a>)</li> <li>Add helper scripts for running tests (<a href="https://github.com/inertiajs/inertia/pull/2173">#2173</a>)</li> <li>Export <code>InertiaFormProps</code> in React (<a href="https://github.com/inertiajs/inertia/pull/2161">#2161</a>)</li> <li>Use default empty object in <code>useForm</code> Vue and Svelte (<a href="https://github.com/inertiajs/inertia/pull/2052">#2052</a>)</li> <li>Remove <code>data</code> option from <code>useForm</code> options type (<a href="https://github.com/inertiajs/inertia/pull/2060">#2060</a>)</li> <li>Take over scroll restoration from browser (<a href="https://github.com/inertiajs/inertia/pull/2051">#2051</a>)</li> </ul> <h2 id="v2-0-0-https-github-com-inertiajs-inertia-compare-v1-2-0-v2-0-0" class="doc-h2"><span>[v2.0.0](https://github.com/inertiajs/inertia/compare/v1.2.0...v2.0.0)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v2.0.0](https://github.com/inertiajs/inertia/compare/v1.2.0...v2.0.0)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="added" class="doc-h3"><span>Added</span> <button class="copy-section-btn" onclick="copySectionPrompt('Added')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Add polling</li> <li>Add link prefetching</li> <li>Add deferred props</li> <li>Add lazy loading of data when scrolling</li> <li>Add history encryption API</li> <li>Add React 19 support (<a href="https://github.com/inertiajs/inertia/pull/2131">#2131</a>)</li> <li>Add client side visits (<a href="https://github.com/inertiajs/inertia/pull/2130">#2130</a>)</li> </ul> <h3 id="changed" class="doc-h3"><span>Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Removal of NProgress dependency (<a href="https://github.com/inertiajs/inertia/pull/2045">#2045</a>)</li> <li>Change TypeScript module resolution in the Svelte adapter (<a href="https://github.com/inertiajs/inertia/pull/2035">#2035</a>)</li> <li>Refactor <code>createInertiaApp</code> in Svelte adapter (<a href="https://github.com/inertiajs/inertia/pull/2036">#2036</a>)</li> </ul> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix: make Link href prop reactive (<a href="https://github.com/inertiajs/inertia/pull/2089">#2089</a>)</li> </ul> <h2 id="v1-3-0-https-github-com-inertiajs-inertia-compare-v1-2-0-v1-3-0" class="doc-h2"><span>[v1.3.0](https://github.com/inertiajs/inertia/compare/v1.2.0...v1.3.0)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.3.0](https://github.com/inertiajs/inertia/compare/v1.2.0...v1.3.0)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="added" class="doc-h3"><span>Added</span> <button class="copy-section-btn" onclick="copySectionPrompt('Added')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Add React 19 support (<a href="https://github.com/inertiajs/inertia/pull/2121">#2121</a>)</li> <li>Add Svelte 5 support (<a href="https://github.com/inertiajs/inertia/pull/1970">#1970</a>)</li> <li>Add TypeScript support to Svelte adapter (<a href="https://github.com/inertiajs/inertia/pull/1866">#1866</a>, <a href="https://github.com/inertiajs/inertia/commit/69292ef3592ccca5e0f05f7ce131a53f6c1ba22b">69292e</a>, <a href="https://github.com/inertiajs/inertia/pull/2003">#2003</a>, <a href="https://github.com/inertiajs/inertia/pull/2005">#2005</a>)</li> </ul> <h3 id="changed" class="doc-h3"><span>Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Skip intercepting non-left button clicks on links (<a href="https://github.com/inertiajs/inertia/pull/1908">#1908</a>, <a href="https://github.com/inertiajs/inertia/pull/1910">#1910</a>)</li> <li>Changed <code>preserveScroll</code> to be <code>true</code> on initial page visit (<a href="https://github.com/inertiajs/inertia/pull/1360">#1360</a>)</li> <li>Return early when using <code>router.on()</code> during SSR (<a href="https://github.com/inertiajs/inertia/pull/1715">#1715</a>)</li> <li>Use updater function in <code>setData</code> in <code>useForm</code> hook in React adapter (<a href="https://github.com/inertiajs/inertia/pull/1859">#1859</a>)</li> </ul> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix history navigation issue on Chrome iOS (<a href="https://github.com/inertiajs/inertia/pull/1984">#1984</a>, <a href="https://github.com/inertiajs/inertia/pull/1992">#1992</a>)</li> <li>Fix <code>setNavigationType</code> for Safari 10 (<a href="https://github.com/inertiajs/inertia/pull/1957">#1957</a>)</li> <li>Export <code>InertiaFormProps</code> in all adapters (<a href="https://github.com/inertiajs/inertia/pull/1596">#1596</a>, <a href="https://github.com/inertiajs/inertia/pull/1734">#1734</a>)</li> <li>Fix <code>isDirty</code> after <code>form.defaults()</code> call in Vue 3 (<a href="https://github.com/inertiajs/inertia/pull/1985">#1985</a>)</li> <li>Fix scroll reset on page navigation (<a href="https://github.com/inertiajs/inertia/pull/1980">#1980</a>)</li> <li>Fix scroll position restoration for <code>[scroll-region]</code> elements (<a href="https://github.com/inertiajs/inertia/pull/1782">#1782</a>, <a href="https://github.com/inertiajs/inertia/pull/1980">#1980</a>)</li> <li>Fix <code>useForm</code> re-renders by memoizing functions in React adapter (<a href="https://github.com/inertiajs/inertia/pull/1607">#1607</a>)</li> <li>Fix doubling hash when using <code><React.StrictMode></code> (<a href="https://github.com/inertiajs/inertia/pull/1728">#1728</a>)</li> <li>Fix type augmentation in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1958">#1958</a>)</li> <li>Fix form helper <code>transform</code> return type in React adapter (<a href="https://github.com/inertiajs/inertia/pull/1896">#1896</a>)</li> <li>Fix props reactivity in Svelte adapter (<a href="https://github.com/inertiajs/inertia/pull/1969">#1969</a>)</li> <li>Fix <code><Render /></code> component to respect <code>preserveState</code> option in Svelte adapter (<a href="https://github.com/inertiajs/inertia/pull/1943">#1943</a>)</li> <li>Fix 'received an unexpected slot "default"' warning in Svelte adapter (<a href="https://github.com/inertiajs/inertia/pull/1941">#1941</a>)</li> <li>Fix command + click behavior on links in React adapter (<a href="https://github.com/inertiajs/inertia/pull/2132">#2132</a>)</li> <li>Fix import in Svelte adapter (<a href="https://github.com/inertiajs/inertia/pull/2002">#2002</a>)</li> </ul> <h2 id="v1-2-0-https-github-com-inertiajs-inertia-compare-v1-1-0-v1-2-0" class="doc-h2"><span>[v1.2.0](https://github.com/inertiajs/inertia/compare/v1.1.0...v1.2.0)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.2.0](https://github.com/inertiajs/inertia/compare/v1.1.0...v1.2.0)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix <code>preserveScroll</code> and <code>preserveState</code> types (<a href="https://github.com/inertiajs/inertia/pull/1882">#1882</a>)</li> <li>Revert "merge props from partial reloads" (<a href="https://github.com/inertiajs/inertia/pull/1895">#1895</a>)</li> </ul> <h2 id="v1-1-0-https-github-com-inertiajs-inertia-compare-v1-0-16-v1-1-0" class="doc-h2"><span>[v1.1.0](https://github.com/inertiajs/inertia/compare/v1.0.16...v1.1.0)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.1.0](https://github.com/inertiajs/inertia/compare/v1.0.16...v1.1.0)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Add new <code>except</code> visit option to exclude props from partial reloads (<a href="https://github.com/inertiajs/inertia/pull/1876">#1876</a>)</li> <li>Deep merge props from partial reloads (<a href="https://github.com/inertiajs/inertia/pull/1877">#1877</a>)</li> </ul> <h2 id="v1-0-16-https-github-com-inertiajs-inertia-compare-v1-0-15-v1-0-16" class="doc-h2"><span>[v1.0.16](https://github.com/inertiajs/inertia/compare/v1.0.15...v1.0.16)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.16](https://github.com/inertiajs/inertia/compare/v1.0.15...v1.0.16)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix Svelte 4 slot rendering issues (<a href="https://github.com/inertiajs/inertia/pull/1763">#1763</a>)</li> <li>Fix accessibility warning in Svelte <code>Link</code> component (<a href="https://github.com/inertiajs/inertia/pull/1858">#1858</a>)</li> <li>Use <code>Omit</code> instead of <code>Exclude</code> in router types (<a href="https://github.com/inertiajs/inertia/pull/1857">#1857</a>)</li> </ul> <h2 id="v1-0-15-https-github-com-inertiajs-inertia-compare-v1-0-14-v1-0-15" class="doc-h2"><span>[v1.0.15](https://github.com/inertiajs/inertia/compare/v1.0.14...v1.0.15)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.15](https://github.com/inertiajs/inertia/compare/v1.0.14...v1.0.15)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Bump axios from <code>v1.4.0</code> to <code>v1.6.0</code> (<a href="https://github.com/inertiajs/inertia/pull/1723">#1723</a>)</li> </ul> <h2 id="v1-0-14-https-github-com-inertiajs-inertia-compare-v1-0-13-v1-0-14" class="doc-h2"><span>[v1.0.14](https://github.com/inertiajs/inertia/compare/v1.0.13...v1.0.14)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.14](https://github.com/inertiajs/inertia/compare/v1.0.13...v1.0.14)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Revert "Clear errors on form reset (#1568)" (<a href="https://github.com/inertiajs/inertia/pull/1716">#1716</a>)</li> </ul> <h2 id="v1-0-13-https-github-com-inertiajs-inertia-compare-v1-0-12-v1-0-13" class="doc-h2"><span>[v1.0.13](https://github.com/inertiajs/inertia/compare/v1.0.12...v1.0.13)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.13](https://github.com/inertiajs/inertia/compare/v1.0.12...v1.0.13)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Clear errors on form reset (<a href="https://github.com/inertiajs/inertia/pull/1568">#1568</a>)</li> <li>Fix <code>Link</code> type in React (<a href="https://github.com/inertiajs/inertia/pull/1659">#1659</a>)</li> </ul> <h2 id="v1-0-12-https-github-com-inertiajs-inertia-compare-v1-0-11-v1-0-12" class="doc-h2"><span>[v1.0.12](https://github.com/inertiajs/inertia/compare/v1.0.11...v1.0.12)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.12](https://github.com/inertiajs/inertia/compare/v1.0.11...v1.0.12)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix type of <code>onClick</code> for <code>Link</code> component in React and Vue (<a href="https://github.com/inertiajs/inertia/pull/1699">#1699</a>, <a href="https://github.com/inertiajs/inertia/pull/1701">#1701</a>)</li> </ul> <h2 id="v1-0-11-https-github-com-inertiajs-inertia-compare-v1-0-10-v1-0-11" class="doc-h2"><span>[v1.0.11](https://github.com/inertiajs/inertia/compare/v1.0.10...v1.0.11)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.11](https://github.com/inertiajs/inertia/compare/v1.0.10...v1.0.11)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix form helper types for <code>setDefaults()</code> method (React) and <code>defaults()</code> method (Vue) (<a href="https://github.com/inertiajs/inertia/pull/1504">#1504</a>)</li> <li>Fix interface issue with <code>useForm()</code> in React and Vue adapters (<a href="https://github.com/inertiajs/inertia/pull/1649">#1649</a>)</li> </ul> <h2 id="v1-0-10-https-github-com-inertiajs-inertia-compare-v1-0-9-v1-0-10" class="doc-h2"><span>[v1.0.10](https://github.com/inertiajs/inertia/compare/v1.0.9...v1.0.10)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.10](https://github.com/inertiajs/inertia/compare/v1.0.9...v1.0.10)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix Svelte's <code>useForm</code> helper (<a href="https://github.com/inertiajs/inertia/pull/1610">#1610</a>)</li> </ul> <h2 id="v1-0-9-https-github-com-inertiajs-inertia-compare-v1-0-8-v1-0-9" class="doc-h2"><span>[v1.0.9](https://github.com/inertiajs/inertia/compare/v1.0.8...v1.0.9)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.9](https://github.com/inertiajs/inertia/compare/v1.0.8...v1.0.9)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <ul> <li>Fix <code><Head></code> vNode handling in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1590">#1590</a>)</li> <li>Add Svelte 4 support (<a href="https://github.com/inertiajs/inertia/commit/60699c7c5978eebd393e0333b567d8e465f4b58f">60699c7</a>)</li> </ul> <h2 id="v1-0-8-https-github-com-inertiajs-inertia-compare-v1-0-7-v1-0-8" class="doc-h2"><span>[v1.0.8](https://github.com/inertiajs/inertia/compare/v1.0.7...v1.0.8)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.8](https://github.com/inertiajs/inertia/compare/v1.0.7...v1.0.8)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix <code><Head></code> vNode handling in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1570">#1570</a>)</li> <li>Fix watching remembered data in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1571">#1571</a>)</li> </ul> <h2 id="v1-0-7-https-github-com-inertiajs-inertia-compare-v1-0-6-v1-0-7" class="doc-h2"><span>[v1.0.7](https://github.com/inertiajs/inertia/compare/v1.0.6...v1.0.7)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.7](https://github.com/inertiajs/inertia/compare/v1.0.6...v1.0.7)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix <code><Head></code> fragment detection in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1509">#1509</a>)</li> </ul> <h2 id="v1-0-6-https-github-com-inertiajs-inertia-compare-v1-0-5-v1-0-6" class="doc-h2"><span>[v1.0.6](https://github.com/inertiajs/inertia/compare/v1.0.5...v1.0.6)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.6](https://github.com/inertiajs/inertia/compare/v1.0.5...v1.0.6)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix <code>usePage()</code> null object error in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1530">#1530</a>)</li> </ul> <h2 id="v1-0-5-https-github-com-inertiajs-inertia-compare-v1-0-4-v1-0-5" class="doc-h2"><span>[v1.0.5](https://github.com/inertiajs/inertia/compare/v1.0.4...v1.0.5)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.5](https://github.com/inertiajs/inertia/compare/v1.0.4...v1.0.5)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix <code>usePage()</code> reactivity in Vue 2 adapter (<a href="https://github.com/inertiajs/inertia/pull/1527">#1527</a>)</li> </ul> <h3 id="changed" class="doc-h3"><span>Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Simplify the Vue 2 form helper (<a href="https://github.com/inertiajs/inertia/pull/1529">#1529</a>)</li> </ul> <h2 id="v1-0-4-https-github-com-inertiajs-inertia-compare-v1-0-3-v1-0-4" class="doc-h2"><span>[v1.0.4](https://github.com/inertiajs/inertia/compare/v1.0.3...v1.0.4)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.4](https://github.com/inertiajs/inertia/compare/v1.0.3...v1.0.4)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="added" class="doc-h3"><span>Added</span> <button class="copy-section-btn" onclick="copySectionPrompt('Added')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Added <code>displayName</code> to <code>Link</code> component in React adapter (<a href="https://github.com/inertiajs/inertia/pull/1512">#1512</a>)</li> </ul> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fix <code>usePage()</code> reactivity in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1469">#1469</a>)</li> </ul> <h2 id="v1-0-3-https-github-com-inertiajs-inertia-compare-v1-0-2-v1-0-3" class="doc-h2"><span>[v1.0.3](https://github.com/inertiajs/inertia/compare/v1.0.2...v1.0.3)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.3](https://github.com/inertiajs/inertia/compare/v1.0.2...v1.0.3)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="added" class="doc-h3"><span>Added</span> <button class="copy-section-btn" onclick="copySectionPrompt('Added')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Added initialization callback to form helper in Vue adapters (<a href="https://github.com/inertiajs/inertia/pull/1516">#1516</a>)</li> </ul> <h2 id="v1-0-2-https-github-com-inertiajs-inertia-compare-v1-0-1-v1-0-2" class="doc-h2"><span>[v1.0.2](https://github.com/inertiajs/inertia/compare/v1.0.1...v1.0.2)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.2](https://github.com/inertiajs/inertia/compare/v1.0.1...v1.0.2)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Added explicit children to <code>InertiaHeadProps</code> (<a href="https://github.com/inertiajs/inertia/pull/1448">#1448</a>)</li> <li>Exported <code>InertiaLinkProps</code> type (<a href="https://github.com/inertiajs/inertia/pull/1450">#1450</a>)</li> <li>Improved React <code>usePage</code> generic type (<a href="https://github.com/inertiajs/inertia/pull/1451">#1451</a>)</li> </ul> <h2 id="v1-0-1-https-github-com-inertiajs-inertia-compare-v1-0-0-v1-0-1" class="doc-h2"><span>[v1.0.1](https://github.com/inertiajs/inertia/compare/v1.0.0...v1.0.1)</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.1](https://github.com/inertiajs/inertia/compare/v1.0.0...v1.0.1)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fixed Vue type overrides for <code>$page</code> and <code>$inertia</code> (<a href="https://github.com/inertiajs/inertia/pull/1393">#1393</a>)</li> <li>Restored React <code>usePage</code> generic type (<a href="https://github.com/inertiajs/inertia/pull/1396">#1396</a>)</li> <li>Prevented need to use <code>Method</code> enum with the Link component (<a href="https://github.com/inertiajs/inertia/pull/1392">#1392</a>)</li> <li>Restored Vue 3 <code>usePage</code> generic type (<a href="https://github.com/inertiajs/inertia/pull/1394">#1394</a>)</li> <li>Fixed export of server types (<a href="https://github.com/inertiajs/inertia/pull/1397">#1397</a>)</li> <li>Updated form types to support nested data (<a href="https://github.com/inertiajs/inertia/pull/1401">#1401</a>)</li> <li>Allowed stronger type support with Vue <code>useForm</code> (<a href="https://github.com/inertiajs/inertia/pull/1413">#1413</a>)</li> <li>Fixed Vue 2 <code>setup</code> prop types (<a href="https://github.com/inertiajs/inertia/pull/1418">#1418</a>)</li> <li>Fixed issue when passing multiple children to React <code>Head</code> component (<a href="https://github.com/inertiajs/inertia/pull/1433">#1433</a>)</li> </ul> <h2 id="v1-0-0-https-github-com-inertiajs-inertia-compare-7ce91ec-v1-0-0-2023-01-14" class="doc-h2"><span>[v1.0.0](https://github.com/inertiajs/inertia/compare/7ce91ec...v1.0.0) - 2023-01-14</span> <button class="copy-section-btn" onclick="copySectionPrompt('[v1.0.0](https://github.com/inertiajs/inertia/compare/7ce91ec...v1.0.0) - 2023-01-14')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h3 id="added" class="doc-h3"><span>Added</span> <button class="copy-section-btn" onclick="copySectionPrompt('Added')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Added SSR support to Svelte library (<a href="https://github.com/inertiajs/inertia/pull/1349">#1349</a>)</li> <li>Added first-class TypeScript support to React adapter</li> <li>Added first-class TypeScript support to Vue 2 adapter</li> <li>Added first-class TypeScript support to Vue 3 adapter</li> <li>Added new <code>useForm()</code> hook to Vue 2 adapter (<a href="https://github.com/inertiajs/inertia/commit/ff59196">ff59196</a>)</li> </ul> <h3 id="changed" class="doc-h3"><span>Changed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Changed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Renamed <code>@inertiajs/inertia</code> library to <code>@inertiajs/core</code> (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>)</li> <li>Renamed <code>@inertiajs/inertia-react</code> library to <code>@inertiajs/react</code> (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>)</li> <li>Renamed <code>@inertiajs/inertia-svelte</code> library to <code>@inertiajs/svelte</code> (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>)</li> <li>Renamed <code>@inertiajs/inertia-vue</code> library to <code>@inertiajs/vue2</code> (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>)</li> <li>Renamed <code>@inertiajs/inertia-vue3</code> library to <code>@inertiajs/vue3</code> (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>)</li> <li>Merged progress library to core and deprecated <code>@inertiajs/progress</code> library (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>, <a href="https://github.com/inertiajs/inertia/commit/0b5f773">0b5f773</a>)</li> <li>Merged server library to core and deprecated <code>@inertiajs/server</code> library (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>)</li> <li>Renamed <code>Inertia</code> named export to <code>router</code> (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>, <a href="https://github.com/inertiajs/inertia/commit/e556703">e556703</a>)</li> <li>Removed deprecated named exports (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>, <a href="https://github.com/inertiajs/inertia/commit/e556703">e556703</a>)</li> <li>Removed deprecated <code>app</code> argument from <code>createInertiaApp()</code> in Vue adapters (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>, <a href="https://github.com/inertiajs/inertia/commit/65f8a5f">65f8a5f</a>)</li> <li>Updated axios to 1.x (<a href="https://github.com/inertiajs/inertia/pull/1377">#1377</a>)</li> <li>Simplified <code>usePage()</code> hook in Vue 3 adapter (<a href="https://github.com/inertiajs/inertia/pull/1373">#1373</a>)</li> <li>Improved Svelte <code>use:inertia</code> and <code><Link /></code> component (<a href="https://github.com/inertiajs/inertia/pull/1344">#1344</a>)</li> <li>Removed global <code>visitOptions()</code> hook (<a href="https://github.com/inertiajs/inertia/pull/1282">#1282</a>, <a href="https://github.com/inertiajs/inertia/commit/30908c2">30908c2</a>)</li> <li>Switched bundler from Microbundle to ESbuild (<a href="https://github.com/inertiajs/inertia/commit/f711b46">f711b46</a>, <a href="https://github.com/inertiajs/inertia/commit/8093713">8093713</a>, <a href="https://github.com/inertiajs/inertia/commit/342312d">342312d</a>, <a href="https://github.com/inertiajs/inertia/commit/c9e12b3">c9e12b3</a>)</li> </ul> <h3 id="fixed" class="doc-h3"><span>Fixed</span> <button class="copy-section-btn" onclick="copySectionPrompt('Fixed')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li>Fixed <code><title></code> tag not always being included when a <code>title</code> callback is defined in <code>createInertiaApp()</code> (<a href="https://github.com/inertiajs/inertia/pull/1055">#1055</a>)</li> <li>Fixed types to include <code>undefined</code> as a valid <code>FormDataConvertable</code> option (<a href="https://github.com/inertiajs/inertia/pull/1165">#1165</a>)</li> <li>Fixed issue where remembered state wasn't clear on a full page reload (<a href="https://github.com/inertiajs/inertia/commit/769f643">769f643</a>)</li> </ul> <hr class="doc-divider" style="border:none; border-top:1px solid var(--border, #27272a); margin:2rem 0;" /> <h2 id="file-contributing-md" class="doc-h2"><span>File: CONTRIBUTING.md</span> <button class="copy-section-btn" onclick="copySectionPrompt('File: CONTRIBUTING.md')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <h2 id="contributing" class="doc-h1">Contributing</h2> <p>Thank you for your interest in contributing to Inertia.js! Your contributions help make this project better for everyone.</p> <p>Inertia.js is maintained as a monorepo using <a href="https://pnpm.io/workspaces">pnpm workspaces</a>. Below you'll find an overview of the repository and how to get your development environment running.</p> <blockquote> <p><strong>Note:</strong> You'll need <strong>pnpm version 10 or higher</strong>. If you're unsure which version you have, run <code>pnpm -v</code>.</p> </blockquote> <h2 id="repository-overview" class="doc-h2"><span>Repository Overview</span> <button class="copy-section-btn" onclick="copySectionPrompt('Repository Overview')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <div class="code-block-wrapper"><div class="code-header"><span>text</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-text">inertia/ ├── packages/ Core libraries and framework adapters │ ├── core/ Framework-agnostic core library │ ├── react/ React adapter │ │ └── test-app/ React test application │ ├── svelte/ Svelte adapter │ │ └── test-app/ Svelte test application │ └── vue3/ Vue 3 adapter │ └── test-app/ Vue 3 test application ├── playgrounds/ Full Laravel applications for manual testing │ ├── react/ Laravel + React │ ├── svelte5/ Laravel + Svelte 5 │ └── vue3/ Laravel + Vue 3 └── tests/ End-to-end tests and test server ├── app/ Shared Node.js backend └── *.spec.ts Playwright test suite</code></pre></div> <h3 id="key-components" class="doc-h3"><span>Key Components</span> <button class="copy-section-btn" onclick="copySectionPrompt('Key Components')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <ul> <li><strong>Core Library:</strong> The framework-agnostic engine powering all adapters (<code>packages/core</code>).</li> <li><strong>Adapters:</strong> Framework-specific integrations for React, Svelte, and Vue.</li> <li><strong>Test Applications:</strong> Minimal frontend apps used for automated testing (<code>packages/*/test-app/</code>).</li> <li><strong>Playwright Tests:</strong> Framework-agnostic end-to-end tests that verify behavior across adapters (<code>tests/*.spec.ts</code>).</li> <li><strong>Playgrounds:</strong> Full Laravel applications for manual testing (<code>playgrounds/</code>). These are optional and may eventually be removed.</li> </ul> <h2 id="getting-started" class="doc-h2"><span>Getting Started</span> <button class="copy-section-btn" onclick="copySectionPrompt('Getting Started')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>Clone the repository and install the dependencies:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">git clone https://github.com/inertiajs/inertia.git inertia cd inertia pnpm install</code></pre></div> <p>Then, start the development environment:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm dev</code></pre></div> <p>This builds the core library and all adapters, and starts a file watcher that will automatically rebuild each package when changes are made.</p> <p>If you prefer, you can also start individual watchers from each package directory. For example:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">cd packages/core && pnpm dev cd packages/react && pnpm dev</code></pre></div> <blockquote> <p><strong>Note:</strong> The core package (<code>packages/core</code>) must always be running, as all adapters depend on it.</p> </blockquote> <h2 id="running-tests" class="doc-h2"><span>Running Tests</span> <button class="copy-section-btn" onclick="copySectionPrompt('Running Tests')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>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.</p> <p>Run the test suite for a specific adapter:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm test:react pnpm test:svelte pnpm test:vue</code></pre></div> <p>These commands automatically set a <code>PACKAGE</code> environment variable that tells the Node.js test server which adapter to serve. For example, when running <code>pnpm test:react</code>, the test server loads the React test application.</p> <p>If you want to run Playwright directly, you can pass the environment variable yourself:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">PACKAGE=react playwright test</code></pre></div> <p>You may filter tests by name:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm test:react -g "partial reload"</code></pre></div> <p>Run tests in headed mode (to see the browser):</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm test:vue --headed</code></pre></div> <p>Or in debug mode:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm test:vue --debug</code></pre></div> <h3 id="how-the-test-setup-works" class="doc-h3"><span>How the Test Setup Works</span> <button class="copy-section-btn" onclick="copySectionPrompt('How the Test Setup Works')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <p>All adapters use the same Node.js backend and Playwright test suite. The only difference is which adapter's test app is served.</p> <div class="code-block-wrapper"><div class="code-header"><span>text</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-text">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</code></pre></div> <p>When running a test command, the correct adapter is selected automatically:</p> <table> <thead> <tr> <th>Adapter</th> <th><code>PACKAGE</code> value</th> <th>Test server port</th> <th>App URL</th> </tr> </thead> <tbody><tr> <td>React</td> <td><code>react</code></td> <td>13716</td> <td><a href="http://localhost:13716/">http://localhost:13716/</a></td> </tr> <tr> <td>Svelte</td> <td><code>svelte</code></td> <td>13717</td> <td><a href="http://localhost:13717/">http://localhost:13717/</a></td> </tr> <tr> <td>Vue 3</td> <td><code>vue3</code></td> <td>13715</td> <td><a href="http://localhost:13715/">http://localhost:13715/</a></td> </tr> </tbody></table> <h3 id="automatic-test-server-boot" class="doc-h3"><span>Automatic Test Server Boot</span> <button class="copy-section-btn" onclick="copySectionPrompt('Automatic Test Server Boot')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <p>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 (<code>playwright.config.ts</code>) using the <a href="https://playwright.dev/docs/test-configuration#webserver"><code>webServer</code></a> option. If a server is already running (for example, during local development), Playwright will reuse it.</p> <h2 id="running-test-applications" class="doc-h2"><span>Running Test Applications</span> <button class="copy-section-btn" onclick="copySectionPrompt('Running Test Applications')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>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.</p> <p>Run all test apps at once:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm dev:test-app</code></pre></div> <p>Or start an individual one:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm dev:test-app:react pnpm dev:test-app:svelte pnpm dev:test-app:vue</code></pre></div> <p>Each test app runs two servers:</p> <ul> <li>A Node.js backend that automatically restarts when changed</li> <li>A Vite development server for the frontend</li> </ul> <p>If you are developing a new feature or fixing a bug, you can use these test apps to develop and test your changes.</p> <h2 id="adding-tests" class="doc-h2"><span>Adding Tests</span> <button class="copy-section-btn" onclick="copySectionPrompt('Adding Tests')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>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.</p> <h3 id="1-add-frontend-pages" class="doc-h3"><span>1. Add Frontend Pages</span> <button class="copy-section-btn" onclick="copySectionPrompt('1. Add Frontend Pages')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <p>Create the same frontend page in each test application:</p> <div class="code-block-wrapper"><div class="code-header"><span>text</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-text">packages/react/test-app/Pages/YourFeature.jsx packages/svelte/test-app/Pages/YourFeature.svelte packages/vue3/test-app/Pages/YourFeature.vue</code></pre></div> <p>Each page should provide the same behavior and functionality.</p> <h3 id="2-add-backend-routes-if-needed" class="doc-h3"><span>2. Add Backend Routes (If Needed)</span> <button class="copy-section-btn" onclick="copySectionPrompt('2. Add Backend Routes (If Needed)')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <p>If your change requires a backend route, add it to the shared Node.js test server:</p> <div class="code-block-wrapper"><div class="code-header"><span>javascript</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-javascript">// tests/app/server.js app.get('/your-feature', (req, res) => inertia.render(req, res, { component: 'YourFeature', props: { foo: 'bar' }, }), )</code></pre></div> <h3 id="3-write-a-playwright-test" class="doc-h3"><span>3. Write a Playwright Test</span> <button class="copy-section-btn" onclick="copySectionPrompt('3. Write a Playwright Test')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <p>Add a new Playwright test to verify your change. Playwright allows us to test features across all adapters without duplicating test logic.</p> <div class="code-block-wrapper"><div class="code-header"><span>typescript</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-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 })</code></pre></div> <h3 id="4-run-the-tests-in-all-adapters" class="doc-h3"><span>4. Run the Tests in All Adapters</span> <button class="copy-section-btn" onclick="copySectionPrompt('4. Run the Tests in All Adapters')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <p>Be sure to run your test for each adapter:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm test:react -g "your feature" pnpm test:svelte -g "your feature" pnpm test:vue -g "your feature"</code></pre></div> <p>Your work is not considered complete until it works consistently across all frameworks.</p> <h2 id="using-the-playgrounds-optional" class="doc-h2"><span>Using the Playgrounds (Optional)</span> <button class="copy-section-btn" onclick="copySectionPrompt('Using the Playgrounds (Optional)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>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.</p> <p>The playgrounds are provided as-is and are not part of the automated test setup. They may be removed in the future.</p> <h3 id="getting-started" class="doc-h3"><span>Getting Started</span> <button class="copy-section-btn" onclick="copySectionPrompt('Getting Started')" title="Copy section prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Section</button></h3> <p>To start a playground, simply run:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm playground:react</code></pre></div> <p>The playground script will automatically handle initial setup if needed:</p> <ul> <li>Installing PHP dependencies via Composer</li> <li>Installing Node.js dependencies via pnpm</li> <li>Creating the <code>.env</code> file from <code>.env.example</code></li> <li>Generating the application key</li> <li>Setting up the SQLite database</li> <li>Running migrations with seed data</li> </ul> <p>Visit the application at <a href="http://127.0.0.1:8000">http://127.0.0.1:8000</a>.</p> <p>Each playground has its own pnpm script:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">pnpm playground:react pnpm playground:svelte pnpm playground:vue</code></pre></div> <h2 id="publishing-maintainers-only" class="doc-h2"><span>Publishing (Maintainers Only)</span> <button class="copy-section-btn" onclick="copySectionPrompt('Publishing (Maintainers Only)')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>Releasing is handled by the included release script. You'll need both the <code>git</code> CLI and the GitHub CLI (<a href="https://cli.github.com"><code>gh</code></a>) installed. To create a new release:</p> <div class="code-block-wrapper"><div class="code-header"><span>sh</span><button class="copy-code-btn" onclick="copyCode(this)"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy</button></div><pre><code class="language-sh">./release.sh</code></pre></div> <p>The script will:</p> <ul> <li>Ensure you're on the master branch with a clean working tree</li> <li>Prompt you to select the type of version bump (patch, minor, or major)</li> <li>Update all package versions automatically</li> <li>Update the lockfile</li> <li>Create a git commit and tag</li> <li>Push changes and tags to GitHub</li> <li>Create a GitHub release with auto-generated notes</li> <li>Trigger the CI publishing workflow</li> </ul> <p>Publishing is handled securely using GitHub + npm <a href="https://docs.npmjs.com/trusted-publishers">trusted publishing</a>.</p> <hr class="doc-divider" style="border:none; border-top:1px solid var(--border, #27272a); margin:2rem 0;" /> <h2 id="file-license-md" class="doc-h2"><span>File: LICENSE.md</span> <button class="copy-section-btn" onclick="copySectionPrompt('File: LICENSE.md')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>MIT License</p> <p>Copyright (c) Jonathan Reinink <a href="mailto:jonathan@reinink.ca">jonathan@reinink.ca</a></p> <p>Permission is hereby granted, free of charge, to any person obtaining a copy<br>of this software and associated documentation files (the "Software"), to deal<br>in the Software without restriction, including without limitation the rights<br>to use, copy, modify, merge, publish, distribute, sublicense, and/or sell<br>copies of the Software, and to permit persons to whom the Software is<br>furnished to do so, subject to the following conditions:</p> <p>The above copyright notice and this permission notice shall be included in all<br>copies or substantial portions of the Software.</p> <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br>IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br>FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE<br>AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER<br>LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,<br>OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE<br>SOFTWARE.</p> <hr class="doc-divider" style="border:none; border-top:1px solid var(--border, #27272a); margin:2rem 0;" /> <h2 id="file-package-json" class="doc-h2"><span>File: package.json</span> <button class="copy-section-btn" onclick="copySectionPrompt('File: package.json')" title="Copy chapter prompt for LLMs"><i data-lucide="copy" style="width:12px;height:12px;"></i> Copy Chapter</button></h2> <p>{<br> "name": "inertia",<br> "private": true,<br> "type": "module",<br> "scripts": {<br> "build:all": "pnpm -r --filter './packages/<em>' build",<br> "dev": "pnpx concurrently -c "#b794f4,#61dafb,#d43008,#32a06f,#bd34fe,#ffa800" "pnpm dev:core" "pnpm dev:react" "pnpm dev:svelte" "pnpm dev:vue" "pnpm dev:vite" --names=core,react,svelte,vue,vite",<br> "dev:core": "cd packages/core && pnpm run dev",<br> "dev:vite": "cd packages/vite && pnpm run dev",<br> "dev:vue": "cd packages/vue3 && pnpm run dev",<br> "dev:react": "cd packages/react && pnpm run dev",<br> "dev:svelte": "cd packages/svelte && pnpm run dev",<br> "dev:test-app": "pnpx concurrently -c "#61dafb,#d43008,#32a06f" "pnpm dev:test-app:react" "pnpm dev:test-app:svelte" "pnpm dev:test-app:vue" --names=react,svelte,vue",<br> "dev:test-app:react": "pnpx concurrently -c "#c4b5fd,#ffa800" "cd tests/app && PACKAGE=react pnpm serve:watch" "cd packages/react/test-app && pnpm run dev" --names=server,vite",<br> "dev:test-app:svelte": "pnpx concurrently -c "#c4b5fd,#ffa800" "cd tests/app && PACKAGE=svelte pnpm serve:watch" "cd packages/svelte/test-app && pnpm run dev" --names=server,vite",<br> "dev:test-app:vue": "pnpx concurrently -c "#c4b5fd,#ffa800" "cd tests/app && PACKAGE=vue3 pnpm serve:watch" "cd packages/vue3/test-app && pnpm run dev" --names=server,vite",<br> "es2022-check": "pnpm -r --filter './packages/</em>' es2022-check",<br> "lint:test-app": "pnpm -r --filter './packages/<em>/test-app' lint",<br> "lint:test-app:react": "cd packages/react/test-app && pnpm run lint",<br> "lint:test-app:svelte": "cd packages/svelte/test-app && pnpm run lint",<br> "lint:test-app:vue": "cd packages/vue3/test-app && pnpm run lint",<br> "type-check:test-app": "pnpm -r --filter './packages/</em>/test-app' type-check",<br> "type-check:test-app:react": "cd packages/react/test-app && pnpm run type-check",<br> "type-check:test-app:svelte": "cd packages/svelte/test-app && pnpm run type-check",<br> "type-check:test-app:vue": "cd packages/vue3/test-app && pnpm run type-check",<br> "test:react": "PACKAGE=react node playwright.js",<br> "test:svelte": "PACKAGE=svelte node playwright.js",<br> "test:vue": "PACKAGE=vue3 node playwright.js",<br> "test:ssr:react": "PACKAGE=react SSR=true npx playwright test",<br> "test:ssr:svelte": "PACKAGE=svelte SSR=true npx playwright test",<br> "test:ssr:vue": "PACKAGE=vue3 SSR=true npx playwright test",<br> "test:vite": "cd packages/vite && pnpm test",<br> "playground:react": "cd playgrounds/react && ./init.sh && composer run dev",<br> "playground:svelte": "cd playgrounds/svelte5 && ./init.sh && composer run dev",<br> "playground:vue": "cd playgrounds/vue3 && ./init.sh && composer run dev",<br> "format": "oxfmt"<br> },<br> "devDependencies": {<br> "@playwright/test": "1.58.2",<br> "oxfmt": "^0.72.0",<br> "oxlint": "^1.66.0"<br> },<br> "optionalDependencies": {<br> "@rollup/rollup-linux-x64-gnu": "^4.59.0"<br> },<br> "engines": {<br> "pnpm": ">=11.1.1"<br> }<br>}</p> </article> <!-- Related Topics & Ecosystem Discovery Card --> <section class="related-catalogs-card"> <div style="display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 1rem;"> <h3 style="font-size: 1.05rem; font-weight: 700; color: #ffffff; margin: 0; display: flex; align-items: center; gap: 8px;"> <i data-lucide="compass" style="width:16px;height:16px;color:#38bdf8;"></i> Explore Related Technologies & Topics </h3> <a href="/" style="font-size: 0.8rem; color: #38bdf8; text-decoration: none; font-weight: 500;">View All 9,111+ Repositories →</a> </div> <p style="color: var(--text-secondary); font-size: 0.85rem; line-height: 1.5; margin-bottom: 1.25rem;"> Discover similar high-velocity repositories, agent skills, and OpenAPI specifications across the ecosystem. </p> <div class="related-chips-grid"> <a href="/topic/mcp" class="related-topic-card"> <span class="related-card-title">⚡ MCP Servers</span> <span class="related-card-sub">Model Context Protocol →</span> </a> <a href="/topic/skills" class="related-topic-card"> <span class="related-card-title">🧠 Agent Skills</span> <span class="related-card-sub">Prompt & rule files →</span> </a> <a href="/topic/openapi" class="related-topic-card"> <span class="related-card-title">🔌 OpenAPI Specs</span> <span class="related-card-sub">REST & Swagger schemas →</span> </a> </div> </section> <!-- Standardized 5-Column Navigation Footer --> <footer class="site-footer" style="border-top: 1px solid #27272a; padding: 3.5rem 0 6rem; color: #a1a1aa; font-size: 0.875rem; margin-top: auto; background: #09090b; width: 100%; box-sizing: border-box;"> <div style="max-width: 1200px; margin: 0 auto; width: 100%; box-sizing: border-box; padding: 0 1rem;"> <!-- Swiss Open-Source Craft & Support Banner --> <div style="background: linear-gradient(135deg, rgba(24, 24, 27, 0.8), rgba(18, 18, 21, 0.95)); border: 1px solid #27272a; border-radius: 16px; padding: 1.75rem; margin-bottom: 3rem; display: flex; flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1.5rem;"> <div style="max-width: 720px;"> <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 0.5rem; flex-wrap: wrap;"> <span style="font-size: 0.725rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; background: rgba(239, 68, 68, 0.12); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.25); padding: 2px 8px; border-radius: 9999px; display: inline-flex; align-items: center; gap: 4px;"> 🇨🇭 Swiss Open-Source Initiative </span> <span style="font-size: 0.8rem; color: #71717a;">•</span> <a href="https://geekworkers.ch/" target="_blank" rel="noopener noreferrer" style="color: #38bdf8; text-decoration: none; font-size: 0.85rem; font-weight: 600; display: inline-flex; align-items: center; gap: 4px;"> Geek Workers Web Agency </a> </div> <h3 style="font-size: 1.05rem; font-weight: 700; color: #ffffff; margin: 0 0 0.4rem 0;"> Powering Free, High-Velocity Context for the Global AI & Developer Community </h3> <p style="color: #a1a1aa; font-size: 0.825rem; line-height: 1.55; margin: 0;"> YakaAI indexes 9,100+ open-source repositories with zero-latency Cloudflare Edge endpoints. If YakaAI saves you time or empowers your AI workflows, consider leaving a small tip to help sustain our public servers. </p> </div> <a href="/?donate=true" style="display: inline-flex; align-items: center; gap: 8px; background: linear-gradient(135deg, #f43f5e, #e11d48); color: #ffffff; text-decoration: none; border-radius: 12px; padding: 12px 22px; font-size: 0.875rem; font-weight: 700; box-shadow: 0 4px 20px rgba(244, 63, 94, 0.25);"> <span>Support YakaAI / Tip</span> </a> </div> <!-- 5-Column Navigation Grid --> <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 2.5rem; margin-bottom: 2.5rem; text-align: left;"> <div> <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 0.75rem;"> <img src="/favicon.svg" alt="YakaAI Logo" style="width: 24px; height: 24px; border-radius: 50%; filter: drop-shadow(0 0 8px rgba(56, 189, 248, 0.35));"> <span style="font-size: 1.15rem; font-weight: 800; color: #ffffff; letter-spacing: -0.02em;">YakaAI</span> </div> <p style="color: #a1a1aa; font-size: 0.825rem; line-height: 1.55; margin-bottom: 0.85rem;"> Technical documentation, turnkey Docker images, verified desktop installers, and AI agent skills formatted for zero-drift LLMs. </p> <div style="font-size: 0.8rem; color: #71717a; display: flex; align-items: center; gap: 5px;"> <span>Cloudflare Global Edge</span> </div> </div> <div> <h4 style="font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #d4d4d8; margin-bottom: 0.75rem;">Core Hubs</h4> <ul style="list-style: none; display: flex; flex-direction: column; gap: 0.45rem; padding: 0; margin: 0;"> <li><a href="/leaderboard" style="color: #fbbf24; text-decoration: none; font-weight: 600; font-size: 0.825rem;">🏆 AI Models Leaderboard</a></li> <li><a href="/topic/skills" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🧠 Agent Skills & Rules</a></li> <li><a href="/topic/mcp" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">⚡ MCP Servers Hub</a></li> <li><a href="/topic/docker" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🐳 Docker & Self-Host</a></li> <li><a href="/topic/apps" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">💻 Apps & Installers</a></li> <li><a href="/topic/openapi" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🔌 API Specifications</a></li> <li><a href="/topic/ai" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🤖 AI & LLM Tools</a></li> </ul> </div> <div> <h4 style="font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #38bdf8; margin-bottom: 0.75rem;">⚖️ Comparisons</h4> <ul style="list-style: none; display: flex; flex-direction: column; gap: 0.45rem; padding: 0; margin: 0;"> <li><a href="/compare" style="color: #38bdf8; text-decoration: none; font-weight: 600; font-size: 0.825rem;">Master Matrix</a></li> <li><a href="/compare/context7" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs Context7</a></li> <li><a href="/compare/jina-reader" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs Jina AI Reader</a></li> <li><a href="/compare/firecrawl" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs Firecrawl</a></li> <li><a href="/compare/repomix" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs Repomix</a></li> <li><a href="/compare/smithery" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs Smithery.ai</a></li> <li><a href="/compare/cursor-directory" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs Cursor Directory</a></li> <li><a href="/compare/devdocs" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs DevDocs.io</a></li> <li><a href="/compare/docsgpt" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs DocsGPT</a></li> <li><a href="/compare/tavily" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">vs Tavily AI</a></li> </ul> </div> <div> <h4 style="font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #d4d4d8; margin-bottom: 0.75rem;">Popular Stacks</h4> <ul style="list-style: none; display: flex; flex-direction: column; gap: 0.45rem; padding: 0; margin: 0;"> <li><a href="/topic/react" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">React Ecosystem</a></li> <li><a href="/topic/nextjs" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">Next.js Framework</a></li> <li><a href="/topic/hono" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">Hono Edge Framework</a></li> <li><a href="/topic/tailwind" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">Tailwind CSS</a></li> <li><a href="/topic/typescript" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">TypeScript</a></li> <li><a href="/topic/rust" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">Rust Systems</a></li> </ul> </div> <div> <h4 style="font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: #d4d4d8; margin-bottom: 0.75rem;">Agent Protocols</h4> <ul style="list-style: none; display: flex; flex-direction: column; gap: 0.45rem; padding: 0; margin: 0;"> <li><a href="/AGENTS.md" target="_blank" rel="noopener noreferrer" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🤖 AGENTS.md Standard</a></li> <li><a href="/llms.txt" target="_blank" rel="noopener noreferrer" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">📄 llms.txt Format</a></li> <li><a href="/openapi.json" target="_blank" rel="noopener noreferrer" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🔌 OpenAPI 3.1 Schema</a></li> <li><a href="/.well-known/mcp/server-card.json" target="_blank" rel="noopener noreferrer" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">⚡ MCP Server Card</a></li> <li><a href="/.well-known/agent-skills/index.json" target="_blank" rel="noopener noreferrer" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🧠 Agent Skills (RFC)</a></li> <li><a href="/api/leaderboard" target="_blank" rel="noopener noreferrer" style="color: #a1a1aa; text-decoration: none; font-size: 0.825rem;">🏆 AI Models API</a></li> </ul> </div> </div> <div style="border-top: 1px solid #27272a; padding-top: 1.5rem; text-align: center; color: #a1a1aa; font-size: 0.85rem; display: flex; align-items: center; gap: 0.5rem; justify-content: center; flex-wrap: wrap;"> <span style="color: #ffffff; font-weight: 600;">YakaAI</span> <span style="opacity: 0.4;">•</span> <span>Open Ecosystem for LLMs & Developers</span> <span style="opacity: 0.4;">•</span> <span>by <a href="https://geekworkers.ch/" target="_blank" rel="noopener noreferrer" style="color: #e4e4e7; text-decoration: none; font-weight: 500;">geekworkers.ch</a> (Lausanne, Switzerland)</span> </div> </div> </footer> </main> </div> </div> <script> // Initialize Lucide Icons if (window.lucide) { window.lucide.createIcons(); } // Client-side OS auto-detection for smart downloads (function detectClientOS() { const ua = navigator.userAgent || ''; let detectedOS = 'unknown'; if (/Win/i.test(ua)) detectedOS = 'windows'; else if (/Mac/i.test(ua)) detectedOS = 'macos'; else if (/Linux/i.test(ua)) detectedOS = 'linux'; const labelEl = document.getElementById('os-detected-label'); if (labelEl) { if (detectedOS === 'windows') labelEl.innerText = 'Download for Windows (.exe / .msi)'; else if (detectedOS === 'macos') labelEl.innerText = 'Download for macOS (.dmg)'; else if (detectedOS === 'linux') labelEl.innerText = 'Download for Linux (.AppImage / .deb)'; } })(); // Copy Utilities function copyCode(btn) { const code = btn.closest('.code-block-wrapper').querySelector('code').innerText; navigator.clipboard.writeText(code); btn.innerHTML = '<i data-lucide="check" style="width:12px;height:12px;"></i> Copied!'; if (window.lucide) window.lucide.createIcons(); setTimeout(() => { btn.innerHTML = '<i data-lucide="copy" style="width:12px;height:12px;"></i> Copy'; if (window.lucide) window.lucide.createIcons(); }, 2000); } function copySectionPrompt(sectionTitle) { const prompt = '<yakaai_context>\nGET https://yakaai.com/api/cheat/inertiajs/inertia?section=' + encodeURIComponent(sectionTitle.toLowerCase()) + '\n</yakaai_context>'; navigator.clipboard.writeText(prompt); alert('Section prompt copied for LLMs!'); } function copyFullPrompt() { const prompt = '<yakaai_context>\n# 1. Technical Documentation:\nGET https://yakaai.com/api/cheat/inertiajs/inertia\n\n# 2. Deep Knowledge Reference:\nGET https://codewiki.google/github.com/inertiajs/inertia\n\n# 3. Agent Skills & Rules:\nGET https://yakaai.com/api/skills/inertiajs/inertia\n</yakaai_context>'; navigator.clipboard.writeText(prompt); alert('AI Context Prompt copied to clipboard! (Includes YakaAI + CodeWiki endpoints)'); } async function fetchAndCopyJson(url, label) { try { const res = await fetch(url); const data = await res.json(); navigator.clipboard.writeText(JSON.stringify(data, null, 2)); alert(label + ' copied to clipboard!'); } catch(e) { alert('Error fetching data.'); } } // ScrollSpy for Active TOC Link const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { const id = entry.target.getAttribute('id'); document.querySelectorAll('.toc-link').forEach(link => { link.classList.toggle('active', link.getAttribute('href') === '#' + id); }); } }); }, { rootMargin: '0px 0px -70% 0px' }); document.querySelectorAll('.doc-h1, .doc-h2, .doc-h3').forEach(h => observer.observe(h)); // Instant Fuse.js In-Doc Search (Ctrl+K) const searchInput = document.getElementById('doc-search'); const headingsData = [{"id":"file-readme-md","title":"File: README.md","level":2},{"id":"about-inertia-js","title":"About Inertia.js","level":2},{"id":"adapters","title":"Adapters","level":2},{"id":"learning-inertia-js","title":"Learning Inertia.js","level":2},{"id":"deploying-inertia-js","title":"Deploying Inertia.js","level":2},{"id":"code-of-conduct","title":"Code of Conduct","level":2},{"id":"security-vulnerabilities","title":"Security Vulnerabilities","level":2},{"id":"file-changelog-md","title":"File: CHANGELOG.md","level":2},{"id":"changelog","title":"Changelog","level":1},{"id":"unreleased","title":"Unreleased","level":2},{"id":"v3-9-1-2026-10-09","title":"v3.9.1 - 2026-10-09","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-9-0-2026-10-09","title":"v3.9.0 - 2026-10-09","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-8-0-2026-10-01","title":"v3.8.0 - 2026-10-01","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-7-1-2026-09-11","title":"v3.7.1 - 2026-09-11","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-7-0-2026-08-18","title":"v3.7.0 - 2026-08-18","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-6-1-2026-07-07","title":"v3.6.1 - 2026-07-07","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-6-0-2026-07-02","title":"v3.6.0 - 2026-07-02","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-5-0-2026-06-25","title":"v3.5.0 - 2026-06-25","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-4-0-2026-06-11","title":"v3.4.0 - 2026-06-11","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-3-1-2026-06-04","title":"v3.3.1 - 2026-06-04","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-3-0-2026-05-27","title":"v3.3.0 - 2026-05-27","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-2-0-2026-05-20","title":"v3.2.0 - 2026-05-20","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-1-1-2026-05-07","title":"v3.1.1 - 2026-05-07","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-1-0-2026-05-06","title":"v3.1.0 - 2026-05-06","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v3-0-3-2026-04-07","title":"v3.0.3 - 2026-04-07","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-0-2-2026-04-02","title":"v3.0.2 - 2026-04-02","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-0-1-2026-03-31","title":"v3.0.1 - 2026-03-31","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v3-0-0-2026-03-25","title":"v3.0.0 - 2026-03-25","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-3-16-2026-02-24","title":"v2.3.16 - 2026-02-24","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-3-15-2026-02-13","title":"v2.3.15 - 2026-02-13","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-14-2026-02-11","title":"v2.3.14 - 2026-02-11","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-13-2026-01-30","title":"v2.3.13 - 2026-01-30","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-12-2026-01-27","title":"v2.3.12 - 2026-01-27","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-11-2026-01-20","title":"v2.3.11 - 2026-01-20","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-10-2026-01-15","title":"v2.3.10 - 2026-01-15","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-9-2026-01-14","title":"v2.3.9 - 2026-01-14","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-3-8-2026-01-09","title":"v2.3.8 - 2026-01-09","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-3-7-2026-01-07","title":"v2.3.7 - 2026-01-07","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-6-2025-12-31","title":"v2.3.6 - 2025-12-31","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-5-2025-12-31","title":"v2.3.5 - 2025-12-31","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-4-2025-12-19","title":"v2.3.4 - 2025-12-19","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-3-2025-12-17","title":"v2.3.3 - 2025-12-17","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-3-2-2025-12-16","title":"v2.3.2 - 2025-12-16","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-3-1-2025-12-12","title":"v2.3.1 - 2025-12-12","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-3-0-2025-12-11","title":"v2.3.0 - 2025-12-11","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-2-21-2025-12-10","title":"v2.2.21 - 2025-12-10","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-20-2025-12-09","title":"v2.2.20 - 2025-12-09","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-2-19-2025-11-27","title":"v2.2.19 - 2025-11-27","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-18-2025-11-17","title":"v2.2.18 - 2025-11-17","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-17-2025-11-14","title":"v2.2.17 - 2025-11-14","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-16-2025-11-13","title":"v2.2.16 - 2025-11-13","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-15-2025-10-30","title":"v2.2.15 - 2025-10-30","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-14-2025-10-28","title":"v2.2.14 - 2025-10-28","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-13-2025-10-28","title":"v2.2.13 - 2025-10-28","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-2-12-2025-10-27","title":"v2.2.12 - 2025-10-27","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-11-2025-10-24","title":"v2.2.11 - 2025-10-24","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-10-2025-10-23","title":"v2.2.10 - 2025-10-23","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-9-2025-10-21","title":"v2.2.9 - 2025-10-21","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-8-2025-10-09","title":"v2.2.8 - 2025-10-09","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-7-2025-10-07","title":"v2.2.7 - 2025-10-07","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-6-2025-10-03","title":"v2.2.6 - 2025-10-03","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-5-2025-10-02","title":"v2.2.5 - 2025-10-02","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-4-2025-09-30","title":"v2.2.4 - 2025-09-30","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-3-2025-09-29","title":"v2.2.3 - 2025-09-29","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-2-2025-09-28","title":"v2.2.2 - 2025-09-28","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-1-2025-09-28","title":"v2.2.1 - 2025-09-28","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-2-0-2025-09-26","title":"v2.2.0 - 2025-09-26","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-11-2025-09-24","title":"v2.1.11 - 2025-09-24","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-10-2025-09-22","title":"v2.1.10 - 2025-09-22","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-9-2025-09-22","title":"v2.1.9 - 2025-09-22","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-8-2025-09-22","title":"v2.1.8 - 2025-09-22","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-7-2025-09-18","title":"v2.1.7 - 2025-09-18","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-6-2025-09-12","title":"v2.1.6 - 2025-09-12","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-5-2025-09-05","title":"v2.1.5 - 2025-09-05","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-4-2025-09-03","title":"v2.1.4 - 2025-09-03","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-1-3-2025-08-27","title":"v2.1.3 - 2025-08-27","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-1-2-2025-08-15","title":"v2.1.2 - 2025-08-15","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-1-1-2025-08-14","title":"v2.1.1 - 2025-08-14","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-1-0-2025-08-13","title":"v2.1.0 - 2025-08-13","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-17-2025-07-18","title":"v2.0.17 - 2025-07-18","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-0-16-2025-07-18","title":"v2.0.16 - 2025-07-18","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-15-2025-07-17","title":"v2.0.15 - 2025-07-17","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-14-2025-06-26","title":"v2.0.14 - 2025-06-26","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-0-13-2025-06-20","title":"v2.0.13 - 2025-06-20","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-12-2025-06-10","title":"v2.0.12 - 2025-06-10","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-11-2025-05-16","title":"v2.0.11 - 2025-05-16","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-0-10-2025-05-15","title":"v2.0.10 - 2025-05-15","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"v2-0-9-2025-05-09","title":"v2.0.9 - 2025-05-09","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-8-2025-04-10","title":"v2.0.8 - 2025-04-10","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-7-2025-04-08","title":"v2.0.7 - 2025-04-08","level":2},{"id":"what-s-changed","title":"What's Changed","level":3},{"id":"new-contributors","title":"New Contributors","level":3},{"id":"v2-0-6","title":"v2.0.6","level":2},{"id":"v2-0-5","title":"v2.0.5","level":2},{"id":"v2-0-4","title":"v2.0.4","level":2},{"id":"v2-0-3","title":"v2.0.3","level":2},{"id":"v2-0-2","title":"v2.0.2","level":2},{"id":"v2-0-1","title":"v2.0.1","level":2},{"id":"v2-0-0","title":"v2.0.0","level":2},{"id":"added","title":"Added","level":3},{"id":"changed","title":"Changed","level":3},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-3-0","title":"v1.3.0","level":2},{"id":"added","title":"Added","level":3},{"id":"changed","title":"Changed","level":3},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-2-0","title":"v1.2.0","level":2},{"id":"v1-1-0","title":"v1.1.0","level":2},{"id":"v1-0-16","title":"v1.0.16","level":2},{"id":"v1-0-15","title":"v1.0.15","level":2},{"id":"v1-0-14","title":"v1.0.14","level":2},{"id":"v1-0-13","title":"v1.0.13","level":2},{"id":"v1-0-12","title":"v1.0.12","level":2},{"id":"v1-0-11","title":"v1.0.11","level":2},{"id":"v1-0-10","title":"v1.0.10","level":2},{"id":"v1-0-9","title":"v1.0.9","level":2},{"id":"v1-0-8","title":"v1.0.8","level":2},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-0-7","title":"v1.0.7","level":2},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-0-6","title":"v1.0.6","level":2},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-0-5","title":"v1.0.5","level":2},{"id":"fixed","title":"Fixed","level":3},{"id":"changed","title":"Changed","level":3},{"id":"v1-0-4","title":"v1.0.4","level":2},{"id":"added","title":"Added","level":3},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-0-3","title":"v1.0.3","level":2},{"id":"added","title":"Added","level":3},{"id":"v1-0-2","title":"v1.0.2","level":2},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-0-1","title":"v1.0.1","level":2},{"id":"fixed","title":"Fixed","level":3},{"id":"v1-0-0-2023-01-14","title":"v1.0.0 - 2023-01-14","level":2},{"id":"added","title":"Added","level":3},{"id":"changed","title":"Changed","level":3},{"id":"fixed","title":"Fixed","level":3},{"id":"file-contributing-md","title":"File: CONTRIBUTING.md","level":2},{"id":"repository-overview","title":"Repository Overview","level":2},{"id":"key-components","title":"Key Components","level":3},{"id":"getting-started","title":"Getting Started","level":2},{"id":"running-tests","title":"Running Tests","level":2},{"id":"how-the-test-setup-works","title":"How the Test Setup Works","level":3},{"id":"automatic-test-server-boot","title":"Automatic Test Server Boot","level":3},{"id":"running-test-applications","title":"Running Test Applications","level":2},{"id":"adding-tests","title":"Adding Tests","level":2},{"id":"1-add-frontend-pages","title":"1. Add Frontend Pages","level":3},{"id":"2-add-backend-routes-if-needed","title":"2. Add Backend Routes (If Needed)","level":3},{"id":"3-write-a-playwright-test","title":"3. Write a Playwright Test","level":3},{"id":"4-run-the-tests-in-all-adapters","title":"4. Run the Tests in All Adapters","level":3},{"id":"using-the-playgrounds-optional","title":"Using the Playgrounds (Optional)","level":2},{"id":"getting-started","title":"Getting Started","level":3},{"id":"publishing-maintainers-only","title":"Publishing (Maintainers Only)","level":2},{"id":"file-license-md","title":"File: LICENSE.md","level":2},{"id":"file-package-json","title":"File: package.json","level":2}]; if (window.Fuse && headingsData.length > 0) { const fuse = new Fuse(headingsData, { keys: ['title'], threshold: 0.35 }); searchInput.addEventListener('input', (e) => { const query = e.target.value.trim(); const container = document.getElementById('toc-container'); if (!query) { container.innerHTML = ` <a href="#file-readme-md" class="toc-link toc-level-2"> File: README.md </a> <a href="#about-inertia-js" class="toc-link toc-level-2"> About Inertia.js </a> <a href="#adapters" class="toc-link toc-level-2"> Adapters </a> <a href="#learning-inertia-js" class="toc-link toc-level-2"> Learning Inertia.js </a> <a href="#deploying-inertia-js" class="toc-link toc-level-2"> Deploying Inertia.js </a> <a href="#code-of-conduct" class="toc-link toc-level-2"> Code of Conduct </a> <a href="#security-vulnerabilities" class="toc-link toc-level-2"> Security Vulnerabilities </a> <a href="#file-changelog-md" class="toc-link toc-level-2"> File: CHANGELOG.md </a> <a href="#changelog" class="toc-link toc-level-1"> Changelog </a> <a href="#unreleased" class="toc-link toc-level-2"> Unreleased </a> <a href="#v3-9-1-2026-10-09" class="toc-link toc-level-2"> v3.9.1 - 2026-10-09 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-9-0-2026-10-09" class="toc-link toc-level-2"> v3.9.0 - 2026-10-09 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-8-0-2026-10-01" class="toc-link toc-level-2"> v3.8.0 - 2026-10-01 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-7-1-2026-09-11" class="toc-link toc-level-2"> v3.7.1 - 2026-09-11 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-7-0-2026-08-18" class="toc-link toc-level-2"> v3.7.0 - 2026-08-18 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-6-1-2026-07-07" class="toc-link toc-level-2"> v3.6.1 - 2026-07-07 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-6-0-2026-07-02" class="toc-link toc-level-2"> v3.6.0 - 2026-07-02 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-5-0-2026-06-25" class="toc-link toc-level-2"> v3.5.0 - 2026-06-25 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-4-0-2026-06-11" class="toc-link toc-level-2"> v3.4.0 - 2026-06-11 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-3-1-2026-06-04" class="toc-link toc-level-2"> v3.3.1 - 2026-06-04 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-3-0-2026-05-27" class="toc-link toc-level-2"> v3.3.0 - 2026-05-27 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-2-0-2026-05-20" class="toc-link toc-level-2"> v3.2.0 - 2026-05-20 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-1-1-2026-05-07" class="toc-link toc-level-2"> v3.1.1 - 2026-05-07 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-1-0-2026-05-06" class="toc-link toc-level-2"> v3.1.0 - 2026-05-06 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v3-0-3-2026-04-07" class="toc-link toc-level-2"> v3.0.3 - 2026-04-07 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-0-2-2026-04-02" class="toc-link toc-level-2"> v3.0.2 - 2026-04-02 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-0-1-2026-03-31" class="toc-link toc-level-2"> v3.0.1 - 2026-03-31 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v3-0-0-2026-03-25" class="toc-link toc-level-2"> v3.0.0 - 2026-03-25 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-3-16-2026-02-24" class="toc-link toc-level-2"> v2.3.16 - 2026-02-24 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-3-15-2026-02-13" class="toc-link toc-level-2"> v2.3.15 - 2026-02-13 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-14-2026-02-11" class="toc-link toc-level-2"> v2.3.14 - 2026-02-11 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-13-2026-01-30" class="toc-link toc-level-2"> v2.3.13 - 2026-01-30 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-12-2026-01-27" class="toc-link toc-level-2"> v2.3.12 - 2026-01-27 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-11-2026-01-20" class="toc-link toc-level-2"> v2.3.11 - 2026-01-20 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-10-2026-01-15" class="toc-link toc-level-2"> v2.3.10 - 2026-01-15 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-9-2026-01-14" class="toc-link toc-level-2"> v2.3.9 - 2026-01-14 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-3-8-2026-01-09" class="toc-link toc-level-2"> v2.3.8 - 2026-01-09 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-3-7-2026-01-07" class="toc-link toc-level-2"> v2.3.7 - 2026-01-07 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-6-2025-12-31" class="toc-link toc-level-2"> v2.3.6 - 2025-12-31 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-5-2025-12-31" class="toc-link toc-level-2"> v2.3.5 - 2025-12-31 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-4-2025-12-19" class="toc-link toc-level-2"> v2.3.4 - 2025-12-19 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-3-2025-12-17" class="toc-link toc-level-2"> v2.3.3 - 2025-12-17 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-3-2-2025-12-16" class="toc-link toc-level-2"> v2.3.2 - 2025-12-16 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-3-1-2025-12-12" class="toc-link toc-level-2"> v2.3.1 - 2025-12-12 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-3-0-2025-12-11" class="toc-link toc-level-2"> v2.3.0 - 2025-12-11 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-2-21-2025-12-10" class="toc-link toc-level-2"> v2.2.21 - 2025-12-10 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-20-2025-12-09" class="toc-link toc-level-2"> v2.2.20 - 2025-12-09 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-2-19-2025-11-27" class="toc-link toc-level-2"> v2.2.19 - 2025-11-27 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-18-2025-11-17" class="toc-link toc-level-2"> v2.2.18 - 2025-11-17 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-17-2025-11-14" class="toc-link toc-level-2"> v2.2.17 - 2025-11-14 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-16-2025-11-13" class="toc-link toc-level-2"> v2.2.16 - 2025-11-13 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-15-2025-10-30" class="toc-link toc-level-2"> v2.2.15 - 2025-10-30 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-14-2025-10-28" class="toc-link toc-level-2"> v2.2.14 - 2025-10-28 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-13-2025-10-28" class="toc-link toc-level-2"> v2.2.13 - 2025-10-28 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-2-12-2025-10-27" class="toc-link toc-level-2"> v2.2.12 - 2025-10-27 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-11-2025-10-24" class="toc-link toc-level-2"> v2.2.11 - 2025-10-24 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-10-2025-10-23" class="toc-link toc-level-2"> v2.2.10 - 2025-10-23 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-9-2025-10-21" class="toc-link toc-level-2"> v2.2.9 - 2025-10-21 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-8-2025-10-09" class="toc-link toc-level-2"> v2.2.8 - 2025-10-09 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-7-2025-10-07" class="toc-link toc-level-2"> v2.2.7 - 2025-10-07 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-6-2025-10-03" class="toc-link toc-level-2"> v2.2.6 - 2025-10-03 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-5-2025-10-02" class="toc-link toc-level-2"> v2.2.5 - 2025-10-02 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-4-2025-09-30" class="toc-link toc-level-2"> v2.2.4 - 2025-09-30 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-3-2025-09-29" class="toc-link toc-level-2"> v2.2.3 - 2025-09-29 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-2-2025-09-28" class="toc-link toc-level-2"> v2.2.2 - 2025-09-28 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-1-2025-09-28" class="toc-link toc-level-2"> v2.2.1 - 2025-09-28 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-2-0-2025-09-26" class="toc-link toc-level-2"> v2.2.0 - 2025-09-26 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-11-2025-09-24" class="toc-link toc-level-2"> v2.1.11 - 2025-09-24 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-10-2025-09-22" class="toc-link toc-level-2"> v2.1.10 - 2025-09-22 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-9-2025-09-22" class="toc-link toc-level-2"> v2.1.9 - 2025-09-22 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-8-2025-09-22" class="toc-link toc-level-2"> v2.1.8 - 2025-09-22 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-7-2025-09-18" class="toc-link toc-level-2"> v2.1.7 - 2025-09-18 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-6-2025-09-12" class="toc-link toc-level-2"> v2.1.6 - 2025-09-12 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-5-2025-09-05" class="toc-link toc-level-2"> v2.1.5 - 2025-09-05 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-4-2025-09-03" class="toc-link toc-level-2"> v2.1.4 - 2025-09-03 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-1-3-2025-08-27" class="toc-link toc-level-2"> v2.1.3 - 2025-08-27 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-1-2-2025-08-15" class="toc-link toc-level-2"> v2.1.2 - 2025-08-15 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-1-1-2025-08-14" class="toc-link toc-level-2"> v2.1.1 - 2025-08-14 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-1-0-2025-08-13" class="toc-link toc-level-2"> v2.1.0 - 2025-08-13 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-17-2025-07-18" class="toc-link toc-level-2"> v2.0.17 - 2025-07-18 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-0-16-2025-07-18" class="toc-link toc-level-2"> v2.0.16 - 2025-07-18 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-15-2025-07-17" class="toc-link toc-level-2"> v2.0.15 - 2025-07-17 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-14-2025-06-26" class="toc-link toc-level-2"> v2.0.14 - 2025-06-26 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-0-13-2025-06-20" class="toc-link toc-level-2"> v2.0.13 - 2025-06-20 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-12-2025-06-10" class="toc-link toc-level-2"> v2.0.12 - 2025-06-10 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-11-2025-05-16" class="toc-link toc-level-2"> v2.0.11 - 2025-05-16 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-0-10-2025-05-15" class="toc-link toc-level-2"> v2.0.10 - 2025-05-15 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#v2-0-9-2025-05-09" class="toc-link toc-level-2"> v2.0.9 - 2025-05-09 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-8-2025-04-10" class="toc-link toc-level-2"> v2.0.8 - 2025-04-10 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-7-2025-04-08" class="toc-link toc-level-2"> v2.0.7 - 2025-04-08 </a> <a href="#what-s-changed" class="toc-link toc-level-3"> What's Changed </a> <a href="#new-contributors" class="toc-link toc-level-3"> New Contributors </a> <a href="#v2-0-6" class="toc-link toc-level-2"> v2.0.6 </a> <a href="#v2-0-5" class="toc-link toc-level-2"> v2.0.5 </a> <a href="#v2-0-4" class="toc-link toc-level-2"> v2.0.4 </a> <a href="#v2-0-3" class="toc-link toc-level-2"> v2.0.3 </a> <a href="#v2-0-2" class="toc-link toc-level-2"> v2.0.2 </a> <a href="#v2-0-1" class="toc-link toc-level-2"> v2.0.1 </a> <a href="#v2-0-0" class="toc-link toc-level-2"> v2.0.0 </a> <a href="#added" class="toc-link toc-level-3"> Added </a> <a href="#changed" class="toc-link toc-level-3"> Changed </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-3-0" class="toc-link toc-level-2"> v1.3.0 </a> <a href="#added" class="toc-link toc-level-3"> Added </a> <a href="#changed" class="toc-link toc-level-3"> Changed </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-2-0" class="toc-link toc-level-2"> v1.2.0 </a> <a href="#v1-1-0" class="toc-link toc-level-2"> v1.1.0 </a> <a href="#v1-0-16" class="toc-link toc-level-2"> v1.0.16 </a> <a href="#v1-0-15" class="toc-link toc-level-2"> v1.0.15 </a> <a href="#v1-0-14" class="toc-link toc-level-2"> v1.0.14 </a> <a href="#v1-0-13" class="toc-link toc-level-2"> v1.0.13 </a> <a href="#v1-0-12" class="toc-link toc-level-2"> v1.0.12 </a> <a href="#v1-0-11" class="toc-link toc-level-2"> v1.0.11 </a> <a href="#v1-0-10" class="toc-link toc-level-2"> v1.0.10 </a> <a href="#v1-0-9" class="toc-link toc-level-2"> v1.0.9 </a> <a href="#v1-0-8" class="toc-link toc-level-2"> v1.0.8 </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-0-7" class="toc-link toc-level-2"> v1.0.7 </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-0-6" class="toc-link toc-level-2"> v1.0.6 </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-0-5" class="toc-link toc-level-2"> v1.0.5 </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#changed" class="toc-link toc-level-3"> Changed </a> <a href="#v1-0-4" class="toc-link toc-level-2"> v1.0.4 </a> <a href="#added" class="toc-link toc-level-3"> Added </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-0-3" class="toc-link toc-level-2"> v1.0.3 </a> <a href="#added" class="toc-link toc-level-3"> Added </a> <a href="#v1-0-2" class="toc-link toc-level-2"> v1.0.2 </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-0-1" class="toc-link toc-level-2"> v1.0.1 </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#v1-0-0-2023-01-14" class="toc-link toc-level-2"> v1.0.0 - 2023-01-14 </a> <a href="#added" class="toc-link toc-level-3"> Added </a> <a href="#changed" class="toc-link toc-level-3"> Changed </a> <a href="#fixed" class="toc-link toc-level-3"> Fixed </a> <a href="#file-contributing-md" class="toc-link toc-level-2"> File: CONTRIBUTING.md </a> <a href="#repository-overview" class="toc-link toc-level-2"> Repository Overview </a> <a href="#key-components" class="toc-link toc-level-3"> Key Components </a> <a href="#getting-started" class="toc-link toc-level-2"> Getting Started </a> <a href="#running-tests" class="toc-link toc-level-2"> Running Tests </a> <a href="#how-the-test-setup-works" class="toc-link toc-level-3"> How the Test Setup Works </a> <a href="#automatic-test-server-boot" class="toc-link toc-level-3"> Automatic Test Server Boot </a> <a href="#running-test-applications" class="toc-link toc-level-2"> Running Test Applications </a> <a href="#adding-tests" class="toc-link toc-level-2"> Adding Tests </a> <a href="#1-add-frontend-pages" class="toc-link toc-level-3"> 1. Add Frontend Pages </a> <a href="#2-add-backend-routes-if-needed" class="toc-link toc-level-3"> 2. Add Backend Routes (If Needed) </a> <a href="#3-write-a-playwright-test" class="toc-link toc-level-3"> 3. Write a Playwright Test </a> <a href="#4-run-the-tests-in-all-adapters" class="toc-link toc-level-3"> 4. Run the Tests in All Adapters </a> <a href="#using-the-playgrounds-optional" class="toc-link toc-level-2"> Using the Playgrounds (Optional) </a> <a href="#getting-started" class="toc-link toc-level-3"> Getting Started </a> <a href="#publishing-maintainers-only" class="toc-link toc-level-2"> Publishing (Maintainers Only) </a> <a href="#file-license-md" class="toc-link toc-level-2"> File: LICENSE.md </a> <a href="#file-package-json" class="toc-link toc-level-2"> File: package.json </a> `; return; } const results = fuse.search(query); container.innerHTML = results.map(r => ` <a href="#${r.item.id}" class="toc-link toc-level-${r.item.level} active"> ${r.item.title} </a> `).join('') || '<div style="color: var(--text-secondary); font-size: 0.8rem; padding: 8px;">No sections found</div>'; }); } window.addEventListener('keydown', (e) => { if ((e.ctrlKey || e.metaKey) && e.key === 'k') { e.preventDefault(); searchInput.focus(); } }); // Mobile TOC Drawer Controller function toggleMobileTocDrawer(show) { const drawer = document.getElementById('mobile-toc-drawer'); const backdrop = document.getElementById('mobile-toc-backdrop'); if (!drawer || !backdrop) return; if (show) { drawer.classList.add('open'); backdrop.classList.add('open'); document.body.style.overflow = 'hidden'; const s = document.getElementById('mobile-toc-search'); if (s) setTimeout(() => s.focus(), 200); } else { drawer.classList.remove('open'); backdrop.classList.remove('open'); document.body.style.overflow = ''; } } const mobileSearchInput = document.getElementById('mobile-toc-search'); if (mobileSearchInput && headingsData.length > 0) { mobileSearchInput.addEventListener('input', (e) => { const query = e.target.value.toLowerCase().trim(); const list = document.getElementById('mobile-toc-list'); if (!list) return; const filtered = headingsData.filter(h => h.title.toLowerCase().includes(query)); list.innerHTML = filtered.map(h => '<a href="#' + h.id + '" class="mobile-toc-link toc-level-' + h.level + '" onclick="toggleMobileTocDrawer(false)">' + h.title + '</a>').join('') || '<div style="color:var(--text-secondary);padding:1rem;text-align:center;font-size:0.85rem;">No matching sections</div>'; }); } </script> <!-- Mobile TOC Floating Action Button (FAB) --> <button id="mobile-toc-fab" class="mobile-toc-fab" onclick="toggleMobileTocDrawer(true)" aria-label="Open Table of Contents Navigator"> <i data-lucide="list" style="width:15px;height:15px;"></i> <span>Table of Contents</span> <span class="mobile-toc-count">263</span> </button> <!-- Mobile TOC Bottom Sheet Drawer Modal --> <div id="mobile-toc-backdrop" class="mobile-toc-backdrop" onclick="toggleMobileTocDrawer(false)"></div> <div id="mobile-toc-drawer" class="mobile-toc-drawer" role="dialog" aria-modal="true" aria-label="Table of Contents"> <div class="mobile-toc-header"> <div style="display:flex;align-items:center;gap:8px;"> <i data-lucide="book-open" style="width:16px;height:16px;color:#38bdf8;"></i> <h3 style="margin:0;font-size:1rem;font-weight:700;color:#fff;">Table of Contents</h3> <span style="font-size:0.75rem;background:#27272a;color:#a1a1aa;padding:1px 6px;border-radius:4px;">263 sections</span> </div> <button class="mobile-toc-close" onclick="toggleMobileTocDrawer(false)" aria-label="Close Table of Contents"> <i data-lucide="x" style="width:18px;height:18px;"></i> </button> </div> <div class="mobile-toc-search-wrap"> <i data-lucide="search" style="width:14px;height:14px;color:#71717a;"></i> <input type="text" id="mobile-toc-search" placeholder="Filter sections..." autocomplete="off"> </div> <div id="mobile-toc-list" class="mobile-toc-list"> <a href="#file-readme-md" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> File: README.md </a> <a href="#about-inertia-js" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> About Inertia.js </a> <a href="#adapters" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Adapters </a> <a href="#learning-inertia-js" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Learning Inertia.js </a> <a href="#deploying-inertia-js" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Deploying Inertia.js </a> <a href="#code-of-conduct" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Code of Conduct </a> <a href="#security-vulnerabilities" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Security Vulnerabilities </a> <a href="#file-changelog-md" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> File: CHANGELOG.md </a> <a href="#changelog" class="mobile-toc-link toc-level-1" onclick="toggleMobileTocDrawer(false)"> Changelog </a> <a href="#unreleased" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Unreleased </a> <a href="#v3-9-1-2026-10-09" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.9.1 - 2026-10-09 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-9-0-2026-10-09" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.9.0 - 2026-10-09 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-8-0-2026-10-01" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.8.0 - 2026-10-01 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-7-1-2026-09-11" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.7.1 - 2026-09-11 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-7-0-2026-08-18" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.7.0 - 2026-08-18 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-6-1-2026-07-07" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.6.1 - 2026-07-07 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-6-0-2026-07-02" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.6.0 - 2026-07-02 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-5-0-2026-06-25" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.5.0 - 2026-06-25 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-4-0-2026-06-11" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.4.0 - 2026-06-11 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-3-1-2026-06-04" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.3.1 - 2026-06-04 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-3-0-2026-05-27" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.3.0 - 2026-05-27 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-2-0-2026-05-20" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.2.0 - 2026-05-20 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-1-1-2026-05-07" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.1.1 - 2026-05-07 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-1-0-2026-05-06" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.1.0 - 2026-05-06 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v3-0-3-2026-04-07" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.0.3 - 2026-04-07 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-0-2-2026-04-02" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.0.2 - 2026-04-02 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-0-1-2026-03-31" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.0.1 - 2026-03-31 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v3-0-0-2026-03-25" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v3.0.0 - 2026-03-25 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-3-16-2026-02-24" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.16 - 2026-02-24 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-3-15-2026-02-13" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.15 - 2026-02-13 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-14-2026-02-11" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.14 - 2026-02-11 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-13-2026-01-30" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.13 - 2026-01-30 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-12-2026-01-27" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.12 - 2026-01-27 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-11-2026-01-20" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.11 - 2026-01-20 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-10-2026-01-15" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.10 - 2026-01-15 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-9-2026-01-14" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.9 - 2026-01-14 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-3-8-2026-01-09" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.8 - 2026-01-09 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-3-7-2026-01-07" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.7 - 2026-01-07 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-6-2025-12-31" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.6 - 2025-12-31 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-5-2025-12-31" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.5 - 2025-12-31 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-4-2025-12-19" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.4 - 2025-12-19 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-3-2025-12-17" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.3 - 2025-12-17 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-3-2-2025-12-16" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.2 - 2025-12-16 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-3-1-2025-12-12" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.1 - 2025-12-12 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-3-0-2025-12-11" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.3.0 - 2025-12-11 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-2-21-2025-12-10" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.21 - 2025-12-10 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-20-2025-12-09" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.20 - 2025-12-09 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-2-19-2025-11-27" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.19 - 2025-11-27 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-18-2025-11-17" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.18 - 2025-11-17 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-17-2025-11-14" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.17 - 2025-11-14 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-16-2025-11-13" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.16 - 2025-11-13 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-15-2025-10-30" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.15 - 2025-10-30 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-14-2025-10-28" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.14 - 2025-10-28 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-13-2025-10-28" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.13 - 2025-10-28 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-2-12-2025-10-27" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.12 - 2025-10-27 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-11-2025-10-24" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.11 - 2025-10-24 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-10-2025-10-23" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.10 - 2025-10-23 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-9-2025-10-21" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.9 - 2025-10-21 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-8-2025-10-09" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.8 - 2025-10-09 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-7-2025-10-07" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.7 - 2025-10-07 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-6-2025-10-03" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.6 - 2025-10-03 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-5-2025-10-02" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.5 - 2025-10-02 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-4-2025-09-30" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.4 - 2025-09-30 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-3-2025-09-29" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.3 - 2025-09-29 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-2-2025-09-28" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.2 - 2025-09-28 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-1-2025-09-28" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.1 - 2025-09-28 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-2-0-2025-09-26" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.2.0 - 2025-09-26 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-11-2025-09-24" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.11 - 2025-09-24 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-10-2025-09-22" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.10 - 2025-09-22 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-9-2025-09-22" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.9 - 2025-09-22 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-8-2025-09-22" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.8 - 2025-09-22 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-7-2025-09-18" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.7 - 2025-09-18 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-6-2025-09-12" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.6 - 2025-09-12 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-5-2025-09-05" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.5 - 2025-09-05 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-4-2025-09-03" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.4 - 2025-09-03 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-1-3-2025-08-27" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.3 - 2025-08-27 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-1-2-2025-08-15" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.2 - 2025-08-15 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-1-1-2025-08-14" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.1 - 2025-08-14 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-1-0-2025-08-13" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.1.0 - 2025-08-13 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-17-2025-07-18" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.17 - 2025-07-18 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-0-16-2025-07-18" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.16 - 2025-07-18 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-15-2025-07-17" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.15 - 2025-07-17 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-14-2025-06-26" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.14 - 2025-06-26 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-0-13-2025-06-20" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.13 - 2025-06-20 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-12-2025-06-10" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.12 - 2025-06-10 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-11-2025-05-16" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.11 - 2025-05-16 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-0-10-2025-05-15" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.10 - 2025-05-15 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#v2-0-9-2025-05-09" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.9 - 2025-05-09 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-8-2025-04-10" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.8 - 2025-04-10 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-7-2025-04-08" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.7 - 2025-04-08 </a> <a href="#what-s-changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> What's Changed </a> <a href="#new-contributors" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> New Contributors </a> <a href="#v2-0-6" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.6 </a> <a href="#v2-0-5" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.5 </a> <a href="#v2-0-4" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.4 </a> <a href="#v2-0-3" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.3 </a> <a href="#v2-0-2" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.2 </a> <a href="#v2-0-1" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.1 </a> <a href="#v2-0-0" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v2.0.0 </a> <a href="#added" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Added </a> <a href="#changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Changed </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-3-0" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.3.0 </a> <a href="#added" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Added </a> <a href="#changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Changed </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-2-0" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.2.0 </a> <a href="#v1-1-0" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.1.0 </a> <a href="#v1-0-16" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.16 </a> <a href="#v1-0-15" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.15 </a> <a href="#v1-0-14" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.14 </a> <a href="#v1-0-13" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.13 </a> <a href="#v1-0-12" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.12 </a> <a href="#v1-0-11" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.11 </a> <a href="#v1-0-10" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.10 </a> <a href="#v1-0-9" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.9 </a> <a href="#v1-0-8" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.8 </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-0-7" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.7 </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-0-6" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.6 </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-0-5" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.5 </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Changed </a> <a href="#v1-0-4" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.4 </a> <a href="#added" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Added </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-0-3" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.3 </a> <a href="#added" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Added </a> <a href="#v1-0-2" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.2 </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-0-1" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.1 </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#v1-0-0-2023-01-14" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> v1.0.0 - 2023-01-14 </a> <a href="#added" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Added </a> <a href="#changed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Changed </a> <a href="#fixed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Fixed </a> <a href="#file-contributing-md" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> File: CONTRIBUTING.md </a> <a href="#repository-overview" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Repository Overview </a> <a href="#key-components" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Key Components </a> <a href="#getting-started" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Getting Started </a> <a href="#running-tests" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Running Tests </a> <a href="#how-the-test-setup-works" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> How the Test Setup Works </a> <a href="#automatic-test-server-boot" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Automatic Test Server Boot </a> <a href="#running-test-applications" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Running Test Applications </a> <a href="#adding-tests" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Adding Tests </a> <a href="#1-add-frontend-pages" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> 1. Add Frontend Pages </a> <a href="#2-add-backend-routes-if-needed" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> 2. Add Backend Routes (If Needed) </a> <a href="#3-write-a-playwright-test" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> 3. Write a Playwright Test </a> <a href="#4-run-the-tests-in-all-adapters" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> 4. Run the Tests in All Adapters </a> <a href="#using-the-playgrounds-optional" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Using the Playgrounds (Optional) </a> <a href="#getting-started" class="mobile-toc-link toc-level-3" onclick="toggleMobileTocDrawer(false)"> Getting Started </a> <a href="#publishing-maintainers-only" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> Publishing (Maintainers Only) </a> <a href="#file-license-md" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> File: LICENSE.md </a> <a href="#file-package-json" class="mobile-toc-link toc-level-2" onclick="toggleMobileTocDrawer(false)"> File: package.json </a> </div> </div> <!-- Floating Scroll-To-Top Button (Zero-Dependency Native Inline SVG) --> <button id="floating-scroll-top-btn" class="floating-scroll-top" onclick="window.scrollTo({top: 0, behavior: 'smooth'})" title="Scroll to top" aria-label="Scroll to top" > <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="display:block;margin:auto;"> <path d="m18 15-6-6-6 6"/> </svg> </button> <!-- Floating Navigation Modal Overlay --> <div id="floating-nav-modal" class="floating-modal-overlay" onclick="toggleFloatingNavModal(false)" role="dialog" aria-modal="true" aria-label="Discovery and Navigation Menu" > <div class="floating-modal-card" onclick="event.stopPropagation()"> <!-- Modal Header --> <div style="display: flex; align-items: center; justify-content: space-between; padding: 1.1rem 1.25rem; border-bottom: 1px solid #27272a;"> <div style="display: flex; align-items: center; gap: 9px;"> <img src="/favicon.svg" alt="YakaAI Logo" style="width: 22px; height: 22px; border-radius: 50%;"> <div> <h3 style="font-size: 1rem; font-weight: 600; color: #ffffff; margin: 0; line-height: 1.2;">Navigation & Discovery</h3> <p style="font-size: 0.75rem; color: #a1a1aa; margin: 0;">Topic hubs, agent specifications, and quick tools</p> </div> </div> <button onclick="toggleFloatingNavModal(false)" style="background: transparent; border: none; color: #a1a1aa; cursor: pointer; padding: 4px; display: flex; border-radius: 4px;" title="Close (Esc)" > <i data-lucide="x" style="width:18px;height:18px;"></i> </button> </div> <!-- Modal Body --> <div style="padding: 1.25rem; display: flex; flex-direction: column; gap: 1.4rem;"> <!-- Section 1: All Topic Hubs & Frameworks --> <div> <h4 style="font-size: 0.775rem; text-transform: uppercase; letter-spacing: 0.05em; color: #a1a1aa; font-weight: 600; margin: 0 0 0.65rem 0;"> All Topic Hubs & Frameworks </h4> <div class="nav-topic-grid"> <a href="/topic/skills" class="nav-topic-chip"><span>🧠</span> <span>Agent Skills</span></a> <a href="/topic/mcp" class="nav-topic-chip"><span>⚡</span> <span>MCP Servers</span></a> <a href="/topic/docker" class="nav-topic-chip" style="border-color: rgba(56, 189, 248, 0.3); color: #38bdf8;"><span>🐳</span> <span>Docker & Self-Host</span></a> <a href="/topic/apps" class="nav-topic-chip" style="border-color: rgba(52, 211, 153, 0.3); color: #34d399;"><span>💻</span> <span>Apps & Installers</span></a> <a href="/topic/openapi" class="nav-topic-chip"><span>🔌</span> <span>API Specs</span></a> <a href="/compare" class="nav-topic-chip" style="border-color: rgba(56, 189, 248, 0.35); color: #38bdf8; font-weight: 600;"><span>⚖️</span> <span>Benchmark & Compare</span></a> <a href="/topic/cli" class="nav-topic-chip"><span>🖥️</span> <span>CLI & Terminal</span></a> <a href="/topic/react" class="nav-topic-chip"><span>⚛️</span> <span>React</span></a> <a href="/topic/nextjs" class="nav-topic-chip"><span>▲</span> <span>Next.js</span></a> <a href="/topic/hono" class="nav-topic-chip"><span>🔥</span> <span>Hono</span></a> <a href="/topic/tailwind" class="nav-topic-chip"><span>🎨</span> <span>Tailwind</span></a> <a href="/topic/database" class="nav-topic-chip"><span>🗄️</span> <span>Database</span></a> <a href="/topic/orm" class="nav-topic-chip"><span>⚡</span> <span>ORM</span></a> <a href="/topic/auth" class="nav-topic-chip"><span>🔒</span> <span>Auth</span></a> <a href="/topic/ai" class="nav-topic-chip"><span>🤖</span> <span>AI Tools</span></a> <a href="/topic/rag" class="nav-topic-chip"><span>📚</span> <span>RAG & Vector</span></a> <a href="/topic/typescript" class="nav-topic-chip"><span>🔷</span> <span>TypeScript</span></a> <a href="/topic/python" class="nav-topic-chip"><span>🐍</span> <span>Python</span></a> <a href="/topic/rust" class="nav-topic-chip"><span>🦀</span> <span>Rust</span></a> <a href="/topic/go" class="nav-topic-chip"><span>🐹</span> <span>Go</span></a> </div> </div> <!-- Section 2: Agent Protocol & RFC Specifications --> <div> <h4 style="font-size: 0.775rem; text-transform: uppercase; letter-spacing: 0.05em; color: #a1a1aa; font-weight: 600; margin: 0 0 0.65rem 0;"> Agent Protocol & RFC Specifications </h4> <div style="display: flex; flex-direction: column; gap: 0.4rem;"> <div class="nav-endpoint-row"> <a href="/.well-known/agent-skills/index.json" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:6px;"> <span style="color:#ffffff;">Agent Skills Index (RFC)</span> <span style="color:#71717a;font-size:0.75rem;">/.well-known/agent-skills/index.json</span> </a> <button onclick="copyNavUrl('https://yakaai.com/.well-known/agent-skills/index.json', this)" style="background:transparent;border:none;color:#a1a1aa;cursor:pointer;display:flex;align-items:center;gap:4px;font-size:0.75rem;"> <i data-lucide="copy" style="width:12px;height:12px;"></i> Copy </button> </div> <div class="nav-endpoint-row"> <a href="/.well-known/mcp/server-card.json" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:6px;"> <span style="color:#ffffff;">MCP Server Card (SEP-1649)</span> <span style="color:#71717a;font-size:0.75rem;">/.well-known/mcp/server-card.json</span> </a> <button onclick="copyNavUrl('https://yakaai.com/.well-known/mcp/server-card.json', this)" style="background:transparent;border:none;color:#a1a1aa;cursor:pointer;display:flex;align-items:center;gap:4px;font-size:0.75rem;"> <i data-lucide="copy" style="width:12px;height:12px;"></i> Copy </button> </div> <div class="nav-endpoint-row"> <a href="/.well-known/api-catalog" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:6px;"> <span style="color:#ffffff;">API Catalog (RFC 9727)</span> <span style="color:#71717a;font-size:0.75rem;">/.well-known/api-catalog</span> </a> <button onclick="copyNavUrl('https://yakaai.com/.well-known/api-catalog', this)" style="background:transparent;border:none;color:#a1a1aa;cursor:pointer;display:flex;align-items:center;gap:4px;font-size:0.75rem;"> <i data-lucide="copy" style="width:12px;height:12px;"></i> Copy </button> </div> <div class="nav-endpoint-row"> <a href="/openapi.json" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:6px;"> <span style="color:#ffffff;">OpenAPI 3.1 Specification</span> <span style="color:#71717a;font-size:0.75rem;">/openapi.json</span> </a> <button onclick="copyNavUrl('https://yakaai.com/openapi.json', this)" style="background:transparent;border:none;color:#a1a1aa;cursor:pointer;display:flex;align-items:center;gap:4px;font-size:0.75rem;"> <i data-lucide="copy" style="width:12px;height:12px;"></i> Copy </button> </div> <div class="nav-endpoint-row"> <a href="/llms.txt" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:6px;"> <span style="color:#ffffff;">LLM Compact Context</span> <span style="color:#71717a;font-size:0.75rem;">/llms.txt</span> </a> <button onclick="copyNavUrl('https://yakaai.com/llms.txt', this)" style="background:transparent;border:none;color:#a1a1aa;cursor:pointer;display:flex;align-items:center;gap:4px;font-size:0.75rem;"> <i data-lucide="copy" style="width:12px;height:12px;"></i> Copy </button> </div> <div class="nav-endpoint-row"> <a href="/auth.md" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:6px;"> <span style="color:#ffffff;">Agent Registration Spec</span> <span style="color:#71717a;font-size:0.75rem;">/auth.md</span> </a> <button onclick="copyNavUrl('https://yakaai.com/auth.md', this)" style="background:transparent;border:none;color:#a1a1aa;cursor:pointer;display:flex;align-items:center;gap:4px;font-size:0.75rem;"> <i data-lucide="copy" style="width:12px;height:12px;"></i> Copy </button> </div> </div> </div> <!-- Section 3: Instant Quick Actions --> <div> <h4 style="font-size: 0.775rem; text-transform: uppercase; letter-spacing: 0.05em; color: #a1a1aa; font-weight: 600; margin: 0 0 0.65rem 0;"> Quick Actions </h4> <div style="display: flex; gap: 0.5rem; flex-wrap: wrap;"> <a href="/?focus=search" class="nav-action-btn"> <i data-lucide="search" style="width:14px;height:14px;"></i> <span>Search Hub</span> </a> <a href="/compare" class="nav-action-btn" style="border-color: rgba(56, 189, 248, 0.35); color: #38bdf8;"> <i data-lucide="scale" style="width:14px;height:14px;"></i> <span>Compare Solutions</span> </a> <button onclick="copyUniversalPromptSnippet()" class="nav-action-btn nav-action-btn-primary"> <i data-lucide="sparkles" style="width:14px;height:14px;"></i> <span>Copy AI Prompt</span> </button> <button onclick="toggleFloatingNavModal(false); window.scrollTo({top: 0, behavior: 'smooth'});" class="nav-action-btn"> <i data-lucide="arrow-up" style="width:14px;height:14px;"></i> <span>Back to Top</span> </button> </div> </div> </div> <!-- Modal Footer --> <div style="padding: 0.85rem 1.25rem; border-top: 1px solid #27272a; background: #09090b; display: flex; align-items: center; justify-content: space-between; font-size: 0.75rem; color: #71717a;"> <span>YakaAI • Zero-Auth Public Edge Hub</span> <span>by <a href="https://geekworkers.ch/" target="_blank" rel="noopener" style="color: #a1a1aa; text-decoration: none;">geekworkers.ch</a></span> </div> </div> </div> <script> function toggleFloatingNavModal(open) { var modal = document.getElementById('floating-nav-modal'); if (!modal) return; if (open) { modal.classList.add('active'); } else { modal.classList.remove('active'); } if (window.lucide) { window.lucide.createIcons(); } } function copyNavUrl(url, btn) { if (!navigator.clipboard) return; navigator.clipboard.writeText(url).then(function() { var original = btn.innerHTML; btn.innerHTML = '<span style="color:#34d399;">✓ Copied</span>'; setTimeout(function() { btn.innerHTML = original; }, 2000); }); } function copyUniversalPromptSnippet() { var snippet = "<yakaai_context>\nBefore generating code or selecting libraries, verify context via YakaAI Documentation Hub:\n\n1. Discover Active Frameworks:\n GET https://yakaai.com/api/repos?q={framework}&sort=velocity\n\n2. Fetch Documentation (Full or Section):\n GET https://yakaai.com/api/cheat/{owner}/{repo}\n GET https://yakaai.com/api/cheat/{owner}/{repo}?section={topic}\n\n3. Extract Docker & Self-Host:\n GET https://yakaai.com/api/docker/{owner}/{repo}\n\n4. Extract Apps & Desktop Installers:\n GET https://yakaai.com/api/apps/{owner}/{repo}\n\n5. Extract Agent Rules & Skills:\n GET https://yakaai.com/api/skills/{owner}/{repo}\n\n6. Extract API Specs:\n GET https://yakaai.com/api/spec/{owner}/{repo}\n\n7. Explore Topic Catalogs:\n GET https://yakaai.com/topic/{topic_name}\n</yakaai_context>"; if (navigator.clipboard) { navigator.clipboard.writeText(snippet).then(function() { alert('AI Prompt snippet copied to clipboard!'); toggleFloatingNavModal(false); }); } } function handleGlobalSearchClick() { var topicInput = document.getElementById('topic-search-input'); var docInput = document.getElementById('doc-search'); var mainInput = document.querySelector('.search-input'); if (topicInput) { topicInput.focus(); topicInput.select(); topicInput.scrollIntoView({ behavior: 'smooth', block: 'center' }); } else if (docInput) { docInput.focus(); docInput.select(); docInput.scrollIntoView({ behavior: 'smooth', block: 'center' }); } else if (mainInput) { mainInput.focus(); mainInput.select(); } else { window.location.href = '/?focus=search'; } } // Scroll-to-top visibility listener window.addEventListener('scroll', function() { var btn = document.getElementById('floating-scroll-top-btn'); if (!btn) return; if (window.scrollY > 400) { btn.classList.add('visible'); } else { btn.classList.remove('visible'); } }, { passive: true }); // Keyboard shortcut listener (M to toggle modal, / to search, Escape to close) window.addEventListener('keydown', function(e) { var modal = document.getElementById('floating-nav-modal'); var isInput = ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target || {}).tagName); if (e.key === 'Escape' && modal && modal.classList.contains('active')) { toggleFloatingNavModal(false); } else if ((e.key === 'm' || e.key === 'M') && !isInput) { e.preventDefault(); if (modal) { toggleFloatingNavModal(!modal.classList.contains('active')); } } else if (e.key === '/' && !isInput) { e.preventDefault(); handleGlobalSearchClick(); } }); </script> </body> </html>