Inertia v3 Beta: Built-in HTTP Client, Optimistic Updates, and Instant Visits
Inertia v3 beta has landed, introduced by Joe Tannenbaum at Laracon EU 2026. It is a substantial pre-release that removes Axios as a hard dependency, adds a new useHttp hook for standalone requests, brings optimistic update support across the router and form APIs, and introduces instant visits. Here is what is in it.
Axios is now optional
Inertia v3 ships its own lightweight XHR-based HTTP client, making Axios an optional peer dependency rather than a required one. Applications that do not need Axios can remove it entirely. Those that prefer to keep it can opt back in via an adapter:
import { axiosAdapter } from '@inertiajs/core'
createInertiaApp({ http: axiosAdapter() })
For most Laravel applications this is a welcome reduction in bundle size, and it opens the door to using Inertia in environments where Axios was previously a friction point.
useHttp for standalone requests
A new useHttp hook allows HTTP requests to be made outside of Inertia's visit system - useful for search queries, background data fetching, and any request that should return data rather than trigger a page navigation. It provides the same developer experience as useForm, including processing, errors, progress, and isDirty state, and supports withAllErrors to surface all validation errors rather than just the first:
const http = useHttp({ query: '' })
http.get('/api/search').then(results => console.log(results))
Optimistic updates
Optimistic update support has been added across router, useForm, and useHttp, including concurrent optimistic updates. The update callback receives the current props and returns the optimistic state to apply immediately, with automatic rollback on validation errors, server errors, or interrupted visits. Both a fluent API and an inline option are supported:
router.optimistic(props => ({ todos: [...props.todos, { id: Date.now(), name }] })).post('/todos', { name })
The useForm hook works identically, and the <Form> component gains an optimistic prop for declarative handling. This brings Inertia's form and request APIs to parity with the kind of optimistic UI patterns that are increasingly expected in modern web applications.
Instant visits
Instant visits allow navigation to feel immediate by rendering the destination page before the server response completes. For applications where perceived performance matters, this removes the visible delay between a link click and the page beginning to render.
URL fragment preservation
A new server-side preserveFragment option keeps the URL hash fragment intact across redirects. In Laravel, chain preserveFragment() on a redirect:
return redirect('/users')->preserveFragment();
When the server includes preserveFragment: true in the Inertia page object, the client retains the original request's URL fragment even when the response URL differs. This fixes a longstanding annoyance for single-page applications that rely on hash-based anchoring.
Other additions
- SSR in Vite dev mode - server-side rendering now works in Vite's development mode with a simplified setup, removing the previous requirement to run a separate SSR build during development.
- preserveErrors option - keeps existing validation errors when making partial requests, preventing them from being cleared mid-flow.
- Layout props helpers - new helpers and a
layoutoption increateInertiaApp()for more flexible layout management.
Breaking changes
v3 drops support for React versions below 19, Svelte 4, and CommonJS builds. If your project is still on React 18 or has CommonJS dependencies that rely on Inertia, upgrading will require addressing those first. The beta is available now for testing; the stable release date has not been confirmed.
