toshy/maintenance-bundle
A PHP maintenance-mode bundle that lets you temporarily disable your application, display a maintenance page, and configure bypass access for admins or authorized users during deployments and updates.
Framing note for this assessment: despite being scoped as a "Laravel/PHP package," toshy/maintenance-bundle is a Symfony2 bundle, not a Laravel package. It cannot be installed into a Laravel application. The repository name (LexikMaintenanceBundle) and the description indicate it is a repackaging or fork of the well-known lexik/maintenance-bundle. That mismatch is itself the most important product finding here: it informs stack-fit due diligence, not a feature decision.
The capability it represents — maintenance mode with a 503 response and an IP allowlist — supports these decisions:
php artisan down / up with --secret (bypass token), --render (custom maintenance view), and --allow/--except (IP/method allowlisting) in current versions. The "buy" option is the framework you already pay for. This package adds no decision value to a Laravel roadmap.Adoption criteria — all must hold:
lexik/maintenance-bundle (upstream) respectively.Look elsewhere when:
php artisan down --secret=... --allow=.... Zero dependencies, tested with the framework, no supply-chain surface.lexik/maintenance-bundle is the maintained path for modern Symfony.To executives (one paragraph): A vendor package was proposed for putting the site into maintenance mode. On review, it is a small, unmaintained Symfony2 add-on — the wrong framework for our Laravel stack, with no adoption, no dependents, and a codebase that duplicates a well-known open-source bundle. We do not need it. The capability is already built into Laravel and is a config flag away, so the recommended decision is do not adopt; the only spend is a few hours of engineering to wire allowlisting and a branded maintenance page into the existing deploy pipeline. This avoids adding an unsupported dependency to our supply chain for something we already own.
To engineering: No new dependency. Implement maintenance mode using framework-native commands (down/up with secret bypass and IP allow), wrap it in the release runbook so on-call can toggle it in one step, and confirm we return a genuine HTTP 503 with Retry-After so load balancers and crawlers behave correctly. If any legacy Symfony2 service remains in the estate, treat it as a modernization backlog item rather than a reason to vendor an unmaintained bundle — and if a Symfony maintenance bundle is ever genuinely required, use the upstream lexik/maintenance-bundle, not this fork.
Bottom line: the problem is real and worth solving this quarter; this package is not the solution. The correct answer is a two-hour configuration task on tooling we already maintain.
How can I help you explore Laravel packages today?