roave/backward-compatibility-check
Checks your PHP library for backward compatibility breaks between git tags/versions. Designed for CI: compares the last SemVer tag to current HEAD, reports API breaks, and exits non-zero on failure. Install via Composer or run in Docker.
Strengths:
laravel/framework).composer.json autoload paths, requiring no additional configuration for most projects..roave-backward-compatibility-check.xml, useful for Laravel’s evolving APIs (e.g., deprecations in Illuminate\Support\Facades).Gaps:
__callStatic). May flag false positives for Laravel’s magic methods (e.g., Facade::__callStatic).protected → private in abstract classes, which Laravel often uses).laravel/framework) or official packages (e.g., laravel/valet, laravel/horizon) where BC is critical.composer.json autoload).nyholm/roave-bc-check-ga), reducing ramp-up time.phpunit tests in laravel/framework).nikic/php-parser (v5.4+), which is stable but may introduce parsing quirks for Laravel’s dynamic code (e.g., __call, __get).Route::get() → Route::post())?Illuminate\Support\Traits (e.g., HasFactory)?database/migrations) for BC risks?laravel/framework) in CI?Str::camel() → Str::camelCase())?laravel/scout, laravel/fortify)?pre-push or pre-release hook for local validation.laravel/framework)
tests/BC/).laravel/valet, laravel/horizon, etc., with package-specific rules..roave-backward-compatibility-check.xml for Laravel projects.Illuminate\Contracts changes).__call, __get) may trigger false positives. Mitigate via:
.roave-backward-compatibility-check.xml.composer test:bc).push to main/develop branches (GitHub Actions example provided).--format=markdown).laravel/framework) may slow CI pipelines.vendor/).__call) may trigger unnecessary failures.laravel-shift/database.fetch-depth: 0 in CI (as documented).composer.json (--dev).fetch-depth: 0.How can I help you explore Laravel packages today?