Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Raygun Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • Abandonment. 1 star, 0 dependents, single maintainer, Symfony 2 EOL since 2018. Treat as unmaintained regardless of last-commit date. No security disclosure path, no CVE history to lean on, no upgrade path.
  • Transitive decay. The underlying client still needs verification: PHP 8.1–8.3 compatibility, curl vs. stream transport, timeout behavior, whether any async/batch mode exists. Don't assume — pin and test.
  • Data egress and compliance. Error payloads routinely carry stack traces with absolute paths, request headers, cookies, query strings, and user identifiers. Adopting any Raygun client is a data-processing decision (DPA, region endpoint, retention, scrubbing), not a library decision. This dwarfs the code risk.
  • Value concentration. The opportunity score (0.38) and zero dependents are consistent: there is no ecosystem gravity to inherit here.

Key questions:

  1. Is Raygun a mandated/contracted vendor, or is this an open "pick an error tracker" evaluation? Different decisions follow.
  2. If mandated: which Raygun endpoint region, and do we have a signed DPA plus a data-classification ruling on request payloads?
  3. Is mindscape/raygun4php actively released and PHP 8.x-clean, or are we pinning a dormant dependency?
  4. What is the actual feature need — uncaught-exception grouping only, or tags, user context, breadcrumbs, performance tracing? Scope determines whether a thin wrapper suffices.
  5. Who owns a vendored fork if we ever need to patch? The default answer should be nobody — which argues for a first-party-maintained SDK.
  6. Has a first-party Laravel option (e.g. sentry/sentry-laravel, Flare, Bugsnag) been ruled out on cost/features rather than inertia?

Integration Approach

Stack fit: bundle layer, none; client layer, adequate. Recommendation: do not install this package.

Migration path: two branches, decided by question 1.

  • Raygun mandated → skip the bundle. Require the client library, bind a singleton in a service provider reading 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.
  • Raygun not mandated → run a two-day bake-off against one first-party Laravel SDK. Weight: install path, async transport, PII scrubbing hooks, release tagging, cost at our log volume, data region. First-party SDKs win this on maintenance alone.

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):

  1. Vendor + DPA + region decision (security/legal, gating).
  2. Spike the raw client in a throwaway branch; measure added request latency, confirm PHP 8.x behavior, and prove failure isolation (timeouts, try/catch, circuit-break the reporter).
  3. Write the provider, config, and exception hook; keep it under ~150 LOC.
  4. Add a scrubber for headers, cookies, and query params before any staging deploy.
  5. Staging soak under synthetic errors; verify quota behavior and that a Raygun outage cannot fail a request.
  6. Ship behind 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.

Operational Impact

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:

  • Reporter throws or hangs → must be caught; a monitoring dependency must never be able to 500 a request.
  • Silent dropout (bad API key, expired plan, egress policy blocking the endpoint) → alert on "zero events received in N hours" for known-traffic periods, or you'll discover the gap post-incident.
  • Recursive capture (error inside the reporter re-reported) → hard-disable within the reporter's own call stack.
  • PII in payloads → scrub at the boundary; set retention server-side rather than hoping.
  • Double-reporting alongside existing logs/APM → dedupe or disable the redundant channel to keep cost and signal clean.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel