Laravel 13: New Features, Release Date, Install Now

laravel
release
Nabil Hassen
Nabil Hassen
Aug 18, 2025
Laravel 13: Early Preview, New Features and Release Date
Last updated on Dec 17, 2025
Table of contents:

Early Look at Laravel 13

Laravel 13 is still in development, but thanks to the framework’s support policy we know it is due in the first quarter of 2026. This blog post gives an early preview of Laravel 13’s roadmap and new features based on in-progress pull requests. I’ll update this post monthly as Laravel 13’s development continues, so check back for the latest changes and additions.

Laravel 13 - Release Date and Schedule

According to the official Support Policy, Laravel 13 is slated for release in Q1 2026. Each major version has one year and six months of bugfixes and two years of security fixes. For context, Laravel 12 was released in February 2025 and will receive bug fixes until August 13, 2026, and security fixes until February 24, 2027. In comparison, Laravel 13 will target PHP 8.3+ and is expected around Q1 2026 (with bug fixes through Q3 2027 and security fixes through Q1 2028). In other words, you have ample time to upgrade projects; Laravel 12 remains supported well into 2027.

New Features in Laravel 13

Laravel 13 has both groundwork & cleanup, and new developer-facing features. However, several merged and proposed PRs hint at what’s coming. Key highlights include:

Symfony 7.4 & 8.0 support

The framework is being updated to support the latest Symfony components (PR #56029). This means Laravel’s underlying packages (HTTP, Console, etc.) will work with Symfony 7.4 and 8.0 when 13 is released.

Cache touch() method

A new Cache::touch($key) (and corresponding store touch) has been added in PR #55954 to extend the TTL (time-to-live) of a cached item. This lets you refresh a cache key’s expiration without retrieving it.

Subdomain routing order

In PR #55921, subdomain routes are now registered before routes without domains. This change ensures routes tied to specific subdomains take priority during routing.

Model boot-time restrictions

PR #55685 prevents new Eloquent model instances from being created during the boot() method of a model. In practice, this hardens model boot logic by disallowing instantiation of other models (which can cause unexpected side effects) while the current model is booting.

PHP 8.3 requirement

Laravel 13 will bump its minimum PHP version to 8.3 (up from 8.2). In other words, the entire codebase is being upgraded to PHP 8.3, dropping old polyfills and backward-compat hacks to streamline the framework and “let it move faster.” (See PR #54763).

HTTP client pool default concurrency

In PR #57972, PendingRequest::pool() now defaults to 2 for concurrency. This avoids the footgun where developers may think pooled requests are concurrent but they end up executing serially when concurrency is left null.

Safer Request::get() behavior (Symfony parity)

PR #58081 aligns Laravel’s Request::get() behavior with Symfony to avoid breaking changes, improving compatibility as Laravel moves forward with newer Symfony components.

MySQL grammar: DELETE … JOIN with ORDER BY + LIMIT

In PR #57196, Laravel’s MySQL grammar now compiles full DELETE … JOIN queries including ORDER BY and LIMIT, preventing MySQL delete-join batch operations from silently ignoring those clauses.

Managers: bind manager instances to custom driver closures

PR #57173 makes manager extend() callbacks consistently receive a bound manager instance across Laravel’s various manager classes, improving custom driver ergonomics (with upgrade notes since it’s a breaking change).

Polymorphic pivot table naming (plural)

In PR #56832, Laravel improves automatic table name generation for polymorphic pivot tables by using plural names, aligning the behavior with documentation and common conventions.

Queue events: JobAttempted now exposes the actual exception

In PR #56148, the JobAttempted event now passes the full Throwable instead of a boolean flag, giving listeners better context for failures. This change is targeted at Laravel 13 as a breaking change.

Testing cleanup: reset Str factories between tests

PR #57296 restores Str factories to defaults when tearing down test cases, helping prevent cross-test state leakage.

Hyphenated prefixes support

PR #56172 introduces changes related to hyphenated prefixes in areas where prefixes affect behavior, with discussion indicating breaking-change sensitivity.

Notification polish: email subjects

PR #57884 updates verification email subject capitalization, and PR #57882 updates the reset password notification subject.

Each of the above items links to its PR on GitHub for full details. More new features are expected to arrive later, and I will document those as they come.

How to Install & Try Laravel 13 Today

Because Laravel 13 is not yet officially released, the main way to try it now is via the Laravel installer or Composer in dev mode. For example, using the Laravel installer you can run:

laravel new my-app --dev

Or with Composer directly:

composer create-project --prefer-dist laravel/laravel my-app dev-master

This creates a new Laravel project using the dev-master (i.e. Laravel 13) branch. You can then cd my-app and use Laravel as usual (note: you’ll need PHP 8.3 installed to meet the new requirement). These steps let you experiment with the early Laravel 13 codebase. As always, be cautious using dev releases in production, but this is a great way to preview upcoming features.

All of the above is based on the current development state. I’ll continue to monitor PRs and update this post as new features land in Laravel 13. Stay tuned!

Nabil Hassen
Nabil Hassen
Full Stack Web Developer

Stay Updated.

I'll you email you as soon as new, fresh content is published.

Thanks for subscribing to my blog.

Latest Posts