jenssegers/raven
Sentry integration for Laravel built on the Raven PHP SDK. Automatically reports exceptions and logs to Sentry with context like user data and breadcrumbs, and offers a Monolog handler plus simple config. Handy for adding real-time error tracking to Laravel 4 and 5 apps.
Architecture fit. jenssegers/raven is a thin adapter, not a subsystem. It contributes four artifacts to a Laravel app: a service provider binding the legacy raven/raven client into the container, a facade, a Monolog handler that converts log records into Sentry events, and a hook into the framework exception handler so uncaught exceptions ship with stack trace and request context. In a Laravel 4.x–5.x codebase that is textbook-idiomatic and adds no new architectural concept — no schema, no broker, no sidecar. That is precisely why it is disposable: everything it does, the vendor now ships natively in sentry/sentry-laravel.
Against a modern baseline (Laravel 8–11, PHP 8.1+) it fits poorly. The exception-handling contracts it targets have moved on, package auto-discovery is absent, and nothing anticipates long-lived workers (Octane, queue workers) or modern type semantics. The single-line v1.11.0 changelog — "Increase Laravel support" — is the tell: the roadmap has been version-range widening, not capability.
Integration feasibility. Mechanically trivial inside its supported window: composer require, publish config, set SENTRY_DSN, register provider and alias, done in an afternoon. Nothing to provision beyond a Sentry project and a DSN. But the feasibility question a TPM actually has to answer is not "can we wire it up" — it's "can we keep it wired up for three years," and that answer is governed entirely by upstream dependency health rather than by the adapter's glue.
Technical risk — high, and concentrated in the transitive dependency.
raven/raven predates PHP 8.1+ deprecation hygiene; expect noisy deprecation output and edge-case fatals inside the error path itself — the worst possible place for a failure.Key questions I would put in front of the room before any decision.
Verdict: technically legible, strategically obsolete. Do not fund new work around it; treat existing usage as technical debt with a dated remediation ticket and a named owner.
Stack fit. Binary, not graded. Fits Laravel 4.2–5.x on PHP 5.6–7.x. Assume incompatible with Laravel 6+, PHP 8.1+, and Octane. For greenfield or actively maintained services the answer is no.
Migration path (recommended default). Replace with sentry/sentry-laravel. The mapping is close to one-to-one, which keeps the PR small and reviewable:
Sentry\Laravel\Facade.sentry channel in config/logging.php, stacked alongside the existing file channel so local logging is unchanged.Sentry\captureException($e) in report() (or withExceptions), preserving the existing dontReport list.dsn, environment, release, breadcrumbs, and sample rates across; drop settings with no equivalent and record why in the ticket.raven/raven and jenssegers/raven → removed from composer.json in the same PR that adds the replacement, so the old SDK cannot be silently re-resolved by a transitive requirement.Compatibility and sequencing.
composer.lock across repos for jenssegers/raven and raven/raven; record Laravel/PHP version per hit and tag each "active" or "legacy-frozen." This is the artifact that turns an opinion into a budget line.If a legacy app genuinely cannot move (PHP 5.6 pin, no tests, no owner), make the fallback explicit: pin exact versions, add a code comment pointing at the deprecation ticket, set a hard review date, and name a maintainer. Do not fork "to keep it alive" without an owner — an unowned fork is the worst of both worlds.
Maintenance. Effectively unmaintained. Every future PHP minor is a coin flip, and the failure mode is a broken exception path — the one component that must not fail. If we adopt, we own it. Budget for that honestly rather than assuming "it's just a wrapper."
Support. No upstream channel. Sentry support will redirect to the official SDK, and community answers reference APIs from a framework generation many current engineers have not worked in. Escalation becomes internal-only, which raises on-call burden and lengthens MTTR during exactly the incidents monitoring exists to shorten.
Scaling. The legacy client sends synchronously by default. Under an error storm — precisely when monitoring matters most — that means per-request network calls inline with request handling, adding latency and connection pressure with no first-class sampling or circuit-breaking comparable to the modern SDK. One incident produces both an outage and a Sentry bill spike, and the error reporter becomes a secondary failure domain. Any at-scale deployment needs sampling and backpressure this package does not provide out of the box.
Failure modes to design around.
Ramp-up. Near zero for anyone who has worked in Laravel 5-era code; near total for engineers who only know current Laravel — the idioms (facade registration, manual provider wiring) are unfamiliar and the deprecation context is not obvious from the code. Onboarding cost lands on whoever inherits the app, and it compounds: the knowledge required is knowledge nobody is accumulating anymore.
Bottom line for the roadmap. Do not fund new work around this package. Fund a small, bounded migration to the vendor-maintained SDK, scoped by an inventory, owned by a named engineer, and tracked as reliability debt against our MTTD/MTTR targets. The one legitimate exception is a genuinely end-of-life Laravel app where a stopgap is cheaper than a migration — and even then it needs an owner, a review date, and a monitoring-gap note in the runbook.
How can I help you explore Laravel packages today?