Laravel 14 is expected in Q1 2027. The framework will require PHP 8.4 or newer, with bug fixes planned through Q3 2028 and security updates through Q1 2029. As of September 21, 2026, the Laravel team had published neither a release date nor an official feature list. The findings below come from the laravel/framework master branch and can still change.
<?php
Route::query('/search', function () {
return request()->input('filter');
});Routing gains Route::query() for the HTTP QUERY method, which permits a request body and is treated as a safe method. Route::any() will include QUERY, while CSRF middleware will classify it with GET, HEAD, and OPTIONS as a read request. Vazha Aptsiauri contributed this work in PR #60655. Laravel 13.19 already added Http::query() and the query() and queryJson() testing helpers.
PR #59708 by Will Rowe adds authorize() to the Authorizable contract and trait. A user can call $user->authorize('viewAny', Post::class), which behaves like $user->can() and throws AuthorizationException when authorization fails.
Caleb White’s PR #60767 adds an optional context array to the report() helper and to the exception handler’s report() method. Code can attach values such as order_id while reporting an exception. The ExceptionHandler contract now uses report(Throwable $e, array $context = []), so custom handlers that override the method must accept the new argument.
PR #61378 adds Storage::fake('ondemand') support for on-demand disks. The fake intercepts Storage::build() and enables the same assertions used with named disks. The change was sent to the Laravel 14 branch because an application may already have a disk called ondemand.
PR #61395 consolidates whereKey() and whereKeyNot() and introduces orWhereKey() and orWhereKeyNot(). PR #61496 allows all four methods to receive a subquery.
Several behavior changes require upgrade checks. Queue::pause(), Queue::pauseFor(), resume(), and isPaused() will take the queue name first. The connection becomes an optional second argument, defaulting to the configured connection. Laravel 13.25 introduced pausing all queues, and PR #61076 changes the per-queue signatures from forms such as Queue::pause('redis', 'emails') to Queue::pause('emails') or Queue::pause('emails', 'redis').
The lazy() and chunk() methods will stop mutating the query builder while paginating. PRs #61411 and #61428 fix a Laravel 13 behavior in which reusing a builder after lazy() could make a later count() return 0. Laravel 14 will preserve the full row count.
PR #61577 changes Builder::findOr() for arrays of IDs. With User::findOr([1, 99], fn () => 'fallback'), Laravel 13 returned a collection containing user 1 and skipped the callback. Laravel 14 will call the callback when an ID is missing, matching findOrFail() and relationship variants.
PR #61466 fixes array handling in Cache::has() and Cache::forget(). Although their docblocks have accepted arrays for four years, has(['a', 'b']) returned true without checking every key, and forget() did not remove the keys. Laravel 14 will make has() true only when every key exists. forget() will remove every supplied key and return true only when all removals succeed. The old Redis path could emit an Array to string conversion warning.
PR #61425 aligns MassPrunable with Prunable for soft-deleted models. A model using MassPrunable and SoftDeletes will have all matching rows, including soft-deleted rows, selected for force deletion by model:prune. Applications that need the Laravel 13 behavior must add withoutTrashed() to prunable().
The PHP minimum rises from Laravel 13’s PHP 8.3 to PHP 8.4 through PR #59104, because Symfony 8 requires PHP 8.4. Other planned dependency changes include an ably/ably-php version using Ably protocol 2.0 through PR #60860, orchestra/testbench-core at ^12.0, and support for PHPUnit 11.5, 12.5, and 13.
Laravel follows an annual major-release cycle around the first quarter. Laravel 11 supports PHP 8.2 through 8.4, was released on March 12, 2024, received bug fixes until September 3, 2025, and receives security fixes until March 12, 2026. Laravel 12 supports PHP 8.2 through 8.5, was released on February 24, 2025, ended bug-fix support on August 13, 2026, and receives security fixes until February 24, 2027.
Laravel 13 supports PHP 8.3 through 8.5 and was released on March 17, 2026. Its bug-fix period runs through Q3 2027, with security fixes through March 17, 2028. Laravel 14 is listed with PHP 8.4+, a Q1 2027 release target, bug fixes through Q3 2028, and security fixes through Q1 2029. The official documentation does not yet list Laravel 14.
Laravel Shift can automate the future upgrade by opening a pull request composed of atomic commits for review.




Comments
No comments yet — be the first.
Open the discussion
No account or password needed — just enter your e-mail and we’ll send you a one-time sign-in link. First time here? You’re set up automatically.
Your rating will be applied automatically after you sign in.
Check your inbox
We’ve sent a sign-in link to …. Open it on this device — this tab will sign you in automatically.
Nothing arrived? Check your spam folder — and mark the mail as "Not spam" so it lands in your inbox next time.