Compare
Inertia.js without Laravel: your TypeScript options.
Yes. Inertia is a protocol, not part of Laravel, and any server that speaks it can drive a React, Vue or Svelte app with no API in between. In TypeScript you can have it inside a full framework, such as AdonisJS on Node.js, Guren on Bun, or Stratal and popweb on Cloudflare Workers, or as a Hono adapter, such as @hono/inertia, that leaves the rest of the app to you. They differ in where they run, how much of the protocol they cover, and how much they give you around it.
What Inertia is
Inertia joins a server framework to a client one. Your server keeps the routes, the controllers, sign-in and the data, as a classic server-rendered app does. But a route answers with the name of a page component and its props, and React, Vue or Svelte draws the page in the browser.
Inertia calls itself glue, not a framework. It has official client adapters for React, Vue and Svelte, and official server adapters for Laravel, Rails, Phoenix and Django. Version 3, the current one, came out on 26 March 2026.
A server-driven React SPA without building an API
In a usual single-page app, the browser and the server meet at an API: endpoints to design, a client to call them with, loading states, and a router in the browser that mirrors the server’s. Inertia has no client-side router and needs no API.
The first visit gets an HTML page holding the first page’s props. After that, a link click asks the same route for the next page as JSON, and the app swaps it in without a reload. A form posts to a route, the server checks it and redirects, and the next page arrives with any errors beside their fields. Who may see what is decided on the server, once.
The protocol behind this is short and documented, which is why it isn’t tied to one server.
Why use it without Laravel
Inertia’s docs say it works with any backend but is fine-tuned for Laravel, and its starter kits are Laravel’s. Its list of community adapters runs to dozens of other servers, with AdonisJS, Guren and NestJS among the TypeScript ones.
A PHP team is well served by Laravel. A TypeScript team usually wants something else:
- One language from the database to the page, so the props a page has on the server are the types it reads in the browser.
- To deploy where TypeScript runs: Node.js, Bun or Cloudflare Workers.
- The npm packages it already knows, on both sides.
Inertia.js without Laravel in TypeScript: the options
Each is described from its own docs, as of 30 October 2026: where it runs, and what it includes.
AdonisJS is a full framework for Node.js, with authentication, an ORM, validation, mail, queues and a cache. Its official package, @adonisjs/inertia, works with React or Vue, and its guide documents server-side rendering, deferred, optional, always, merge, once and infinite-scroll props, error bags, flash messages, CSRF protection and history encryption. Of the options here, it documents the most of the protocol.
Guren is a Bun-first framework: Laravel-style MVC on Hono, Drizzle ORM, and Inertia with React. You develop on Bun and deploy to Bun, AWS Lambda, Vercel or Cloudflare Workers, and auth, queues, mail and a cache come with it. Its own Inertia adapter, written against Inertia 3, renders pages on the server in the same process, with lazy, always and deferred props, validation errors and CSRF protection. Its coverage table lists merge, once and infinite-scroll props, error bags, flash data in the page and history encryption as not supported.
Stratal is a framework for Cloudflare Workers, with patterns from NestJS and Laravel: modules, dependency injection, and OpenAPI docs generated from Zod schemas. @stratal/inertia is an Inertia 3 adapter for React, with streaming server-side rendering, deferred, optional, merge, once, always and infinite-scroll props, shared data and flash messages. @stratal/framework adds Better Auth sign-in, guards and the ZenStack ORM. Its packages are at version 0.1.
@hono/inertia is Hono’s own Inertia middleware, from the honojs/middleware repository, at 0.8.1. It’s an adapter rather than a framework: a route answers with c.render and a page’s name and props, with partial reloads, lazy, deferred and merge props, infinite scroll and shared data, and its Vite plugin types page names and props from your routes. It runs anywhere Hono runs, with React, Vue or Svelte. Sign-in, validation and the database are yours to choose, and it doesn’t render pages on the server.
@antennajs/adapter-hono is an older community adapter for Hono, first published in 2023. Its 2.0 release, in June 2026, made it compatible with Inertia 2. It works with any Inertia client, and renders pages on the server in the same process, through a function you give it.
popweb, @popcomputer/web, is a framework built on Hono and Inertia for Cloudflare Workers, whose actions are Effect programs. Around the protocol it adds Better Auth sign-in, validation with Effect Schema, Drizzle on D1 or Postgres, route model binding that loads only the records a visitor may see, guards and roles, and a page cache at Cloudflare’s edge. It speaks Inertia 3 to a React client, with error bags, flash data and history encryption, but not deferred, merge or infinite-scroll props, and it doesn’t render pages on the server. @hono/inertia or popweb? compares the two Hono options in detail.
How to choose
Start with where the app has to run, then how much of it you want decided for you.
- On Node.js, with React or Vue and the most of Inertia’s features: AdonisJS.
- On Bun, with Laravel-style MVC and a choice of Workers, Lambda or Vercel later: Guren.
- On Cloudflare Workers, with NestJS-style modules and server-side rendering: Stratal.
- Inside a Hono app you already have, with Vue or Svelte, or with every other piece chosen by you: @hono/inertia.
- On Cloudflare Workers, with sign-in, the database, validation and who sees what decided for you, in Effect: popweb.
- If search engines must read your public pages’ words, choose one that renders on the server: AdonisJS, Guren, Stratal or @antennajs/adapter-hono.
What to check in each one’s docs
Inertia servers differ most in five places:
- Which Inertia version it speaks. Version 3 is current, and version 2 has security fixes until 26 March 2027.
- Which props it supports. Deferred, merge, once and infinite-scroll props each need the server’s help.
- What a failed form does: whether it goes back with its errors, under an error bag when a page has several forms, and whether flash messages reach the next page.
- Whether it renders on the server, and whether that needs a separate Node.js process.
- What comes with it beyond the protocol: sign-in, validation, a database, and checks on who may see what.
Questions people ask
Can I use Inertia.js without Laravel?
Yes. Inertia is a protocol between a server and a React, Vue or Svelte app, and Laravel is one of many servers that speak it. Rails, Phoenix and Django have official adapters, and in TypeScript you can use AdonisJS, Guren, Stratal, @hono/inertia, @antennajs/adapter-hono or popweb.
How do I build a React SPA without writing an API?
Use Inertia with a server that speaks it. Each route renders a React page component with its props, and Inertia’s client fetches the next page as JSON when a link is clicked, so there are no endpoints to design and no client-side router. On the server, pick one of the options above; in the browser, install @inertiajs/react.
Which Inertia options run on Cloudflare Workers?
Stratal and popweb are built for Workers. Guren deploys to Workers as well as to Bun, AWS Lambda and Vercel, and @hono/inertia runs wherever Hono does: its example app is a Worker. AdonisJS runs on Node.js.
Is Inertia a framework?
No. Inertia calls itself glue between a server framework and a client one. It has no database, sign-in or validation of its own, which is why the server you pick matters: an adapter gives you the protocol, and a framework gives you the app around it too.
Do I need server-side rendering?
Not for pages behind sign-in, which search engines never see. It helps public pages, such as a landing page, whose words should be in the first HTML, and it shows the first page sooner on a slow connection. AdonisJS, Guren, Stratal and @antennajs/adapter-hono render on the server; @hono/inertia and popweb send the props and let React draw the page in the browser.