Laravel 12: Features, Helpers &amp; Upgrade Notes | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://www.msaied.com/public) - [Home](https://www.msaied.com/public)
- [Projects](https://www.msaied.com/public/projects)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [About](https://www.msaied.com/public#about)

           [  Contact](https://www.msaied.com/public#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://www.msaied.com/public)
- [ProjectsCase studies](https://www.msaied.com/public/projects)
- [ArticlesEngineering notes](https://www.msaied.com/public/articles)
- [CertificatesCredentials](https://www.msaied.com/public/certificates)
- [AboutHow I work](https://www.msaied.com/public#about)
- [ContactGet in touch](https://www.msaied.com/public#contact)

  [Start a conversation](https://www.msaied.com/public#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://www.msaied.com/public)
2. /
3. [Articles](https://www.msaied.com/public/articles)
4. /
5. New in Laravel 12: Features, Helpers, and Upgrade Notes

 New in Laravel 12: Features, Helpers, and Upgrade Notes
========================================================

 Laravel 12 ships with a refined starter kit system, per-request context propagation, and several quality-of-life improvements. Here is what actually matters for production apps and how to upgrade cleanly.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://www.msaied.com/public#person) Published 16 Jun 2026 · Updated 16 Jun 2026 · 3 min read

ShareCopy linkCopied

 ![New in Laravel 12: Features, Helpers, and Upgrade Notes](https://cdn.msaied.com/209/c713447686bc1eb0a921b4027e4e4df8.png) 

  On this page +1. [What Actually Changed in Laravel 12](#what-actually-changed-in-laravel-12)
2. [Revamped Starter Kits](#revamped-starter-kits)
3. [Per-Request Context Propagation](#per-request-context-propagation)
4. [New and Refined Helpers](#new-and-refined-helpers)
5. [Upgrade Notes](#upgrade-notes)
6. [Takeaways](#takeaways)

 What Actually Changed in Laravel 12
-----------------------------------

Laravel 12 is a focused release. Rather than sweeping architectural shifts, it doubles down on developer ergonomics, tightens the application skeleton, and formalises patterns that were previously left to convention. If you are running Laravel 11 in production, the upgrade is low-risk — but there are a handful of decisions worth understanding before you `composer update`.

---

### Revamped Starter Kits

The most visible change is the complete overhaul of the first-party starter kits. The old Breeze and Jetstream scaffolding has been replaced by a unified `laravel/starter-kit` system that ships with three official stacks: **React**, **Vue**, and **Livewire**, each backed by Inertia v2 or Livewire v3 respectively.

```bash
laravel new my-app --kit=react
laravel new my-app --kit=livewire

```

The kits are now proper Composer packages rather than stub-copied files, which means you get upstream fixes without re-scaffolding. Authentication views, middleware, and route registration are all published on demand:

```bash
php artisan kit:publish --views

```

For existing apps, there is no forced migration — Breeze still installs fine — but new projects should prefer the new kits.

---

### Per-Request Context Propagation

Laravel 12 promotes the `Context` facade (introduced experimentally in 11.x) to a first-class feature with guaranteed per-request isolation under Octane and queue workers.

```php
use Illuminate\Support\Facades\Context;

// In a middleware
Context::add('request_id', (string) Str::uuid());
Context::add('tenant_id', $request->user()?->tenant_id);

// Anywhere downstream — including queued jobs that inherit context
$requestId = Context::get('request_id');

```

Queued jobs now automatically receive a snapshot of the context at dispatch time. You opt out per-job if you need a clean slate:

```php
class HeavyReport implements ShouldQueue
{
    use WithoutContextSnapshot; // new trait
}

```

This is a significant win for distributed tracing and multi-tenant logging without reaching for a global singleton.

---

### New and Refined Helpers

**`str()->wrap()`** — wraps a string with a prefix and optional suffix:

```php
Str::of('world')->wrap('Hello, ', '!'); // "Hello, world!"

```

**`Arr::from()`** — a null-safe alternative to `(array)` casting that handles `Arrayable`, `JsonSerializable`, and plain scalars uniformly:

```php
$items = Arr::from($collection); // no more (array) casting surprises

```

**`Number::spellOut()`** — converts integers to English words, useful for invoice generation:

```php
Number::spellOut(1042); // "one thousand and forty-two"

```

---

### Upgrade Notes

**PHP requirement:** Laravel 12 requires PHP **8.2** minimum. PHP 8.1 is dropped.

**Skeleton changes:** The `bootstrap/app.php` fluent API introduced in Laravel 11 is unchanged, but `config/app.php` loses several keys (`aliases`, `providers`) that are now auto-discovered. If you reference them programmatically, switch to `app()->getProviders()` or tagged bindings.

**Removed deprecations:**

- `Route::prefix()` chained without a closure now throws — wrap your grouped routes properly.
- `$request->validate()` no longer accepts a `Validator` instance directly; use `$this->validate()` in controllers or construct the validator explicitly.

**Composer update path:**

```bash
composer require laravel/framework:^12.0 --update-with-dependencies
php artisan migrate
php artisan config:clear

```

Run `php artisan about` after upgrading — it now surfaces the active starter kit, context driver, and queue connection in a single view.

---

### Takeaways

- The new starter kit system is package-based; prefer it for greenfield projects.
- `Context` propagation to queued jobs is automatic in Laravel 12 — use it for tracing and tenant isolation.
- PHP 8.1 support is gone; audit your dependencies before upgrading.
- `Arr::from()`, `str()->wrap()`, and `Number::spellOut()` are small but genuinely useful additions.
- The upgrade from Laravel 11 is straightforward if you have already adopted the 11.x skeleton conventions.

- [laravel](https://www.msaied.com/public/articles?search=laravel)
- [php](https://www.msaied.com/public/articles?search=php)
- [upgrade](https://www.msaied.com/public/articles?search=upgrade)
- [backend](https://www.msaied.com/public/articles?search=backend)

 Frequently asked questions 
---------------------------

  Is the Laravel 12 upgrade from Laravel 11 a big effort?For most apps, no. The main blockers are the PHP 8.2 minimum requirement and a handful of removed deprecations around Route::prefix() and $request-&gt;validate(). If your Laravel 11 app already uses the new bootstrap/app.php skeleton, the upgrade is largely a composer update.

   Does Context propagation work with Laravel Horizon and Redis queues?Yes. Laravel 12 serialises the Context snapshot into the job payload at dispatch time and restores it before the job handle() method is called, regardless of the queue driver. Horizon workers benefit automatically.

   Can I still use Breeze or Jetstream with Laravel 12?Yes, both packages continue to work. The new starter kit system is the recommended path for new projects, but there is no deprecation of Breeze or Jetstream in Laravel 12.

   ![Mohamed Said](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp)About the author
----------------

[Mohamed Said](https://www.msaied.com/public#person)Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

[About](https://www.msaied.com/public#about) [GitHub ↗](https://github.com/EG-Mohamed) [LinkedIn ↗](https://www.linkedin.com/in/msaiedm/) [WhatsApp ↗](https://wa.me/201094619204) [Email Address ↗](mailto:hello@msaied.com) [My CV ↗](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)  

   [Previous articleLaravel Broadcasting with Reverb: Per-Channel Authorization and Presence Channels at Scale](https://www.msaied.com/public/articles/laravel-broadcasting-with-reverb-per-channel-authorization-and-presence-channels-at-scale) [Next articleEloquent Custom Relations: Polymorphic Pivots, HasManyThrough Tricks, and Raw Join Relations](https://www.msaied.com/public/articles/eloquent-custom-relations-polymorphic-pivots-hasmanythrough-tricks-and-raw-join-relations)  

   On this page
-------------

1. [What Actually Changed in Laravel 12](#what-actually-changed-in-laravel-12)
2. [Revamped Starter Kits](#revamped-starter-kits)
3. [Per-Request Context Propagation](#per-request-context-propagation)
4. [New and Refined Helpers](#new-and-refined-helpers)
5. [Upgrade Notes](#upgrade-notes)
6. [Takeaways](#takeaways)

 ###  Have a technical challenge?

 Tell me what you’re building. I reply within two working days.

[Start a conversation](https://www.msaied.com/public#contact) 

   Related articles
-----------------

 [ ![](https://cdn.msaied.com/740/cce86edc21eddcbdd2f2454fadaf9c70.png)  · 3 min read### The Pipeline Pattern in Laravel: Custom Pipelines Beyond Middleware

5 Oct 2026 ](https://www.msaied.com/public/articles/the-pipeline-pattern-in-laravel-custom-pipelines-beyond-middleware-1) [ ![](https://cdn.msaied.com/739/2d6897fdcdcf090613f96f72a64b8a78.png)  · 4 min read### MySQL Full-Text Search in Laravel: Indexes, Relevance Scoring, and Boolean Mode

4 Oct 2026 ](https://www.msaied.com/public/articles/mysql-full-text-search-in-laravel-indexes-relevance-scoring-and-boolean-mode) [ ![](https://cdn.msaied.com/738/073696a3fefe18bec825beec5ac658f5.png)  · 4 min read### Laravel Queue Rate-Limited Middleware: Throttling Jobs Without Losing Work

4 Oct 2026 ](https://www.msaied.com/public/articles/laravel-queue-rate-limited-middleware-throttling-jobs-without-losing-work) 

  Have a technical challenge?
----------------------------

Tell me what you’re building. I reply within two working days.

 [Discuss your project ↗](https://www.msaied.com/public#contact) 

  © 2026 Mohamed Said · Built with Laravel, meant to last.Senior Backend Engineer specializing in Laravel, scalable SaaS platforms, APIs, and cloud infrastructure. I build secure, high-performance web applications that help businesses grow.

 - [Home](https://www.msaied.com/public)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [GitHub](https://github.com/EG-Mohamed)
- [LinkedIn](https://www.linkedin.com/in/msaiedm/)
- [WhatsApp](https://wa.me/201094619204)
- [Email Address](mailto:hello@msaied.com)
- [My CV](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
- [Sitemap](https://www.msaied.com/public/sitemap.xml)
