demo-v3Log in - demo-v3
Want to play with the new Inertia v3 features? @pascalbaljet.bsky.social built a comprehensive demo app!
Links straight to both the docs and the source code for every example, so you can try it in the browser and immediately see how it's implemented.
demo-v3.inertiajs.com
11.03.2026 13:50
👍 9
🔁 3
💬 0
📌 0
My Table package uses Dusk for E2E tests (moving to Pest soon). Yesterday CI suddenly became very slow on my Mac Mini M1 self-hosted runner.
Turned out Chrome 145 was the culprit. Downgrading to Chrome 138 fixed it. If Dusk is slow in CI, try that! 🐌
09.03.2026 13:02
👍 2
🔁 0
💬 0
📌 0
Upgrade Guide for v3.0 - Inertia.js Documentation
This is a beta release, so we'd love your feedback. Install it, test it, and let us know what you think!
Full blog post: laravel.com/blog/inertia...
Upgrade guide: inertiajs.com/docs/v3/gett...
05.03.2026 20:01
👍 2
🔁 0
💬 0
📌 0
v3 also includes nested prop types with dot-notation support, a default layout option in 'createInertiaApp', TypeScript form component generics, enum support in 'Inertia::render()', and a 'preserveErrors' option for partial reloads.
05.03.2026 20:01
👍 3
🔁 0
💬 1
📌 0
Axios has been replaced with a built-in XHR client. Smaller bundle, fewer dependencies. Built-in HTTP interceptors provide the same extension point, and an Axios adapter is available if you prefer to keep using it.
05.03.2026 20:01
👍 2
🔁 0
💬 1
📌 0
// app/Providers/AppServiceProvider.php
use Inertia\ExceptionResponse;
use Inertia\Inertia;
Inertia::handleExceptionsUsing(function (ExceptionResponse $response) {
if (in_array($response->statusCode(), [403, 404, 419, 429, 500, 503])) {
return $response->render('ErrorPage', [
'status' => $response->statusCode(),
])->withSharedData();
}
});
Custom error pages for 500s and other exceptions now have a proper API. The 'handleExceptionsUsing()' method lets you render Inertia error pages with full access to shared data 🛡️
05.03.2026 20:01
👍 2
🔁 0
💬 1
📌 0
<!-- AppLayout.vue -->
<script setup>
import { useLayoutProps } from '@inertiajs/vue3'
const layout = useLayoutProps({
subtitle: '',
})
</script>
<template>
<div v-if="layout.subtitle" class="banner">
{{ layout.subtitle }}
</div>
<slot />
</template>
<!-- Any page -->
<script setup>
import { setLayoutProps, resetLayoutProps } from '@inertiajs/vue3'
setLayoutProps({ subtitle: 'Welcome back!' })
// Reset to defaults...
resetLayoutProps()
</script>
The new 'useLayoutProps' hook lets layouts declare defaults that pages can override. Pages update layout state with 'setLayoutProps()'. Supports nested layouts as well.
05.03.2026 20:01
👍 1
🔁 0
💬 1
📌 0
<template>
<Link
href="/features/navigation/target"
component="Features/Navigation/Target"
>
Navigate Instantly
</Link>
</template>
// Or programmatically with placeholder props...
router.visit(url, {
component: 'Features/Navigation/Target',
pageProps: (currentProps, sharedProps) => ({
...sharedProps,
greeting: 'Loading from server...',
items: [],
}),
})
Instant visits swap to the target page component immediately while the server request fires in the background. The user sees the new page right away with shared props, and the full data merges in when the response arrives ✨
05.03.2026 20:01
👍 3
🔁 0
💬 1
📌 0
import { router } from '@inertiajs/vue3'
router
.optimistic((props) => ({
post: {
...props.post,
is_favorite: !props.post.is_favorite,
},
}))
.post(`/posts/${post.id}/favorite`)
Optimistic updates are now built into Inertia. Chain 'optimistic()' before any router visit to apply changes instantly. If the request fails, props revert automatically 💫
05.03.2026 20:01
👍 2
🔁 0
💬 1
📌 0
<script setup>
import { useHttp } from '@inertiajs/vue3'
const http = useHttp({ name: '' })
function postToApi() {
http.post('/api/endpoint', {
onSuccess: (response) => {
console.log(response)
},
})
}
</script>
<template>
<input v-model="form.name" />
<button :disabled="form.processing" @click="postToApi">
{{ form.processing ? 'Sending...' : 'Send Request' }}
</button>
</template>
Introducing the 'useHttp' hook. It gives you the same developer experience as 'useForm', but for plain HTTP requests. Reactive state, error handling, file upload progress, and request cancellation, all without triggering a page visit.
05.03.2026 20:01
👍 4
🔁 0
💬 1
📌 0
SSR in development no longer requires a separate Node.js server. With the Vite plugin, just run 'composer dev' and your pages are server-rendered. No separate build step, no separate process, way better error reporting 🔥
05.03.2026 20:01
👍 1
🔁 0
💬 1
📌 0
// vite.config.js
export default defineConfig({
plugins: [
laravel({
input: ['resources/js/app.js'],
refresh: true,
}),
inertia(),
vue(),
],
})
// resources/js/app.js
import { createInertiaApp } from '@inertiajs/vue3'
createInertiaApp()
The new @inertiajs/vite plugin handles page resolution, code splitting, and SSR setup automatically. Your entire entry point can now be a single function call: createInertiaApp() ⚡️
05.03.2026 20:01
👍 1
🔁 0
💬 1
📌 0
Inertia 3 beta is here! 🚀
This is a big one. New Vite plugin, optimistic updates, standalone HTTP requests, layout props, simplified SSR, and Axios has been replaced with a built-in XHR client.
Here's what's new 🧵
05.03.2026 20:01
👍 23
🔁 4
💬 2
📌 3
So a regular HTTP request and then update the Inertia Page props?
28.02.2026 10:21
👍 0
🔁 0
💬 1
📌 0
🔥
28.02.2026 10:19
👍 3
🔁 0
💬 0
📌 0
Inertia Modal v2 beta is out!
✅ TypeScript support for React + Vue
✅ Prefetch: preload modals on hover, click, or mount
✅ Native <dialog> element for better accessibility
✅ closeOnClickOutside prop
✅ Local modal props
✅ Inertia 2 + Tailwind 4 only
✅ Laravel Boost support
28.02.2026 10:14
👍 4
🔁 0
💬 1
📌 0
I'll probably release this Modal beta tomorrow. I've already published the Vanilla library, which will be shared across other existing and upcoming packages 🔥
Probably not super interesting to most, but if you want to check it out, here it is:
github.com/inertiaui/va...
27.02.2026 23:06
👍 1
🔁 0
💬 1
📌 0
TIL the Web Animations API lets you trigger animations in JavaScript and await their completion ✨
No CSS keyframes needed. Works in all modern browsers.
27.02.2026 12:58
👍 4
🔁 0
💬 1
📌 0
Also shipped v8.9.0 of the FFmpeg package! Laravel 13 support, improved handling of HLS with multiple audio streams, and 10+ fixes included.
Happy encoding! 📺
24.02.2026 22:06
👍 4
🔁 0
💬 1
📌 0
I just released v3.7.0 of my Cross Eloquent Search package! In addition to some fixes, it also comes with:
✅ Support for Laravel 13
✅ Support for PostgreSQL and SQLite
✅ Added exactMatch() and tap() methods
Enjoy! 🔎
23.02.2026 21:23
👍 3
🔁 1
💬 1
📌 1
Try to get a beta version out in the next couple of days.
22.02.2026 20:40
👍 1
🔁 0
💬 0
📌 0
Migrated from Dusk to Pest Browser Testing. Added support for prefetching, native <dialog> element, passing props to local modals, custom component support for <ModalLink>, and better 'click outside' customization. Also some architectural changes.
22.02.2026 20:39
👍 3
🔁 0
💬 0
📌 0
The next major version of Inertia Modal will drop all dependencies like Headless UI and Reka UI. All utilities will be built in-house.
Dropping support for Inertia 1, Laravel 10, and Tailwind CSS 3. Adding TypeScript.
16.02.2026 15:21
👍 5
🔁 0
💬 1
📌 2
With the latest version of Laravel Precognition, you can now validate array and nested object fields using wildcards ✨
form.validate('author.*')
form.validate('contributors.*.email')
form.validate('contributors.*.*')
04.02.2026 17:20
👍 2
🔁 1
💬 0
📌 0
This SDK is a beast! 🚀
30.01.2026 18:05
👍 2
🔁 0
💬 0
📌 0