xrow/healthcheck-bundle
A Symfony bundle that adds health check endpoints to your application so load balancers and uptime monitors can verify that services such as the database, cache, and filesystem are responding correctly.
Framework mismatch is the headline issue. Despite the package description referencing "websites," xrow/healthcheck-bundle is a Symfony bundle built for Ibexa DXP (formerly eZ Platform), not a Laravel package. Laravel's service container derives from Symfony components, but Laravel does not consume Symfony Bundles — bundles require a Symfony Kernel, the Bundle base class registration in config/bundles.php, and Ibexa's own dependency injection conventions. Dropping this into a Laravel application is not supported and would require a compatibility shim (a Laravel service provider that manually wires the bundle's services), which is a bespoke integration with no upstream guarantee.
Architecture fit — poor for a Laravel stack. The bundle is designed to expose health/readiness signals for Ibexa DXP deployments: typically HTTP endpoints reporting on database connectivity, cache/Redis, search index (Solr/Elasticsearch via Ibexa's search layer), and filesystem/vardir writability. Those checks are tightly coupled to Ibexa services and configuration. In a Laravel app you would be integrating a bundle whose assumptions (Ibexa repositories, ibexa.* service IDs, legacy ezpublish config) simply don't exist. You'd get the endpoint scaffolding but almost none of the useful checks without rewriting them.
Integration feasibility — low as-is, moderate as reference. The realistic use is as a design reference: study how the bundle structures liveness vs. readiness probes, how it returns status codes and payloads, and replicate that pattern using Laravel-native tooling (spatie/laravel-health, Laravel's built-in /up route, or a custom controller). Direct adoption into a Laravel codebase is not recommended.
Technical risk — high, driven by unknown maturity.
composer.json constraints, assume tight coupling to PHP and Symfony versions aligned with Ibexa, not your Laravel version.Key questions to resolve before any decision:
composer.json PHP/Symfony/Ibexa constraints, and do they intersect our runtime?Stack fit. If the target is genuinely Ibexa DXP, fit is native and the integration is conventional: require via Composer, enable the bundle in config/bundles.php, import its routing, and configure via the Ibexa/Symfony config tree. If the target is Laravel — which the package framing implies — fit is not supported and should be treated as a port, not an install.
Recommended path for a Laravel estate. Do not vendor this bundle. Instead:
spatie/laravel-health or a small custom controller) modeled on the same liveness/readiness split.Compatibility. Verify against our pinned PHP version and, for Laravel, ignore Symfony-bundle compatibility entirely — it is not the relevant axis. For Ibexa, confirm the bundle's supported DXP major matches the deployment and that its transitive dependencies don't force a Symfony upgrade we're unwilling to take.
Sequencing (if pursuing either path):
composer.json, README, CHANGELOG, and open issues; confirm maintenance status and license. Timebox to a few hours.Maintenance. For an Ibexa deployment, maintenance burden is low but outsourced to an unproven maintainer — the real cost is the risk of an unmaintained bundle drifting out of compatibility with DXP upgrades. For Laravel, maintenance burden shifts entirely in-house: a shim/port becomes our code, and we own it. Budget ongoing ownership either way.
Support. No community to lean on — zero dependents means no field-tested issue corpus. Support effectively equals the vendor relationship with xrow. Escalation paths should be confirmed contractually before production reliance.
Scaling. Health endpoints are cheap (a few dependency pings per probe interval) and scale trivially. The scaling concern is probe traffic volume: aggressive readiness intervals across many pods can hammer the database or search cluster the checks are probing. Mitigate with caching of check results and sensible periodSeconds/timeoutSeconds. Note that deep readiness checks that hit the DB can turn a slow database into a cascading pod-restart storm — prefer shallow liveness and moderate readiness.
Failure modes to design for:
Ramp-up. For a team already fluent in Symfony/Ibexa, near-zero — it's a standard bundle install. For a Laravel team, the ramp-up is negative value: time spent learning Ibexa's DI and service IDs to salvage checks is better spent writing the equivalent Laravel health controller in an afternoon. Estimate a half-day for the pattern-reference approach versus multiple days for a faithful port, with the port yielding lower long-term value than a native implementation.
How can I help you explore Laravel packages today?