Skip to content

Laravel 13.x Shift#578

Open
thekevinm wants to merge 7 commits intoshift-173252from
shift-173254
Open

Laravel 13.x Shift#578
thekevinm wants to merge 7 commits intoshift-173252from
shift-173254

Conversation

@thekevinm
Copy link
Copy Markdown
Contributor

This pull request includes the changes for upgrading to Laravel 13.x. Feel free to commit any additional changes to the shift-173254 branch.

Before merging, you need to:

  • Checkout the shift-173254 branch
  • Review all pull request comments for additional changes
  • Run composer update (if the scripts fail, try with --no-scripts)
  • Clear any config, route, or view cache
  • Thoroughly test your application (no tests?, no CI?)

If you get stuck, never hesitate to email support. If you need more help with your upgrade, check out the Human Shifts.

In an effort to make upgrading the constantly changing config files easier, Shift defaulted them and merged your true customizations - where ENV variables may not be used.
@thekevinm
Copy link
Copy Markdown
Contributor Author

⚠️ Shift upgraded your configuration files by defaulting them and merging your true customizations. These include values which are not changeable through core ENV variables.

You should review this commit for additional customizations or opportunities to use new ENV variables. If you have a lot of customizations, you may undo this commit with git revert 146b2f09 and make the config file changes manually.

@thekevinm
Copy link
Copy Markdown
Contributor Author

⚠️ The default values for CACHE_PREFIX, REDIS_PREFIX, and SESSION_COOKIE changed in Laravel 13. If you are not setting these values explicitly, this change could cause cache or session invalidation after upgrading. As these defaults have changed a few times in recent Laravel versions, Shift recommends explicitly setting these ENV variables in your environment to ensure consistent behavior when upgrading.

 ✨ Automate more with AI...

Shift automates the changes it determines are reliable. If you want to push this automation further, you may paste the following prompt into your AI of choice:

I'm upgrading to Laravel 13. The default values for `CACHE_PREFIX`,
`REDIS_PREFIX`, and `SESSION_COOKIE` have changed. In Laravel 12 and earlier,
these were derived from `APP_NAME` using `Str::slug(env('APP_NAME', 'laravel'),
'_')` as a base (e.g. `myapp_cache_`, `myapp_database_`, `myapp_session`).
Please check my config files and `.env` to determine if these are explicitly set
or relying on the old defaults. If relying on defaults, suggest the explicit
values I should add to my `.env` to preserve the previous behavior.

@thekevinm
Copy link
Copy Markdown
Contributor Author

⚠️ The default cache configuration now includes a serializable_classes option set to false. This hardens cache unserialization behavior to help prevent PHP deserialization attacks. If your application stores PHP objects in cache, you should update this value to an array of the classes that may be unserialized.

 ✨ Automate more with AI...

Shift automates the changes it determines are reliable. If you want to push this automation further, you may paste the following prompt into your AI of choice:

I'm upgrading to Laravel 13. The default cache configuration now includes a
`serializable_classes` option set to `false` to prevent PHP deserialization
attacks. Please search my codebase for any code that stores PHP objects in the
cache (e.g. using `Cache::put()`, `cache()`, or `remember()` with object
values). If found, identify the classes being cached and suggest the explicit
list of classes I should set for the `serializable_classes` option in
`config/cache.php`.

@thekevinm
Copy link
Copy Markdown
Contributor Author

ℹ️ Shift updated your dependencies for Laravel 13. While many of the popular packages are reviewed, you may have to update additional packages in order for your application to be compatible with Laravel 13. Watch dealing with dependencies for tips on handling any Composer issues.

The following dependencies were not updated by Shift and may be incompatible. If Composer lists one of these packages as a problem, you should check for a newer version.

@thekevinm
Copy link
Copy Markdown
Contributor Author

ℹ️ Laravel 13 changed the password reset mail subject from "Reset Password Notification" to "Reset your password". If your application relied on the previous subject, for example in custom translation messages, you should update them accordingly.

@thekevinm
Copy link
Copy Markdown
Contributor Author

ℹ️ Shift detected you are running PHPUnit 11. While this is compatible with Laravel, Shift recommends upgrading. Once you have a verified your Laravel upgrade, you may run the PHPUnit 12 Shift for free to upgrade to PHPUnit 12.

@thekevinm
Copy link
Copy Markdown
Contributor Author

🎉 Congratulations, you're now running the latest version of Laravel!

Next, you may optionally run the following Shifts to ensure your application is fully upgraded, adopts the latest Laravel conventions, and easier to maintain in the future:

  • Laravel Fixer automatically updates your code to the latest Laravel conventions.
  • Tests Generator intelligently generates model factories, HTTP Tests, and configuration for your application.
  • CI Generator intelligently generates CI jobs to lint PHP, check code style, and run tests, including Dusk.

You may also use the Shift Workbench to automate common tasks for maintaining your Laravel application.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants