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

Flare Debug Sender Laravel Package

spatie/flare-debug-sender

A debug sender for Flare payloads, intended mainly for internal testing. It lets Laravel apps route error, trace, and Zipkin payloads through a configurable channel, with options to pass through data, alter tracing IDs and times, print payload details, and customize curl sender settings.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a drop-in replacement for Flare's payload sender, wired through the existing sender key in config/flare.php. It adds no services, no daemons, and no new infrastructure — it is a leaf, dev-only dependency that decorates a vendor integration we already own. Architecturally it is about as low-friction as a package gets: one config block, no application code changes, reversible by deleting the block.

Integration feasibility. Installation is composer require spatie/flare-debug-sender, publishing the Flare config, and swapping the sender class. Output is pluggable across three channels — Ray (if the team already uses it), the Laravel log, or a plain file — so we do not have to introduce a new tool to get value. Realistic effort: half a day for a pilot and documentation, not a sprint.

The one hard gate. The README assumes our installed Flare SDK version exposes the sender config hook. That must be verified against the actual installed version before we tell anyone this works. Everything else is configuration; this is the only thing that can invalidate the plan.

Technical risk.

  • Version coupling to Flare majors. Release 2.0.0 exists solely to follow Flare v3. The sender contract tracks Flare's own major cadence, so this package will need a bump whenever we upgrade Flare. Pin the version.
  • It intercepts errors. Misconfigured in a shared environment, it silently stops real errors from reaching Flare. This is the highest-severity risk and is entirely a configuration-discipline problem, not a package defect.
  • The sample config disables TLS verification (CURLOPT_SSL_VERIFYHOST/PEER => 0). Fine for a local throwaway; must never be copy-pasted into shared config.
  • No external validation. Zero stars, zero dependents, single-vendor authorship, and the author positions it as "mostly used for internal testing purposes." That is not a reason to reject it — it is a reason to treat it as an unsupported developer convenience with a documented escape hatch, not as platform infrastructure.
  • License is MIT — no legal review needed.

Key questions to settle before adoption.

  1. Which Flare SDK version are we on, and does it expose the sender config hook?
  2. Who is the named internal owner for error-reporting tooling, and do they accept ownership of this snippet?
  3. Does the team already have Ray, or is the Laravel log / file channel sufficient? (Prefer the channel that adds no tooling.)
  4. How do we guarantee the debug sender cannot be enabled outside local — env-gated conditional, or uncommitted local config?
  5. Is the value (deterministic payload inspection, upgrade diffing, privacy evidence) worth the pin-and-track overhead versus a hand-rolled stub? Given the option list already covers pass-through toggles, ID/timestamp normalization, and swappable senders, buying at zero cost is the default answer.

Integration Approach

Stack fit. Laravel applications using Spatie Flare. A non-Laravel path exists (sendUsing) but is out of scope for us. The package composes cleanly with what is already in the stack: if the team uses Ray, the RayDebugChannel is the natural default; if not, LaravelLogDebugChannel gives equivalent insight with zero additions to the toolchain. There is no overlap conflict with Telescope or Xdebug — those answer different questions (query analysis, step-through debugging); this answers only "what would Flare have received?"

Migration path. There is no data migration. Two distinct migrations to keep separate:

  • Flare SDK major upgrades require a matching bump of this package (v1.x → v2.x for Flare v3). Treat payload diffing before/after the upgrade as a standing migration check — it is the cheapest possible validation gate and directly reduces the risk of a silent telemetry regression.
  • Adoption itself is per-developer and additive, not an org-wide rollout. No cutover, no rollback ceremony.

Compatibility and the class-not-found trap. The debug sender class is referenced from committed config, but the package belongs in require-dev. If a production deploy boots with that config reference and without the package, the app fatals on container resolution. The mitigation is non-negotiable: gate the sender swap behind an environment conditional (e.g. env('FLARE_DEBUG_SENDER', false)) so the production config resolves to Flare's default sender. This also doubles as the primary guard against the intercept-in-shared-env failure mode. Pin the exact version and review the changelog on every bump.

Sequencing.

  1. Confirm the installed Flare SDK version and that the sender hook is present.
  2. Add as require-dev; do not touch shared or committed production config without the env gate.
  3. Pilot with the engineer who owns the error-reporting integration — pick one real payload-affecting ticket (a new custom exception context, a breadcrumb change, a middleware that rewrites payloads).
  4. Document the env-gated snippet and the standing use cases: payload shape verification, privacy/field-audit evidence, local reproduction of intermittent failures, before/after diff on Flare major upgrades.
  5. Re-evaluate at the next Flare major or after one quarter, whichever comes first.

Operational Impact

Maintenance. Runtime maintenance cost is effectively zero because the package is local-only and never ships. The real maintenance burden is vigilance: ensuring the debug sender never survives into shared configuration, and tracking Flare majors. Budget a small, predictable allowance per Flare upgrade rather than an ongoing effort. The repo carries README, changelog, and tagged releases — sufficient hygiene for a tool of this size, though a single-vendor bus factor remains.

Support. Community-supported through Spatie, with no SLA and no expectation of one. Do not route production incidents through this package. The internal owner should be the same engineer accountable for error reporting generally, and the documented escape hatch — revert the sender block to Flare's default — should be written down next to the snippet so anyone can undo it without reading source.

Scaling. Not a scaling concern in the traffic sense; it is a per-developer utility, so it scales with headcount, not request volume. Zero infrastructure, zero cost, and no payloads leave the machine unless pass-through to a live DSN is explicitly enabled. Resist the temptation to standardize it org-wide or pin it into CI: the author scopes it to internal testing, and a CI dependency creates an ownerless contract that breaks on Flare majors. A documented, copy-pasteable local snippet is the correct distribution mechanism.

Failure modes.

  • Silent error loss in a shared environment — highest severity; mitigated by env gating plus a config review checklist or static check on config/flare.php.
  • Class-not-found fatal on boot when the package is absent but the config reference is committed — mitigated by the env-gated conditional.
  • TLS verification disabled surviving into shared config — call this out explicitly in the documentation and code review.
  • Breakage on a Flare major bump — mitigated by version pinning and the before/after payload diff.
  • Misreading normalized output as production truth — the sender rewrites tracing IDs and timestamps for readability; document that the payload is normalized, not verbatim.
  • Degraded mode in every case is benign: revert the sender and Flare behaves as before.

Ramp-up. Trivial. The options table in the README is the entire API surface; an engineer is productive in under an hour. The onboarding value is real — showing a new engineer an actual outgoing payload is a faster and more durable explanation of our error-tracking setup than a dashboard tour. Total upfront investment: roughly half a day for the pilot, the env-gated snippet, and a short internal note.

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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log