Laravel 13: Features, Helpers &amp; Upgrade Notes | Mohamed Said        [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://www.msaied.com) [ Home ](https://www.msaied.com) [ Projects ](https://www.msaied.com/projects) [ Articles  ](https://www.msaied.com/articles) [ Certificates ](https://www.msaied.com/certificates) [ Contact ](https://www.msaied.com#contact-section) 

       [  ](https://github.com/EG-Mohamed)       

 [ Home ](https://www.msaied.com) [ Projects ](https://www.msaied.com/projects) [ Articles ](https://www.msaied.com/articles) [ Certificates ](https://www.msaied.com/certificates) [ Contact ](https://www.msaied.com#contact-section) 

  [ home ](https://www.msaied.com)    [ articles ](https://www.msaied.com/articles)    Laravel New in 13: Features, Helpers, and Upgrade Notes        On this page       1. [  Laravel 13: What Actually Matters for Senior Engineers ](#laravel-13-what-actually-matters-for-senior-engineers)
2. [  PHP 8.3 as the Minimum Baseline ](#php-83-as-the-minimum-baseline)
3. [  Fluent Uri Value Object ](#fluent-codeuricode-value-object)
4. [  Request::string() and Tighter Input Casting ](#coderequeststringcode-and-tighter-input-casting)
5. [  Arr::from() and Collection Interop ](#codearrfromcode-and-collection-interop)
6. [  Breaking Changes Worth Auditing ](#breaking-changes-worth-auditing)
7. [  Upgrade Path ](#upgrade-path)
8. [  Takeaways ](#takeaways)

  ![Laravel New in 13: Features, Helpers, and Upgrade Notes](https://cdn.msaied.com/625/629cfac34ade7206a215809c0438c5ae.png)

  #laravel   #php   #upgrade   #backend  

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

     3 Sep 2026      3 min read    ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said  

       Table of contents

1. [  01   Laravel 13: What Actually Matters for Senior Engineers  ](#laravel-13-what-actually-matters-for-senior-engineers)
2. [  02   PHP 8.3 as the Minimum Baseline  ](#php-83-as-the-minimum-baseline)
3. [  03   Fluent Uri Value Object  ](#fluent-codeuricode-value-object)
4. [  04   Request::string() and Tighter Input Casting  ](#coderequeststringcode-and-tighter-input-casting)
5. [  05   Arr::from() and Collection Interop  ](#codearrfromcode-and-collection-interop)
6. [  06   Breaking Changes Worth Auditing  ](#breaking-changes-worth-auditing)
7. [  07   Upgrade Path  ](#upgrade-path)
8. [  08   Takeaways  ](#takeaways)

 Laravel 13: What Actually Matters for Senior Engineers
------------------------------------------------------

Laravel 13 continues the framework's trend of shipping opinionated defaults while keeping the escape hatches open. This post focuses on the changes that affect production codebases — not the marketing highlights.

### PHP 8.3 as the Minimum Baseline

Laravel 13 drops PHP 8.1 and 8.2 support entirely. That is the first gate. If your hosting stack is behind, upgrade PHP before touching the framework.

The payoff is real: typed class constants, `json_validate()`, `readonly` class improvements, and the `#[\Override]` attribute are all first-class citizens now. The framework itself uses typed constants on several core classes, so your IDE and static analysis tools get sharper inference out of the box.

```php
// Framework internals now look like this — your own code can too
class Status
{
    const string ACTIVE = 'active';
    const string SUSPENDED = 'suspended';
}

```

### Fluent `Uri` Value Object

Laravel 13 ships a `Uri` value object that wraps League URI under the hood but exposes a fluent, immutable API directly from the `Illuminate\Support` namespace.

```php
use Illuminate\Support\Uri;

$uri = Uri::of('https://example.com/api/v1')
    ->withPath('/api/v2/users')
    ->withQueryParam('page', 3)
    ->withQueryParam('per_page', 25);

echo $uri; // https://example.com/api/v2/users?page=3&per_page=25

```

This replaces the scattered `parse_url` / `http_build_query` gymnastics that litter most codebases. It is immutable, so you can safely pass it through pipelines without defensive cloning.

### `Request::string()` and Tighter Input Casting

The `Request` object gains `string()`, `integer()`, `float()`, and `boolean()` methods that return typed scalars rather than raw strings. This closes a long-standing gap where `$request->input('limit')` returned a string even when you expected an int.

```php
// Before
$limit = (int) $request->input('limit', 20);

// Laravel 13
$limit = $request->integer('limit', 20); // already existed
$search = $request->string('q')->trim()->lower()->value();

```

The `string()` method returns a `Stringable` instance, so you can chain fluent string operations before extracting the value.

### `Arr::from()` and Collection Interop

`Arr::from()` is a small but welcome addition that normalises any iterable — including generators, `Traversable` objects, and `Collection` instances — into a plain PHP array without the `iterator_to_array` boilerplate.

```php
use Illuminate\Support\Arr;

$array = Arr::from($lazyCollection->take(500));

```

### Breaking Changes Worth Auditing

**1. `Model::preventLazyLoading()` is on by default in `APP_ENV=local`.**If you were relying on lazy loading in tests or local tooling, you will see `LazyLoadingViolationException` immediately. Fix your eager loads rather than disabling the guard.

**2. `Storage::url()` now throws on missing disks.**Previously it silently returned a broken URL. Wrap calls in a try/catch or guard with `Storage::disk($disk)->exists()` first.

**3. Queue serialization of closures requires `laravel/serializable-closure` ^2.0.**Bump the constraint in `composer.json` before upgrading.

### Upgrade Path

```bash
# 1. Bump PHP to 8.3 in your Dockerfile / runtime
# 2. Update composer.json
composer require laravel/framework:^13.0 --update-with-dependencies

# 3. Run the automated upgrade checks
php artisan about
php artisan config:clear && php artisan cache:clear

# 4. Run your full test suite with strict mode on
php artisan test --parallel

```

Check `CHANGELOG.md` in the framework repo for the exhaustive list; the above covers the changes most likely to bite a real production app.

### Takeaways

- PHP 8.3 is now mandatory — audit your hosting stack first.
- The `Uri` value object eliminates a whole class of URL-manipulation bugs.
- `Request::string()` and friends return typed values, tightening input contracts.
- `Arr::from()` normalises any iterable cleanly.
- Lazy loading violations are surfaced by default locally — treat them as bugs, not noise.
- Queue closure serialization requires `serializable-closure` ^2.0.

 Found this useful?

          [  ](https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.msaied.com%2Farticles%2Flaravel-new-in-13-features-helpers-and-upgrade-notes&text=Laravel+New+in+13%3A+Features%2C+Helpers%2C+and+Upgrade+Notes) [  ](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.msaied.com%2Farticles%2Flaravel-new-in-13-features-helpers-and-upgrade-notes) 

 Frequently Asked Questions 
----------------------------

  3 questions  

     Q01  Can I upgrade to Laravel 13 without upgrading to PHP 8.3?        No. Laravel 13 requires PHP 8.3 as its minimum version. You must upgrade your runtime before bumping the framework constraint in composer.json. 

      Q02  Does the new Uri value object replace the existing URL helper?        It complements rather than replaces it. The `url()` helper and `URL` facade remain for route-aware URL generation. `Uri::of()` is for constructing and manipulating arbitrary URIs in a type-safe, immutable way. 

      Q03  Will enabling lazy loading violations by default break my test suite?        Only if your tests rely on implicit lazy loading. The fix is to add the missing `with()` eager loads to your queries. You can temporarily disable the guard in a specific test with `Model::withoutLazyLoadingViolations()` while you work through the backlog. 

  Continue reading

 More Articles 
---------------

 [ View all    ](https://www.msaied.com/articles) 

 [ ![Statamic Sidecar: Edit Markdown Sites from the Control Panel Without Migration](https://cdn.msaied.com/624/6df15b406d700ea26fb98c6ad4779195.png) Statamic Markdown CMS 

### Statamic Sidecar: Edit Markdown Sites from the Control Panel Without Migration

Statamic's new Sidecar product lets you manage any static site generator's Markdown files through the Statamic...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 2 Sep 2026     3 min read  

  Read    

 ](https://www.msaied.com/articles/statamic-sidecar-edit-markdown-sites-from-the-control-panel-without-migration) [ ![Laravel Macro-Free Extensibility: Extending Eloquent Builder with Custom Query Objects](https://cdn.msaied.com/621/b0c176a363378658e83bb44ed379879b.png) laravel eloquent clean-architecture 

### Laravel Macro-Free Extensibility: Extending Eloquent Builder with Custom Query Objects

Skip global macros and reach for typed, testable query objects that encapsulate reusable Eloquent constraints...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 2 Sep 2026     1 min read  

  Read    

 ](https://www.msaied.com/articles/laravel-macro-free-extensibility-extending-eloquent-builder-with-custom-query-objects) [ ![Livewire v3 Performance: Computed Properties, Dehydration Budgets, and Wire:model Lazy](https://cdn.msaied.com/620/e4d958595b3e6a6b47c586df3f972938.png) livewire laravel performance 

### Livewire v3 Performance: Computed Properties, Dehydration Budgets, and Wire:model Lazy

Stop over-fetching on every request cycle. This deep-dive covers Livewire v3 computed property memoisation, co...

  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said 

 2 Sep 2026     3 min read  

  Read    

 ](https://www.msaied.com/articles/livewire-v3-performance-computed-properties-dehydration-budgets-and-wiremodel-lazy) 

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

Explore

- [Home](https://www.msaied.com)
- [Projects](https://www.msaied.com/projects)
- [Articles](https://www.msaied.com/articles)
- [Certificates](https://www.msaied.com/certificates)
- [Contact](https://www.msaied.com#contact-section)

Connect

- [   hello@msaied.com ](mailto:hello@msaied.com)
- [   +20 109 461 9204 ](tel:+201094619204)

© 2026 Mohamed Said. All rights reserved.

 [  ](https://github.com/EG-Mohamed) [  ](https://www.linkedin.com/in/msaiedm/) [  ](https://wa.me/201094619204) [  ](mailto:hello@msaied.com) [  ](https://drive.google.com/file/u/0/d/1MF20IPRJyzfy32mhEutjL5EpSls0w2Q8/view)
