nietonfir/raygun-bundle
Symfony bundle that wires Raygun error tracking into your app, capturing exceptions and sending them to Raygun for monitoring and analysis. Provides straightforward service configuration for reporting PHP errors in Symfony projects.
Bottom line: do not adopt this package into a Laravel codebase. It is a Symfony 2 bundle — a framework-specific packaging layer — and its only reusable content is the third-party client it wraps. The wrapper is the deliverable, and the wrapper does not transfer.
Architecture fit: The bundle targets Symfony's bundle/DI/Config machinery: a Bundle subclass, a DependencyInjection\Extension, a Configuration tree, and event-subscriber registration via service definitions. Laravel's container borrows Symfony components but has no bundle loader — no registerBundles(), no Resources/config/services.yml convention, no extension auto-wiring. In Laravel, every line of this package's actual value is inert. What does the work, mindscape/raygun4php, is framework-agnostic and importable on its own.
Integration feasibility: Expect Composer to refuse installation outright, not merely warn. Modern Laravel pins symfony/* to the 6.x line; a Symfony 2-era bundle constrains symfony/framework-bundle and symfony/http-kernel to 2.x. That is an unresolvable conflict, so "require it and see" is a dead end rather than a spike. The real integration is composer require mindscape/raygun4php plus roughly 60–150 lines of Laravel glue.
Technical risk:
Key questions:
mindscape/raygun4php actively released and PHP 8.x-clean, or are we pinning a dormant dependency?sentry/sentry-laravel, Flare, Bugsnag) been ruled out on cost/features rather than inertia?Stack fit: bundle layer, none; client layer, adequate. Recommendation: do not install this package.
Migration path: two branches, decided by question 1.
config/raygun.php (key, region endpoint, enabled flag, sample rate, ignored exception classes), and register the reporter with Laravel's exception handler via ->reportable() rather than a Symfony event subscriber. If the client's transport is synchronous, defer sending to a terminable middleware or queued job so reporting is off the response path.Compatibility: the bundle targets Symfony 2.x components and a PHP floor from that era; it will not resolve against a modern Laravel lockfile. A composer why-not on a scratch project is sufficient evidence for the decision record — don't burn a sprint proving it in a branch.
Sequencing (if we proceed with Raygun):
RAYGUN_ENABLED=false, flip per environment, then document.Do not fork or adapt the bundle at any step — the glue is smaller than the fork's maintenance tail.
Maintenance: assume zero upstream. If this package enters the tree we own it, and the Symfony 2 baseline guarantees no upstream will do the work of keeping it current. The lower-risk posture is a dependency on the client library plus our own ~100 readable lines — better than owning a framework integration we'd have to reverse-engineer.
Support: Raygun's commercial support covers the SaaS and nominally its SDKs; a 1-star wrapper is supported by nobody. Escalation for "errors are missing" lands on our on-call, not a vendor, because the fault is as likely to be in the wrapper's config wiring as in Raygun.
Scaling: error tracking scales with error volume, and volume spikes precisely when the app is failing — the worst moment to add synchronous HTTP calls to the request path. Requirements: bounded timeout (sub-200ms), non-blocking or deferred transport, client-side sampling/dedup for repeat exceptions, and payload size caps. Set quota alarms: an error storm can exhaust a monthly event budget in minutes, and if the plan throttles, you go blind during the incident you most need data for.
Failure modes to design against:
Ramp-up: engineering cost is trivial — a mid-level Laravel developer writes the provider and hook in half a day, with no learning curve because there is no bundle to learn. The real ramp-up is organizational: security review of data egress, a DPA, and an on-call runbook entry. Call it one to two weeks of calendar time, almost none of it coding. That asymmetry is the tell: this is a procurement and data-governance decision wearing a library's clothes, and the specific package under review is not a meaningful part of it.
How can I help you explore Laravel packages today?