Know your support window.

Laravel provides 18 months of bug fixes and two years of security fixes for major framework releases. Laravel 12 receives security fixes until February 24, 2027; Laravel 13 until March 17, 2028. The published compatibility table lists PHP through 8.5. That is not a promise of PHP 9 support.

Laravel's support policy and version table ↗

Check the edges of the framework.

Look for nullable arguments in your services, old Serializable implementations in packages, false-returning APIs that feed collections, and interpolation in mail templates. Eloquent uses magic accessors; do not treat every model attribute as an undeclared-property bug. Use Larastan with PHPStan so analysis understands the framework.

Blade is PHP too.

Pass view data explicitly. Check optional values before rendering them, rather than relying on undefined variables to become null. Compile and exercise your views during tests. Search Blade files for the old interpolation syntax, and test the PHP expressions you put inside directives.

Give Livewire properties a starting value.

Initialize component state and type nullable properties explicitly. Test initial renders, validation failures and action requests. Livewire doesn't make a warning in your PHP code harmless. Keep Livewire and its dependencies on versions compatible with your supported PHP runtime.

Upgrade without losing the app.

Follow Laravel's version-by-version upgrade guides, run your application tests, and check queues and scheduled work on the new runtime. Start with the 8.x readiness checklist.

If you'd rather hand this to someone: Agency Intentional upgrades Laravel apps.