This page is a companion to Laravel Package Development. For Laravel/PHP compatibility strategy, read Package Version Compatibility Management.
How to write CHANGELOG.md
Your changelog is the primary source users read to understand what changed in each release. Use Keep a Changelog so your categories stay consistent across versions.
Baseline rules
- Use
## [x.y.z] - YYYY-MM-DDfor version headers - Use
Added / Changed / Deprecated / Removed / Fixed / Security - Add compare links at the bottom so users can inspect diffs
- Keep upcoming work in
## [Unreleased]
Semantic Versioning (SemVer)
Semantic Versioning usesMAJOR.MINOR.PATCH:
- MAJOR: backward-incompatible changes
- MINOR: backward-compatible feature additions
- PATCH: backward-compatible bug fixes
Laravel package examples
For Laravel 13 support, classification depends on your actual compatibility policy.| Change | Recommended bump |
|---|---|
Keep Laravel 12 support and add ^13.0 | MINOR |
Drop Laravel 11/12 support and require only ^13.0 | MAJOR |
| Fix a Laravel-13-specific bug | PATCH |
Git tags and GitHub Releases
Start by creating and pushing a version tag.v2.1.0, and publish. Copy the ## [2.1.0] section from CHANGELOG.md as release notes.
Automate releases with GitHub Actions
Use thepush: tags: trigger to publish releases from tags. With softprops/action-gh-release, you can automate GitHub Release creation after tests pass.
Keep
needs: test on the release job so failed tests block publication. This gate is critical in both manual and automated release flows.Handling breaking changes
Ship breaking changes in phases. Deprecate first, remove in the next MAJOR version, and provide migration instructions.1. Mark deprecated APIs in code
2. Document migration guidance
Document actionable steps inUPGRADE.md or a dedicated migration page.
3. Keep major-to-major migration notes
When you cut a MAJOR release, cross-link changelogRemoved entries and migration docs. Users can quickly see both what changed and how to update.
Related pages
Laravel Package Development
Review implementation fundamentals centered on service providers.
Package Version Compatibility Management
Organize your compatibility decisions for Laravel/PHP and SemVer.
Testing Laravel packages with Orchestra Testbench
Learn the test strategy you should run before every release.