Laravel Starter Kits Switch to Vite+
As of August 28, 2026, every Laravel starter kit ships with Vite+, the unified frontend toolchain that entered beta on July 2, 2026. Taylor Otwell announced the change on X, and the work landed in laravel/maestro#60, contributed by Wendell Adriel. Maestro then synced the update across the React, Vue, Svelte, and Livewire repositories on the same day, pinning vite-plus at 0.3.0.
Vite+ is a single CLI called vp that wraps Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task, and also manages your runtime and package manager. For Laravel developers, the most immediate effect is that ESLint and Prettier are gone from the frontend setup.
Four Scripts Become Two
The Inertia-based kits previously exposed four separate npm scripts — lint, lint:check, format, and format:check. These collapse into a single vp check command that formats with Oxfmt, lints with Oxlint, and runs a type check in one pass:
"scripts": {
"build": "vp build",
"build:ssr": "vp build && vp build --ssr",
"dev": "vp dev",
"check": "vp check",
"check:fix": "vp check --fix",
"types:check": "tsc --noEmit"
}
composer ci:check follows suit, running npm run check where it previously chained npm run lint:check and npm run format:check.
The old toolchain removal also deleted eslint.config.js, .prettierrc, and .prettierignore from each Inertia kit, along with roughly a dozen devDependencies including eslint, typescript-eslint, prettier, prettier-plugin-tailwindcss, and the various ESLint plugins for React, Vue, Svelte, and imports. The React kit alone shed 129 lines of ESLint configuration.
Lint and Format Rules Move into vite.config.ts
With standalone config files removed, lint and format rules now live directly in vite.config.ts under lint and fmt keys. Warnings are treated as failures, and type-aware linting is enabled by default:
import { defineConfig, lazyPlugins } from 'vite-plus';
export default defineConfig({
plugins: lazyPlugins(() => [
// ...
]),
lint: {
ignorePatterns: [
'vendor/**',
'bootstrap/ssr/**',
'resources/js/components/ui/*',
],
options: {
denyWarnings: true,
typeAware: true,
},
},
fmt: {
printWidth: 80,
tabWidth: 4,
singleQuote: true,
semi: true,
sortTailwindcss: {
functions: ['clsx', 'cn', 'cva'],
entryPoint: 'resources/css/app.css',
},
},
});
Per-Stack Changes
- React — Upgraded to
@vitejs/plugin-reactv6; the React Compiler now runs through@rolldown/plugin-babelinstead of the plugin'sbabeloption. - Svelte — Swapped
lucide-sveltefor the officially supported@lucide/sveltepackage. - Vue — Received the standard toolchain swap with no additional framework-specific changes noted.
- Livewire — Smallest diff of the four (no TypeScript to lint):
devandbuildscripts moved tovp, and plugins wrapped inlazyPlugins().
Migrating an Existing Project
New applications generated from any starter kit pick up Vite+ automatically. For existing Vite projects, VoidZero provides a migration command:
vp migrate
The official migration guide notes that complex projects may still require manual follow-up, so review it carefully before running this against production code.
Key Takeaways
- All Laravel starter kits now pin
vite-plusat0.3.0. - ESLint, Prettier, and their config files are removed from every Inertia kit.
- Four npm scripts collapse into
vp checkandvp check --fix. - Lint and format configuration moves into
vite.config.ts. - Type-aware linting and warning-as-error are on by default.
- Existing projects can migrate with
vp migrate, but manual review is advised.
Source: Laravel Starter Kits Now Ship with Vite+ — Laravel News