Laravel and Vue in 2026: Inertia, a SPA, or Nuxt

Three ways to put Vue on a Laravel 13 app, and the one to pick when the team, the API, and the first feature are still small.

For your AI agent

Copies a prompt. Paste it into the AI agent you already have open.

Read https://laravel-vuejs.space/laravel-vue-in-2026.md
Three ways to put Vue on a Laravel 13 app, and the one to pick when the team, the API, and the first feature are still small.
Do not add Vue Router for those pages.
Do not start here for an internal tool.
Do not install both to render the same page.
Show the diff. Do not commit.

Next: What you need to build with Laravel 13 and Vue 3 in 2026

On this page · 10 sections
  1. Option 1: Inertia and the Vue starter kit
  2. Option 2: a Vue SPA with Sanctum
  3. Option 3: Nuxt in front of Laravel
  4. Livewire, when the team is not a Vue team
  5. What changes and what stays the same
  6. A rule for the first week
  7. Recap
  8. FAQ
  9. Next steps
  10. Sources

You search for “Laravel Vue” and land on three different architectures. They are not interchangeable. Pick one before you install packages, because Vue Router next to Inertia, or Sanctum tokens inside a starter kit, creates work you have to undo.

TL;DR

  • Default: Inertia + the Vue starter kit. One team, a logged-in app, no public API yet. Routes stay in Laravel.
  • Vue SPA + Sanctum when the browser is one of several API clients. Auth is a session cookie, not a token.
  • Nuxt 4 when the public site is the product; Livewire when the team writes PHP, not Vue.
  • Can’t name a second API client this quarter? Use the starter kit.

What you'll learn

  • When Inertia and the Vue starter kit are the right default
  • When a separate Vue SPA with Sanctum pays off
  • When Nuxt (or Livewire) is the better fit

Who it's for: Developers starting a Laravel 13 app with a Vue front end

Applies to: Laravel 13 · Inertia 3 · Vue 3.5 · Vite 8 · Nuxt 4 · October 2026

The versions below are the ones we would start with in October 2026. The checklist is in what you need.

Option 1: Inertia and the Vue starter kit#

This is the default. laravel new with the Vue starter kit gives you Laravel 13, Inertia 3, Vue 3.5, TypeScript, Vite 8, Tailwind CSS 4, and shadcn-vue. Login already works. Routes stay in routes/web.php. A controller returns Inertia::render() and the Vue page receives props. There is no API to design for the screens you render yourself.

Start one

bash
laravel new blog

Pick the Vue starter kit when the installer asks. The setup guide walks through every prompt.

Use this when one team owns the product, the UI is a logged-in application, and you do not need a public API on day one. The setup guide gets the first page on screen. The CRUD guide adds create, edit, delete, search, and pagination.

Gotcha: no Vue Router here

Do not add Vue Router for those pages. Inertia already navigates. A second router fights it.

Client-only state, such as a draft that should survive a visit to another page, belongs in Pinia. Server state stays in the props.

Option 2: a Vue SPA with Sanctum#

Use a separate Vue app when the browser is one of several clients. A mobile app, a partner, or a second front end needs an HTTP API. Laravel owns JSON. Vue owns the URL, with Vue Router.

Authentication for that first-party SPA is a session cookie, not a bearer token. Sanctum’s own docs say not to use API tokens for your own SPA. The cookie flow, the CSRF call, and the CORS settings are in Authenticate a Vue SPA with Laravel Sanctum.

Heads up: the cost of the split

This split costs more at the start. You design resources, pagination, and errors twice, once in JSON and once in the client. You also deploy two things, or you proxy the SPA through Laravel. Take that cost when the API is the product.

Option 3: Nuxt in front of Laravel#

Nuxt 4 is the right Vue front end when the public site is the product: marketing pages, a content site, or a storefront that must be fast and indexable without you running Inertia’s SSR process. Laravel stays the API and the admin. Nuxt talks to it over HTTP, usually with Sanctum cookies if the two apps share a parent domain.

Do not start here for an internal tool. You would rebuild routing, auth, and data loading that the Vue starter kit already ships.

