CakePHP 5.3.0 released
The CakePHP core team is happy to announce the release of CakePHP 5.3.0. With the release of 5.3.0, we're ending bugfix support for CakePHP 5.2. Both 5.1 and 5.2 continue to receive security updates until the release of 5.4.0 or 6.0.0. It is also the end of support for bugfixes for CakePHP 4.x. The core team will continue to provide security updates for CakePHP throughout 2026.
What's new in 5.3.0
Some highlights of the 5.3.0 release include:
- Added Redis Cluster support to
RedisEngine. Configure theclusteroption with an array of server addresses to enable cluster mode. - Several events were added to the Cache package to allow monitoring the caching behavior.
cake plugin assets symlinkcommand now supports a--relativeoption to create relative path symlinks. This is useful when creating symlinks within containers that use volume mounts.cake servernow supports a--frankenphpoption that will start the development server with FrankenPHP.- Added Console
TreeHelperwhich outputs an array as a tree such as an array of filesystem directories as array keys and files as lists under each directory. - Added the ability to group commands in console help output.
- New DI container support for the
#[Configure]attribute have data injected fromConfigure, and theTableContainerdelegate that lets you inject ORM Tables into your services. - Added support for additional column types in MySQL, and Postgres bringing CakePHP's database type support close to parity with phinx. Queries can also define optimizer hints for engine specific optimizations.
- The new
RateLimitMiddlewareprovides configurable rate limiting for your application to protect against abuse and ensure fair usage of resources. It supports multiple identification strategies (IP, user, route, API key), different rate limiting algorithms (sliding window, fixed window, token bucket), and advanced features like custom identifiers, request costs, and dynamic limits. - Added
DateTimePeriodwhich wraps a PHPDatePeriodand returnsDateTimeinstances when iterating. - Added
SelectQuery::projectAs()for projecting query results into lightweight Data Transfer Objects (DTOs) for read-only data access. - Added new fluent builders for defining the
sortableFieldsdata of your pagination operations. The new builders allow you to define complex sorting for both virtual and real fields, with multi-column and pinned sorting support. - Additional assertions for redirect responses in integration tests.
The migration guide has a complete list of what's new in 5.3.0. We recommend you give that page a read when upgrading as it notes the behavior changes present in 5.3.0.
Contributors to 5.3.0
Thank you to all the contributors that have contributed to 5.3.0:
- ADmad
- Alberto G. Rodriguez
- Christian
- Corey Taylor
- Gerson Felipe Schwinn
- Jamison Bryant
- Jasper Smet
- Joris Vaesen
- Juhani Aronen
- Kevin Pfeifer
- Lauri Tunnela
- Marcelo Rocha
- Mark Scherer
- Mark Story
- Murl080
- Nicos Panayides
- othercorey
- scribblemaniac
- Steve
- Umer Salman
- Val Bancer
As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests.