kiora/health-check-bundle
A health check bundle for Symfony/PHP applications that exposes a monitoring endpoint and runs configurable checks to report service status, helping integrate with load balancers, uptime monitors, and container probes.
/ping (liveness) and /ready (readiness) endpoints, which maps cleanly onto Kubernetes probe semantics and load-balancer health checks. The decision shifts from "can we get any signal" to "do we gate traffic on readiness or liveness" — a question you can now answer with the package rather than around it./ready endpoint plus health-check groups means you can express partial readiness (e.g., "DB is up but a downstream dependency is degraded"). That is the difference between a deploy gate you can trust during canary and a boolean that flaps. Choose the grouping taxonomy deliberately now, because it becomes the contract your rollout tooling depends on.SECURITY.md, CONTRIBUTING, CODE_OF_CONDUCT, CI workflows, and PHPStan level 9 moves this from "no hygiene signal" to "some hygiene signal." That is still a long way from SBOM or signed releases, but it changes the conversation in a vendor review from "why is this here" to "what's the maintenance plan."Consider it only if all of the following hold:
/ping and /ready are exactly the shapes Kubernetes and most load balancers expect, which removes the "write the routing yourself" step.Look elsewhere when:
spatie/laravel-health, or ohdearapp/health-check. This release does not narrow that gap; it widens the feature gap and therefore the temptation to port, which is a cost, not a benefit.SECURITY.md is a disclosure policy, not an audit./ping and /ready are additional unauthenticated-by-default surfaces; confirm both can be bound to an internal listener or gated by auth before rollout.To executives: This release materially improves a small, MIT-licensed infrastructure component: it now provides standard liveness and readiness probes, grouped and multi-database checks, and per-check timing, with CI and static analysis at PHPStan level 9. That is real engineering maturity for a project this young. What has not changed is adoption — still a single maintainer and effectively no dependent base — so it remains unsuitable as a dependency of record. Recommendation: extend the timeboxed spike to two days to evaluate the new probe and grouping features, keep it behind an internal HealthCheck interface, and hold the default of a native implementation unless the spike shows savings that survive a port.
To engineering: The new /ping and /ready endpoints, health-check groups, and multi-connection DB support are precisely the features you would otherwise hand-roll, and the in-memory cache fix removes a real correctness bug (double-executed checks) you would likely have reproduced. The performance stats are a cheap latency signal worth wiring into dashboards. Constraints are unchanged: Symfony packaging in a Laravel codebase, one maintainer, no community validation. The new CI and SECURITY.md reduce — but do not eliminate — the "abandoned in six months" risk. Mitigations stay the same and stay cheap: pin, vendor, wrap behind an interface, keep an in-house fallback.
Bottom line: Still do not adopt as-is for a Laravel stack. The release upgrades this from "reference implementation" to "credible reference implementation with a port cost worth measuring" — validate in a two-day spike, plan to replace, and only port the grouping and probe-routing ideas if the spike justifies it.
How can I help you explore Laravel packages today?