ibrows/php-airbrake-bundle
A Symfony bundle that integrates the Airbrake PHP client, helping you send application exceptions and errors to Airbrake for monitoring, tracking, and reporting.
Architecture fit — category mismatch. Despite the "Laravel/PHP package" framing, ibrows/php-airbrake-bundle is a Symfony bundle, not a Laravel package. It ships a Bundle subclass, a DependencyInjection extension, and a kernel.exception event listener. Laravel has no bundle registrar, and while it composes Symfony components, Laravel 9–11 pins Symfony 5/6/7 while this bundle targets the Symfony 2.3–2.8 era. There is no autoloadable integration path into a modern Laravel application; the listener also relies on ExceptionEvent::getException(), removed in Symfony 4.x. A TPM should treat this as a legacy Symfony artifact and evaluate it as such — never as a candidate dependency for a Laravel service.
Integration feasibility — low. The only reusable asset is the underlying notifier (ibrows/php-airbrake), an HTTP client that POSTs to Airbrake's deprecated legacy API. Consuming it for Laravel means forking: replace the DI extension with a service provider, replace YAML config with config/airbrake.php, and replace the kernel listener with a hook into Laravel's exception handler (withExceptions(...->report(...)) on Laravel 11+, or Handler::report() on older). Realistic spike-to-usable estimate: 3–5 engineering days before any error data lands, before test hardening.
Technical risk — high.
| Risk | Severity | Note |
|---|---|---|
| Abandoned upstream | High | 0 stars / 0 dependents / score 0 — no maintainer, no triage |
| Legacy Airbrake API | High | Old key-based endpoints deprecated; ingestion can fail silently |
| PHP/Symfony version floor | High | Likely incompatible with PHP 8.x and Symfony 5+ |
| Security review | Medium | Unvetted transitive deps sitting in the request path |
| PII exposure | Medium | Legacy notifiers commonly ship params/headers unfiltered |
Key questions to resolve before any build:
Stack fit — recommend substitution. If Airbrake is required, the correct vehicle is airbrake/phpbrake (official, maintained, PHP 7.4/8.x) wired through a small service provider plus a Monolog handler — not this bundle. If Airbrake is not required, sentry/sentry-laravel or bugsnag/bugsnag-laravel delivers the same outcome with first-class Laravel support, Laravel-versioned releases, and an active security posture. The integration layer here is commodity; the decision worth making is which error backend the organization standardizes on.
Migration path (if Airbrake is mandated):
App\Providers\AirbrakeServiceProvider.Authorization, Cookie, session IDs, and query strings before transmission.Compatibility gates: verify PHP constraint against the runtime matrix; confirm the notifier speaks the current Airbrake notices API against a staging project key; confirm no dependency on Symfony 2 event names or ContainerAware.
Sequencing: discovery and account verification (1 day) → staging spike with the maintained notifier (1–2 days) → error-volume and cost sanity check → production rollout with sampling and dedupe → delete any bundle-derived code. Keep this a small, timeboxed ticket; it should not outrank higher-leverage reliability work.
Maintenance. Effectively unowned upstream: no fixes, no CVE response, no PHP 8 guarantees. A fork costs 1–2 days per quarter minimum to track Laravel/Symfony upgrades, plus unbounded incident time if ingestion breaks. The maintained notifier reduces this to dependency-bump hygiene.
Support. Zero stars and zero dependents means no corpus — no Stack Overflow answers, no issue history, no peer operators. Mean time to diagnosis is entirely internal, and Airbrake support will not troubleshoot a third-party fork. Budget tribal-knowledge capture as a deliverable, not an afterthought.
Scaling. Error reporting is bursty and correlated with incidents — precisely when the app can least absorb overhead. Legacy synchronous curl notifiers sit on the request path, adding tens to hundreds of milliseconds and cascading during an outage. Requirements: async/queued dispatch, per-window sampling, rate limiting, hard client timeout, and a guarantee the notifier never throws into application code.
Failure modes to design against:
terminate.Ramp-up. Conceptually trivial for any Laravel engineer — a provider plus an exception hook is half a day to read and a day to harden. The risk is context, not skill: near-zero documentation value from the package itself and no internal precedent. Given 0 stars and 0 dependents, assume you would be the only team running this code in production anywhere — staff accordingly, or spend the saved days on observability that actually pages someone.
How can I help you explore Laravel packages today?