dbtlr/php-airbrake
PHP Airbrake is a deprecated PHP module for sending error messages to the Airbrake API via custom error and exception handlers. It still works for existing projects, but maintenance is minimal—new projects should use the official airbrake/phpbrake package.
Architecture fit — adapter required, not a drop-in. This is a framework-agnostic PHP library from the PHP 5.3 era, not a Laravel package. It ships no service provider, no facade, no config publishing, no container bindings, and no integration with Laravel's exception pipeline (Illuminate\Contracts\Debug\ExceptionHandler, Handler::report(), $dontReport, or the report() helper). Making it work in Laravel is a small but real piece of custom glue: a ServiceProvider binding a configured notifier singleton, a config file, and a hook in the exception handler. Roughly 1–2 engineer-days. Cheap in isolation, but the same effort buys a maintained notifier — so the glue is not where the value or the risk sits.
Integration feasibility — viable, but the ecosystem signal is poor. MIT license, small readable codebase, and the API surface is narrow (configure endpoint/key/environment, send an exception). 121 stars and 0 dependents on Packagist is the number that matters to a TPM: essentially no Laravel-community validation, no downstream projects acting as involuntary regression testers, and no pattern library to copy from. The 4.265 composite with an opportunity score of 2.81 and maturity limited to "readme, releases" describes a package that exists but is not being carried forward.
Technical risk — the dominant factor. The README opens with "Deprecated" and the maintainer states he hasn't used Airbrake in four years and no longer has the time, energy, or desire to maintain it. Specific exposures:
airbrake/phpbrake.Key questions to resolve before any commitment
sentry/sentry-laravel), Flare, or Bugsnag — all with first-party Laravel packages — not this library versus its official successor.--ignore-platform-reqs?Stack fit. Composer-installable and namespaced, so it will sit alongside a Laravel app without conflict, but it predates modern Laravel conventions and should be treated as a third-party SDK rather than a framework citizen. Expect to own the config, the environment mapping, the filtering of sensitive parameters, and the exception-to-payload translation yourself.
Migration path — this is the recommended framing. A TPM should not "leverage" this package as a foundation. The defensible uses are two:
ErrorReporter interface so the swap later is a one-class change.airbrake/phpbrake (or a strategic alternative), not as something to extend or refactor.Compatibility work to schedule explicitly. Verify the Composer php constraint against your runtime; audit for PHP 8.x deprecations under your error reporting level (which, awkwardly, is the same channel you're instrumenting); confirm TLS/cipher support for the endpoint; and validate the v2 endpoint against a real project key in a non-production environment before writing any integration code.
Sequencing.
Handler::report() hook, $dontReport curation, parameter filtering for credentials and PII, and a Log fallback so a notifier failure never swallows the original exception.Maintenance — community PRs only, and that is the ceiling. No SLA, no release cadence, no security advisory process, no deprecation policy. Anything we need fixed, we fix and carry as a fork or a patch, which converts a dependency into an owned asset. Budget for that explicitly, or don't take the dependency.
Support. Two-hop support problem: Airbrake support will disengage on a third-party notifier, and the maintainer has publicly exited. Every incident becomes internal debugging of unfamiliar 2018-era HTTP code during an outage — the worst possible time.
Scaling — degrades precisely when load is highest. Synchronous outbound HTTP per reported exception means an error storm (database outage, bad deploy, upstream 5xx cascade) fans out into thousands of concurrent HTTPS calls to Airbrake, each holding a PHP-FPM worker. That converts an application incident into a capacity incident. Mitigations are non-optional: aggressive connect/read timeouts (sub-second), sampling or per-window rate limiting, and, if feasible, routing delivery through a queue worker so web requests never block on the notifier.
Failure modes to design against
Ramp-up. The code itself is a few hundred lines — any mid-level engineer reads it in an afternoon. The real ramp-up cost is organizational: teaching the team that this is a deprecated dependency with a documented exit, so nobody builds on it, extends it, or assumes its silence means health. The TPM deliverable here is a one-page decision record naming the owner, the validation result from step 2, and the target date for the swap — not a working integration. The integration is the easy part; the risk is that nobody remembers it's temporary.
How can I help you explore Laravel packages today?