Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk5 min

Laravel 13 Upgrade: What Breaks, What Doesn’t, and What to Check

Laravel 13 is designed to minimize upgrade work, but PHP 8.3, session serialization, cached objects, middleware references, and database calls deserve a targeted audit.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Most Laravel 12 applications should not need a major rewrite to move to Laravel 13, but the upgrade is not automatically a no-op. First confirm every development, CI, and production environment runs PHP 8.3 or newer. Then check dependencies, session and cache serialization, CSRF middleware references, database calls, and any custom framework contracts the application uses.

What changes for a Laravel 13 upgrade?

Laravel 13 was released on March 17, 2026. Laravel describes it as a relatively small upgrade in terms of migration effort, and says most applications may upgrade without changing much application code. That is a general expectation, not a guarantee for a particular project: the official Laravel 13.x upgrade guide lists changes with high, medium, low, and very-low impact, many of which matter only when an application uses the affected behavior.

As an Amazon Associate I earn from qualifying purchases.

Laravel estimates 10 minutes for the 12.x-to-13.0 upgrade guide. That is Laravel’s estimate for following the guide, not a project-specific estimate for resolving package conflicts, adapting custom integrations, or testing an application.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check these potential breakages first

PHP below 8.3 blocks the upgrade

Laravel 13 requires PHP 8.3 or newer; Laravel lists PHP 8.3 through 8.5 as supported. Check the PHP version used locally, by CI, and in production—not just the version shown by a developer’s terminal. Resolve runtime or hosting constraints before changing the framework dependency. See Laravel’s deployment requirements and release notes.

Composer dependencies may conflict

Laravel recommends these constraints where the packages apply: laravel/framework ^13.0, laravel/boost ^2.0, laravel/tinker ^3.0, PHPUnit ^12.0, and Pest ^4.0. Update the project’s constraints in light of its installed packages, then resolve Composer conflicts; the framework version alone does not establish that every third-party dependency supports Laravel 13. If the project uses the Laravel installer, review its upgrade guidance as well.

Copying the new session setting can invalidate active sessions

The Laravel 13 application skeleton defaults session serialization to JSON. If an existing application copies that setting, active sessions are invalidated and users must sign in again. Keeping PHP serialization preserves session continuity. Before adopting JSON, check whether session data contains PHP objects and decide whether the expected re-authentication is acceptable.

Cached PHP objects need an explicit policy

The cache option serializable_classes defaults to false. If the application intentionally stores serialized PHP objects in the cache, identify the classes and explicitly allow-list them, or change the cached payloads to non-object data such as arrays. Do not assume ordinary scalar or array cache values require the same adjustment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Update direct references to the CSRF middleware

The middleware formerly named VerifyCsrfToken is renamed PreventRequestForgery, which also checks request origin using Sec-Fetch-Site. The old names remain deprecated aliases, but direct references should be reviewed—particularly test configuration and route exclusions that name the middleware. Update those references to the new name rather than relying on deprecated aliases indefinitely.

Empty MySQL or MariaDB upsert keys now fail

Laravel throws InvalidArgumentException when an upsert call supplies an empty uniqueBy value. This applies even though MySQL and MariaDB use the table’s primary and unique indexes to detect existing records. Search for calls that pass an empty value and provide an appropriate key instead.

Conditional changes to audit

These changes do not necessarily affect every application. Search for the relevant behavior and assess it in context rather than changing unrelated code pre-emptively.

Area What changed When to investigate
Fallback cache and Redis prefixes; session cookie names Generated defaults change from underscore to hyphen suffixes. When the application relies on framework fallback values rather than its own configuration. Explicit environment configuration can retain the old behavior.
Custom cache stores The cache contract adds a touch method. When the application implements its own cache store.
Other custom contracts New methods may be required for dispatcher, response factory, and MustVerifyEmail implementations. When project code or a dependency implements one of those contracts.
Container::call Nullable class-parameter defaults are respected when no binding exists. When code relied on the previous implicit instance being resolved.
Joined MySQL deletes Generated SQL now includes ORDER BY and LIMIT. When joined deletes use those clauses: MySQL and MariaDB versions before 11.8.1 may raise a QueryException.
Model booting and polymorphic relations Model instantiation during booting and inferred polymorphic pivot names change. When custom model boot logic or polymorphic pivot naming depends on the previous behavior.
Serialized Eloquent collections Relation restoration behavior changes. When queued or otherwise serialized model collections rely on restored relations.
Queue and notification behavior JobAttempted changes its exception property; queued notifications with missing models are also among the documented changes. When listeners or queued notification flows depend on those cases; consult the upgrade guide for the exact behavior.
Scheduling and manager extensions Scheduling registration timing and manager extension callback binding change. When custom scheduling registration or manager extensions rely on the previous timing or binding.
Testing and generated output Test reset behavior for Str factories and Unicode escaping in Js::from change. When tests depend on the old reset behavior or application code depends on the prior escaping output.
PHP 8.5 and pagination views Polyfill helper conflicts and Bootstrap pagination view names are documented changes. When using PHP 8.5 with affected polyfills or Bootstrap pagination views.

For exact details on any of these conditional changes, use the corresponding entry in Laravel’s upgrade guide; the table identifies areas to investigate, not a claim that every application needs a code change.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What does not automatically break?

Laravel does not say every application must rewrite its code or replace every configuration file. Its release notes describe an effort to minimize breaking changes, and several upgrade-guide items are low or very-low impact or apply only when a project depends on an old default or implements a framework contract.

That does not prove a given application is safe. Its actual exposure depends on its PHP environments, dependency graph, configuration, call sites, and custom integrations. Use the impact labels to prioritize the audit, then verify the project’s own use of each affected path.

A practical upgrade sequence

  1. Confirm PHP versions. Check the local development environment, CI jobs, and production runtime against Laravel 13’s PHP 8.3 minimum.
  2. Update Composer constraints and resolve conflicts. Apply Laravel’s recommended package versions where relevant, then verify that the rest of the dependency graph supports the target framework.
  3. Audit the Laravel 13 upgrade guide. Read it from top to bottom and search the codebase for affected APIs and defaults, especially VerifyCsrfToken, empty uniqueBy values, object cache payloads, session serialization, joined deletes, and custom contract implementations.
  4. Compare configuration selectively. Review differences against the Laravel 13 skeleton, but do not copy its JSON session serialization setting without deciding how to handle active sessions and object-valued session data.
  5. Test the application, then stage critical flows. Run the project’s automated test suite and exercise important user and operational flows in a staging environment. Focus tests on the affected behavior rather than treating a successful dependency update as proof of correctness.
  6. Plan ongoing maintenance. Laravel lists bug-fix support for Laravel 13 through Q3 2027 and security-fix support through March 17, 2028, consistent with its current policy of 18 months of bug-fix support and two years of security-fix support. Check the release notes when planning rollout and support.

The upgrade guide says Laravel attempts to document every possible breaking change, while noting that some changes affect only part of the application base. Whether a particular project breaks cannot be determined without checking its dependencies, configuration, integrations, and test results. Laravel also identifies Laravel Shift as a community-maintained service that automates upgrades; it is an optional alternative to handling the migration manually.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.