Livewire, when the team is not a Vue team#

Laravel’s other official starter kit is Livewire. The UI is Blade, rendered on the server. Choose it when the people writing the screens are PHP developers and the interactions fit server-round-trips. Choose Vue when the screen is a dense client: a builder, a large table with local state, or a component library you already have in Vue.

Livewire is not a Vue setup. Do not install both to render the same page. The longer comparison is Livewire or Inertia.

What changes and what stays the same#

JobInertia + VueVue SPA or Nuxt
RoutingLaravelVue Router or Nuxt
Auth for the browserStarter kit sessionSanctum cookie session
Auth for a phone appSanctum token, separate routesSanctum token
Page dataInertia propsJSON
FilesInertia form uploadmultipart/form-data to the API
Live updatesReverb and EchoSame, with the SPA auth header
ProductionVite build and SSRSPA host plus Laravel

PHP is still 8.3 to 8.5. Node is 20.19+ or 22.12+, which includes 24 LTS. New apps still start on SQLite and move to MySQL, MariaDB, or PostgreSQL when production needs it.

A rule for the first week#

Pro tip: the one-question test

If you cannot name a second client that will call the API this quarter, use the Vue starter kit.

Ship the first CRUD. Add a JSON API later for the clients that actually exist. The package chart on /packages is the same list either way. The install recipe on /tools/recipe only helps after this choice, because it will not stop you installing Vue Router beside Inertia.

Recap#

  • Inertia + the Vue starter kit is the default for one team building a logged-in app.
  • A Vue SPA with Sanctum cookies is for when the API has several real clients.
  • Nuxt 4 is for a public, indexable site; Livewire is for PHP-first teams.
  • Never mix Vue Router with Inertia, or Livewire with Vue on the same page.

FAQ#

Should I use Inertia or a separate Vue SPA with Laravel?

Use Inertia with the Vue starter kit unless you already have a second client (mobile app, partner, another front end) that needs a JSON API this quarter.

Can I use Vue Router with Inertia?

No. Inertia already handles navigation with Laravel routes; a second router fights it. Vue Router belongs in a separate SPA.

Should a first-party Vue SPA use Sanctum tokens?

No. Sanctum’s docs recommend its cookie-based SPA authentication for your own SPA. Tokens are for mobile apps and third parties.

When is Nuxt better than Inertia for a Laravel app?

When the public site is the product and must be fast and indexable, such as marketing pages, content sites or storefronts. Laravel stays the API.

Which PHP and Node versions do I need in 2026?

Laravel 13 needs PHP 8.3 to 8.5. Vite 8 needs Node 20.19+ or 22.12+ (Node 24 LTS works).

Next steps#

Read down this list. Each link is a different job, and they link back here so the stack choice stays in one place.

Setup. What you need, then the first page. If a tutorial still says Breeze or Jetstream, read that map before you install either package.

The first feature. Create, edit, delete, and search, then a saved message, pagination, and a sortable table. Live validation and file uploads sit on that form.

Auth. Sanctum cookies, CORS errors, Fortify, and GitHub login. Sanctum or Passport is the OAuth decision. Vue Router is only for the separate SPA.

The rest of the app. Nuxt in front of the API and JSON resources. Permissions and policies. Pinia, partial reloads, and typed routes. Older tutorials still say Ziggy. TypeScript props, a document title, a persistent layout, and translations. Reverb, database notifications, and a queued job on the page.

Agents. Laravel Boost teaches the coding agent the Vue and Inertia versions you installed. The AI SDK answers a note on a Vue page. The provider key stays on the server.

Short searches. One hundred short guides answer one failure each: a 419, a validation error, a Fortify email, a queue worker, a session cookie.

Production. Sail, Vite, and tests. Then server rendering, deploy, and Livewire or Inertia.

Sources#

Found this useful?

Ask questions, share what you built.

Join thousands of Laravel and Vue developers in our Facebook group, or get new posts in your Telegram feed. Sharing this article helps too.

Keep reading

Newsletter

Get the best of Laravel & Vue, once a month.

One short email with new guides, release notes worth reading and hand-picked community links. No spam, unsubscribe any time.