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

Bugsnag Laravel Laravel Package

bugsnag/bugsnag-laravel

Bugsnag's Laravel and Lumen notifier automatically reports unhandled exceptions and crashes, lets you report handled exceptions via Bugsnag::notify(), and attaches user info and custom diagnostic data to show how many people are affected.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit Bugsnag for Laravel is a thin, idiomatic integration layer rather than a framework extension. It registers a service provider, exposes a Bugsnag facade, and hooks into the framework's exception handler and Monolog stack. That means adoption is a configuration exercise, not an architectural change: no base classes, no mandatory interfaces, no changes to how the application throws or catches. For a TPM this is the strongest argument for it — the blast radius of adding or removing it is contained to config/bugsnag.php, the exception handler wiring, and a few Bugsnag::notify() call sites. It also composes cleanly with an internal error-reporting abstraction if we want to keep the vendor swappable.

Integration feasibility Low effort. Composer install, config publish, API key via environment/secret manager, and exception-handler wiring gets unhandled crash reporting live for a typical Laravel app in under a day. The package auto-discovers on Laravel 5.5+; Lumen requires manual provider registration and facade aliasing. Higher-value capabilities are incremental and independently shippable: handled-exception reporting at business-critical boundaries, bugsnag:deploy in CI for release correlation, queue/job context, breadcrumbs, and the newer feature-flag/experiment APIs. Estimated 2–5 engineer-days to production-grade, with most of that spent on redaction policy and noise tuning rather than plumbing.

Technical risk The dominant risk is commercial, not technical. The package is MIT, but the value is entirely in the SaaS backend: API keys, event volume, seats, and data residency are vendor-controlled, and switching cost grows with the number of notify() call sites and dashboards built on top. Second-order risks: default capture of session and user context is a PII exposure surface (the filters option is deprecated in favor of redactedKeys, which is more expressive but must be configured deliberately); event volume directly drives spend on high-traffic or retry-heavy workloads; the Monolog and Laravel version matrix is broad but requires attention at each major upgrade; and there is a history of subtle state bugs (breadcrumbs leaking across Vapor-queued jobs, handled/unhandled misclassification in Lumen, incomplete-container crashes in the OOM bootstrapper), all fixed, but indicative of the integration's surface area. The reported 903 stars and "0 dependents" should be read carefully — vendor SDKs are distributed via Composer to applications, not depended on by other libraries, so both metrics understate real adoption and are weak proxies for health. The changelog through v2.28 with Laravel 11 and Monolog 3 support is the more reliable maturity signal.

Key questions

  • Is the organization already standardized on a competing platform (Sentry, Datadog, New Relic, CloudWatch)? Duplicating spend needs a stated justification.
  • Who owns the error budget and the on-call rotation that Bugsnag alerts will page into? A notifier without an alert-routing owner is shelfware.
  • What is our PII classification for session data, request bodies, and authenticated user identity, and who signs off on the redaction configuration?
  • Which Laravel and PHP versions are actually in the fleet, including any Lumen or legacy 5.x services?
  • Do we need handled-exception reporting as a product signal (payment failures, webhook rejections) or only crash visibility? This changes scope materially.
  • Who rotates API keys, and are dev/staging/prod separated into distinct projects to keep noise out of production triage?

Integration Approach

Stack fit Covers Laravel 4 (via the 1.7 branch) through Laravel 11, plus Lumen, with PHP 7.3+ and Monolog 1/2/3 support landing incrementally. Guzzle 5/6 are supported, and the package will reuse an existing bugsnag.guzzle binding if one is registered — useful in egress-restricted or proxy-mediated environments. Laravel Vapor and queue-based deployments are explicitly handled. For a Laravel-centric estate this is close to a drop-in; for polyglot estates it forces a second error platform alongside whatever the non-PHP services use, which is the main "fit" objection to raise early.

Migration path Run dual-reporting for one to two sprints rather than a hard cutover. Keep the existing tool live while Bugsnag runs in parallel behind a feature flag, then compare on three axes: grouping quality, time-to-diagnosis for a seeded incident, and event volume/cost. Populate discardClasses and redactedKeys before the parallel run so the comparison isn't polluted by noise. Decommission the incumbent only after alert routing, runbooks, and dashboards are ported — that porting, not the install, is the real migration cost.

