Every *minor* release of PHP comes with a limited number of changes that are technically considered breaking changes or backwards incompatible. These include new classes or functions, changing the behavior of existing functions in edge cases, and the addition of new errors.

New minor releases of PHP libraries also frequently contain breaking changes, though unintentionally; adding a new class to a library might conflict with an existing class in user code.

In this talk, Daniel will explore how to identify potentially breaking changes, review the unwieldy ways to reduce breakage, and end with a presentation of a semver-adjacent versioning policy that reflects semver practices while accounting for the realities of PHP as a language and its ecosystem.

You'll leave with a clearer understanding of compatibility pitfalls in PHP, how PHP redefines breaking changes, and how to version your own packages more responsibly.

Comments

Please login to leave a comment

Joe Ferguson at 14:02 on 21 May 2026

Great examples on how to identify breaking changes and how to avoid common issues.

An informative talk which taught me that Daniel can write code that can break anything, even upstream code that “should” be backwards compatible.

One topic that wasn’t covered as much as I was hoping was, as a maintainer how do I avoid making backwards-incompatible changes? Are there any tips and tricks to that? As an open-source maintainer (tho not the PHP core) I would love to know.