Laravel 12, NestJS 10, React 19: The One Feature Worth Caring About in Each

2026-09-164 min readTwixr Solutions

Cover image for Laravel 12, NestJS 10, React 19: The One Feature Worth Caring About in Each

Three major releases dropped recently. Each has a long changelog. Most of it does not matter for the average production app.

Here is what does.


Laravel 12: Starter Kits with React, Vue, and Livewire Out of the Box

Laravel 12 shipped in February 2025. The headline change is not a new auth system or a new ORM layer - it is the rebuilt application starter kits.

The new laravel new flow now lets you pick React, Vue, or Livewire as your frontend, with TypeScript support and Tailwind baked in from the first command. Inertia.js is the bridge for React and Vue kits. The workbench tooling was also rebuilt to make package development less painful.

Why this matters: Before 12, scaffolding a Laravel plus React or Vue app meant stitching together Breeze, Vite, Inertia, and TypeScript config by hand. The new starter kits collapse that into a single opinionated starting point. You spend less time configuring and more time on the actual product.

For teams already running Laravel 11, the upgrade path is minimal - Laravel 12 follows the same annual release cadence and requires PHP 8.2 or higher, same as 11.

One thing to check before upgrading: any package that depends on internal Illuminate contracts may need a version bump. Run composer outdated before you touch composer.json.

Side-by-side comparison of laravel new scaffold output in Laravel 11 vs Laravel 12, showing the new frontend kit selection prompt

If you want a deeper look at how we wire Laravel backends to React frontends in production, see our Next.js Frontend Development service page - the patterns apply equally when Next.js replaces Inertia on the frontend.


NestJS 10: Native Bun Support and ESM Improvements

NestJS 10 landed in mid-2023, and the framework has continued shipping incremental updates on that major. The headline from v10 that actually changed day-to-day work was first-class support for Bun as a runtime, alongside improved ESM module resolution.

Why this matters: Running NestJS on Bun shortens cold start time and cuts test suite runtime - Bun's bundler and test runner are meaningfully faster than ts-node or jest in raw execution. If you run NestJS in Lambda or ECS with short-lived tasks, that matters.

ESM improvements matter because CommonJS interop in large NestJS monorepos causes subtle import ordering bugs that only surface in production builds. The v10 changes make the module graph more predictable.

What you should actually check before switching runtime: your native Node addons (sharp, bcrypt, anything with a .node binary) may not have Bun-compatible builds yet. Test the dependency tree before committing.

Also worth noting: if you are on NestJS 9 or older, the v10 migration guide is short. The breaking changes are mostly around deprecated lifecycle hooks and some HTTP adapter internals. Budget an afternoon, not a sprint.


React 19: Server Actions Move from Experiment to Stable

React 19 was released in December 2024. The one feature that changes production apps is this: Server Actions are now stable.

Server Actions let you call server-side functions directly from a React component without writing a separate API route. You annotate a function with "use server", pass it to a form or a handler, and React handles the serialization, the network call, and the state update.

Why this matters: For CRUD-heavy SaaS products, this eliminates a whole class of boilerplate. You no longer need a REST or tRPC route for every form submission. The client component stays thin; the data mutation lives on the server where it belongs.

The other notable stable addition in React 19 is the use() hook for reading promises and context inside render. Combined with Suspense, it replaces a lot of useEffect plus loading-state machinery that developers have been writing for years.

What to watch out for: Server Actions are a React primitive, but they need a framework to handle the server side - Next.js App Router, Remix, or similar. Using React 19 with a pure Vite client-side setup does not give you Server Actions. Know what layer you are actually running.

Diagram showing React 19 Server Action data flow: component calls server function, server mutates data and returns result, React revalidates component state

The useOptimistic hook also stabilized in 19 - pair it with a Server Action and you get instant UI feedback before the server confirms. That pattern alone removes most of the manual optimistic update code that clutters React codebases.


The Short Version

ReleaseThe One ThingAction
Laravel 12New starter kits with React / Vue / Livewire + TypeScript, first-partyRebuild scaffolding on new projects; upgrade path is low-risk
NestJS 10Native Bun runtime support + ESM fixesEvaluate Bun for Lambda / ECS cold-start; check native addons first
React 19Server Actions stableAdopt in App Router projects; replace boilerplate CRUD routes

None of these require you to rewrite anything running in production today. They are additive. The upgrade calculus is: does the new primitive remove code I maintain? If yes, plan the migration. If no, stay on your current version until the next natural refactor.

Table graphic summarizing Laravel 12 vs NestJS 10 vs React 19 - the single most important feature per release, with a callout on action items for each


For related thinking on how to pick the right Laravel patterns before you hit a scaling wall, the post on Model Observers vs Events vs Listeners in Laravel: Pick the Right Tool is worth 5 minutes of your time.

And if you are tracking what the AI tooling ecosystem is doing in parallel with these framework releases, the takes on Gemini 2.5 Pro Is Out. Here Is What Actually Changes for People Who Ship. and GPT-6 Astra Released: What Engineering Teams and Founders Actually Care About cover the same "builder's take, not press release" angle.

Frequently asked questions

For most production apps, there is no urgent reason. Laravel 12's main additions are the new starter kits, which help new projects more than existing ones. If you are starting a new project, use 12. For existing apps, wait until your next planned maintenance window, run composer outdated, check for package compatibility, and do the upgrade then. The breaking changes are minimal.

Enjoyed this article?

Get notified when I publish new posts on SaaS, Laravel, and remote engineering.

Keep reading

More posts

2026-09-054 min read

Gemini 2.5 Pro Is Out. Here Is What Actually Changes for People Who Ship.

Google released Gemini 2.5 Pro with a 1M-token context window and top reasoning scores. Here is what it means if you build and ship real software.

Read

2026-09-174 min read

Cursor Earned Its Spot. Then It Slipped. Here Is Where It Stands Right Now.

Cursor is still in the workflow - but with guardrails. A builder's honest take on what changed, what broke, and what the recovery looked like.

Read

2026-09-137 min read

NestJS Provider Scopes and the Traps That Catch You in Production

DEFAULT, REQUEST, and TRANSIENT scopes look simple. Here is where each one quietly breaks your NestJS app - and the checklist to avoid the common traps.

Read