Laravel 12 shipped in February 2025 with an all‑new starter‑kit experience that replaces the long‑serving Breeze and Jetstream.
Instead of installing a package after you scaffold your project, you now choose a fully‑featured template before the installer runs, and the CLI drops a complete code‑base (front + back end) into place. You own every line, so nothing stands between you and customisation.
A Git‑repository on Packagist that looks like a normal Laravel project.
Must contain authentication, registration, password‑reset flows and a sensible UI.
May target any front‑end technology (React, Vue, Livewire, Blade‑only APIs, etc.).
Distributed exactly like a Composer package, so the Laravel installer can “clone & re‑namespace” it for you.
Kit | Front‑end stack | Layout choices | Component library | SSR‑ready? |
---|---|---|---|---|
React | React 19 + Inertia 2 + TypeScript |
| shadcn/ui | ✅ Inertia SSR support |
Vue | Vue 3 (Composition API) + Inertia 2 + TS |
| shadcn‑vue | ✅ |
Livewire | Blade + Livewire 3 |
| Flux UI | n/a |
All three default to Tailwind 4.
composer global require laravel/installer
laravel new acme-portal
# ⇨ choose “React”, “Vue”, or “Livewire” when prompted
npm i && npm run dev
php artisan serve
That’s it—you have login, register, password reset, email verification, settings, dark‑mode, etc., out of the box.
--using
Any Packagist package that contains a valid composer.json
+ .env.example
can be used:
# Blade‑only UI
laravel new blog-backend \
--using=nikolaybalkandzhiyski/laravel-12-blade-starter-kit
# API‑first, JWT‑auth kit
laravel new api-service \
--using=mehedi8gb/laravel-api-starter-kit
Both examples above are community kits published in 2025.
Tip: keep your own preferred boilerplate private by pushing it to a GitHub repo, tagging a release on Packagist and pointing
--using
at it.
All official kits ship two complete layout files. Changing the import (or Blade component) flips the entire shell.
import AppLayoutTemplate from '@/layouts/app/app-header-layout'; // ← switch!
import AppLayoutTemplate from '@/layouts/app/app-header-layout'; // ← switch!
import { ReactNode } from 'react';
export default function AppLayout({ children }: { children: ReactNode }) {
return <AppLayoutTemplate>{children}</AppLayoutTemplate>;
}
<script setup>
)<script setup lang="ts">
import AppLayout from '@/layouts/app/AppHeaderLayout.vue'; // swap import
</script>
<template>
<AppLayout>
<slot />
</AppLayout>
</template>
{{-- Switch to the header layout --}}
<x-layouts.app.header>
<flux:main container>
{{ $slot }}
</flux:main>
</x-layouts.app.header>
Save, refresh the browser, and your navigation jumps from a collapsible side‑menu to a polished top bar—no extra build step required.
Feature | Where / how |
---|---|
AuthKit (WorkOS), passkeys, social log‑in, SSO | Select the WorkOS variant at install time, then set |
shadcn / Flux components |
|
Inertia SSR (React / Vue) |
|
Email verification | Uncomment the |
Publishing mail templates |
|
Existing project? Keep the kit you already have—nothing breaks. For new builds the CLI simply hides Breeze/Jetstream, but you can still:
composer require laravel/breeze:"^2.0" # or laravel/jetstream:"^5.0"
php artisan breeze:install --inertia
npm i && npm run dev
Breeze will pull in its own stub views and live happily next to the new installer.
“No starter kits appear in Sail/WSL2” – The CLI prompts run before Sail spins up. Install locally (via php.new or Herd‑Lite) first, then pull Sail in.
“I need classic Blade only” – use a community kit such as LaravelDaily/Starter‑Kit.
“Do I need to update the kit?” – No. You own the code; treat it like any other part of your app.
Laravel 12’s new starter‑kit ecosystem is opinionated but hands‑off: you start with a production‑ready foundation and can tear into every component the moment you need to. Whether you lean React, Vue, Livewire, or pure Blade, the installer’s --using
flag plus Packagist turns the whole community into your personal boiler‑plate library. Happy hacking! 🎉