The official Laravel upgrade guide estimates that upgrading from Laravel 12 to 13 takes approximately 10 minutes . This is the baseline time for updating dependencies and running the standard upgrade steps, assuming your application does not rely heavily on deprecated or changed framework behavior.
What the 10-Minute Estimate Covers?
The "10 minutes" figure primarily covers the mechanical parts of the upgrade. According to the official guide, the high-impact changes you must address include updating dependencies in your composer.json file :
{
"require": {
"laravel/framework": "^13.0",
"laravel/tinker": "^3.0"
},
"require-dev": {
"phpunit/phpunit": "^12.0",
"pestphp/pest": "^4.0"
}
}
After updating the dependencies, you would run composer update, clear your caches, and run your test suite. For a straightforward application, this process can indeed be completed in a few minutes.
Real-World Time Can Vary
The official estimate is a lower bound. A developer who upgraded a real production application (approximately 45,000 lines of PHP with Livewire, Inertia, and Spatie packages) reported a total time of 23 minutes . The extra time was spent on a "config audit"—reviewing the application is configuration files and code for any usage of features that changed in Laravel 13.
The actual time will depend on your application is complexity. You may need additional time if your code uses any of the behaviors that changed, such as:
Cache serialization: If your app stores PHP objects in the cache, you now need to explicitly allow-list the classes that can be unserialized in config/cache.php.
Middleware references: The CSRF middleware was renamed from VerifyCsrfToken to PreventRequestForgery. If you reference the old class name in your tests or route definitions, you will need to update those references.
Custom implementations: If you maintain custom implementations of framework contracts (like a custom cache store or queue driver), you may need to add new methods required by Laravel 13.