Laravel 12.18.0 Update

June 17, 2025

Laravel 12.18.0 Update

The Laravel team released version 12.18.0 with several cool updates:

  • String encrypt() & decrypt() helpers are now available on Stringable instances.
  • New --batched option for php artisan make:job to generate batchable jobs.
  • UsePolicy attribute to explicitly specify a model’s policy.
  • Per-request HTTP client exception truncation control.

🔐 1. String encrypt/decrypt helpers

Instead of doing this:

// Before
$encryptedToken = str('secret-api-token')
  ->pipe(fn(Stringable $str) => encrypt($str->value()))
  ->prepend('encrypted:')
  ->append(':end');

// After
$encryptedToken = str('secret-api-token')
  ->encrypt()
  ->prepend('encrypted:')
  ->append(':end');

It’s much cleaner and fluent now.

⚙️ 2. Batchable job option

Needed a batchable job? Now you can just run:

php artisan make:job ProcessPodcast --batched

The generated class looks like this:

namespace App\Jobs;

use Illuminate\Bus\Batchable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;

class ProcessPodcast implements ShouldQueue
{
    use Batchable, Queueable;

    public function handle(): void
    {
        if ($this->batch()->cancelled()) {
            return;
        }
        // your processing logic here...
    }
}

🏷️ 3. UsePolicy attribute

Now you can explicitly assign a policy:

#[UsePolicy(PostPolicy::class)]
class Post extends Model {}

No need to rely solely on convention.

🌐 4. HTTP client truncate exception limit

Control exactly how much of the exception response gets truncated per-call:

Http::truncateExceptionsAt(240)->post(/* ... */)

That’s the major highlights from Laravel 12.18.0. Check out the full changelog or GitHub diff to explore the rest.

The Ultimate Managed Hosting Platform