Compatibility Laravel 5.5+ auto-discovery removes the manual provider step; Lumen needs $app->register() plus a facade alias. Laravel 11 projects wire exception handling through bootstrap/app.php with withExceptions() rather than a Handler class — confirm the integration guide reflects this for the target version. If the application has a custom Monolog channel stack, verify handler ordering so Bugsnag doesn't swallow or duplicate records. The OOM bootstrapper is opt-in and should be added to the HTTP kernel deliberately (it reserves ~5 MiB); treat it as a separate change from the base integration.

Sequencing

  1. Provision separate Bugsnag projects per environment; store API keys in the secret manager, never in .env committed to the repo.
  2. Install and configure in staging first; verify unhandled exception capture end to end with a deliberately thrown exception.
  3. Lock down redaction (redactedKeys, discardClasses, max_breadcrumbs, notifyReleaseStages) and get security sign-off before any production traffic flows.
  4. Add bugsnag:deploy to the CI/CD pipeline so releases correlate with error onset.
  5. Add handled-exception reporting at the two or three boundaries where failure is a product signal.
  6. Roll to production, run parallel with the incumbent for the agreed window, then retire it.
  7. Only then evaluate feature-flag/experiment APIs — that's a product-analytics decision, not a reliability one, and shouldn't gate the core rollout.

Operational Impact

Maintenance Vendor-maintained with a continuous changelog and predictable versioning; the practical burden is upgrading in step with Laravel and Monolog majors. Pin to ^2.x, subscribe to releases, and fold notifier upgrades into the existing framework-upgrade runbook rather than treating them as standalone projects. The application owns config/bugsnag.php, so each upgrade needs a config diff review — the filters → redactedKeys deprecation is the template for the kind of small migration that accumulates silently if unowned. Assign a named owner; unowned notifier configs drift into either over-reporting (cost) or under-reporting (blind spots).

Support Official documentation is good and version-specific for both Laravel and Lumen, with an active issue tracker. The commercial support SLA depends on the plan tier, so confirm what we're actually buying before relying on it during an incident. Internally, we need a short runbook covering API key rotation, per-environment project setup, event-quota monitoring, and alert-routing changes. Budget for one engineer to become the notifier owner.

Scaling Delivery is asynchronous over Guzzle, so the notifier shouldn't sit on the request path, but outbound volume still scales with traffic and with retry behavior on queue workers — one failing job with an aggressive retry policy can generate disproportionate event counts and cost. Control levers are discardClasses, release-stage filtering, breadcrumb caps, and grouping/deduplication. The OOM bootstrapper's memory reserve is negligible on typical containers but should be checked against tight Lambda/Vapor memory ceilings. Cost scales with events, not seats, so the volume dial is the one to monitor continuously rather than annually.

Failure modes

  • Silent degradation: network failure or a bad API key means reports vanish without breaking the app. That's the correct behavior, but it means "Bugsnag is quiet" is not evidence of health — add a synthetic canary or periodic test notification.
  • PII leakage: session and user context are captured by default; a redaction misconfiguration leaks into a third party. This is the highest-severity failure mode and justifies the pre-production security sign-off gate.
  • Event amplification: queue retries and high-traffic error paths inflate cost and obscure the real signal.
  • Version coupling breaks: a Monolog or Laravel major upgrade silently disables the handler until the notifier is upgraded in step.
  • State bleed in serverless/queued contexts: historically observed with breadcrumbs across Vapor jobs; fixed, but worth a regression test if we run Vapor.
  • Alert fatigue: ungrouped or noisy exceptions cause on-call to mute the channel, which converts the whole investment into zero value. Signal tuning is not a nice-to-have.

Ramp-up A Laravel-fluent engineer reaches baseline productivity in roughly half a day for install and configuration, and one to two days to configure redaction properly. Team-wide fluency — reading grouped exceptions, using breadcrumbs and release-stage filters, understanding handled vs. unhandled semantics, knowing when not to call notify() — takes about a week of real incidents. The underestimated cost is the multi-week "signal quality" period after go-live: without dedicated tuning time and an owner, the tool's perceived value drops sharply within two months regardless of how clean the integration was.

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.
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode