heypongo / laravel-deprecation-middleware
A Laravel middleware to signal HTTP route deprecation (Deprecation, Sunset, Link headers)
1.0.0
2025-07-11 12:40 UTC
Requires
- php: >=8.1
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.20
- orchestra/testbench: ^8.36
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2025-07-12 10:53:17 UTC
README
A Laravel middleware to signal HTTP route deprecation using standardized HTTP headers (Deprecation RFC 8594, Sunset RFC 8594, Link RFC 8288).
Features
- Adds
Deprecation
header to deprecated routes - Optionally adds
Link
header with documentation URL - Optionally adds
Sunset
header for planned removal - Follows HTTP standards for deprecation signaling
Requirements
- PHP 8.1 or higher
- Laravel 10 or 11
Installation
composer require heypongo/laravel-deprecation-middleware
The service provider is auto-discovered by Laravel. No manual registration is required.
Usage
Apply the middleware to your routes in routes/web.php
or routes/api.php
:
Route::get('/old-endpoint', function () { // ... })->middleware('deprecated');
With Parameters
You can specify deprecation date, documentation URL, and sunset date:
// Only deprecation date Route::get('/old', fn() => ...)->middleware('deprecated:2024-06-01T00:00:00Z'); // Deprecation date and documentation URL Route::get('/old', fn() => ...)->middleware('deprecated:2024-06-01T00:00:00Z,https://docs.example.com/deprecation'); // Deprecation date, documentation URL, and sunset date Route::get('/old', fn() => ...)->middleware('deprecated:2024-06-01T00:00:00Z,https://docs.example.com/deprecation,2024-12-01T00:00:00Z'); // Only documentation URL and sunset date Route::get('/old', fn() => ...)->middleware('deprecated,,https://docs.example.com/deprecation,2024-12-01T00:00:00Z');
Parameter Order
- Deprecation date (HTTP-date or timestamp, optional)
- Documentation URL (optional)
- Sunset date (HTTP-date, optional)
Example Response Headers
Deprecation: Wed, 01 Jun 2024 00:00:00 GMT
Link: <https://docs.example.com/deprecation>; rel="deprecation"; type="text/html"
Sunset: Sun, 01 Dec 2024 00:00:00 GMT
Logging
- If the sunset date is invalid or before the deprecation date, a warning is logged using Laravel's logger.
Testing
You are encouraged to add tests using PHPUnit and Laravel's testing tools.
Running Tests
Install dev dependencies:
composer install
Run the tests:
vendor/bin/phpunit
License
MIT License. See LICENCE.