mainlycode/health-bundle
Health Bundle adds configurable health-check endpoints to PHP applications, letting monitoring tools verify application, database, cache, and dependency status through simple, extensible checks.
Architecture fit — the headline finding: this is a Symfony bundle, not a Laravel package. The request frames it as a Laravel/PHP candidate, but a Symfony bundle depends on Symfony's Kernel, Bundle extension classes, DependencyInjection config trees, and bundle registration in config/bundles.php. Laravel shares Symfony components (HttpFoundation, Routing, Console) but has no bundle loader, no bundle extension contract, and a different container bootstrapping model. composer require will succeed; nothing will register a route. Fit for a Laravel codebase is effectively zero without writing an adapter — at which point you have written the feature yourself and inherited a dependency for free.
Integration feasibility: Trivial to reimplement, non-trivial to port. A /health endpoint is a route plus a controller returning {"status":"ok"} with a 200/503 decision. Laravel 11+ ships this natively (withRouting(health: '/up')). For dependency-aware checks, spatie/laravel-health is the mature, widely-adopted option. There is no capability in this bundle that justifies an adapter layer.
Technical risk:
Key questions for the maintainer / sponsor:
Recommendation: Do not adopt for Laravel. Build a ~20-line internal route, or use the framework native route, or adopt spatie/laravel-health if you need dependency probes. If a Symfony service exists, time-box a spike there — but even then, this is a small, unadopted package and the same build-vs-buy math applies.
Stack fit: Poor for Laravel. Good-to-neutral for Symfony. The two must be evaluated separately; conflating them is the trap in the original framing.
Migration path (Laravel): Do not migrate — substitute. Sequence: (1) confirm target framework version; (2) if Laravel 11+, enable the native health route; (3) if deeper checks are required, add spatie/laravel-health and configure checks explicitly; (4) only consider a third-party bundle if it clears a security review and we are on Symfony.
Compatibility: PHP version and Symfony major-version constraints are the real gate. A bundle pinned to a specific Symfony LTS line will not travel across major versions. No Laravel compatibility statement exists, and none should be assumed. Framework-native alternatives carry no cross-framework constraint at all — a decisive advantage.
Sequencing:
Maintenance: With zero dependents and one maintainer signal, plan for full ownership. Budget for vendoring or forking if adopted. On the Laravel side, the native route carries zero incremental maintenance; Spatie carries community maintenance; this bundle carries yours.
Support: No community, no third-party documentation, no Stack Overflow corpus. Escalation path is reading the source. That is acceptable only for code small enough to read in ten minutes — which is also an argument that it is small enough to have written.
Scaling: Health endpoints are deceptively high-QPS. Kubernetes liveness/readiness probes across N pods at short intervals produce steady, bursty traffic. Requirements: the endpoint must be cheap, must not query the database on every liveness probe, must be excluded from APM tracing and access-log noise, and must not sit behind rate limiting that produces false negatives. The design question is whether dependency health belongs in liveness (no) or readiness (yes, with timeouts). If the bundle blocks on shared dependencies for liveness, it is architecturally wrong regardless of quality.
Failure modes to design against:
Ramp-up: Near zero for a competent PHP developer either way. This is precisely why the adoption case fails — the learning cost saved is minutes, while the supply-chain and ownership costs are unbounded. The correct call is to spend the twenty minutes.
Bottom line: Low score, zero adoption, wrong framework. Close as "reject for Laravel — build native," and reopen only as a scoped Symfony question if the estate inventory justifies it.
How can I help you explore Laravel packages today?