dennissmink/lara-bug
LaraBug adds lightweight, self-hosted error tracking to Laravel: it captures exceptions with stack traces and request/user context, stores them for review in a dashboard, and can alert you by email or Slack when something breaks.
Architecture fit. LaraBug is a thin, opinionated adapter into Laravel's exception-reporting pipeline: it plugs in at the ExceptionHandler::report() seam, captures the throwable plus request context, and ships a JSON payload to a LaraBug collector endpoint. Architecturally this is a low-coupling insert — one service provider, one config file, one publishable migration step. It does not sit on the request hot path in a blocking way (assuming queued dispatch, see questions), and it does not own the exception handler outright, so it can coexist with Telescope, Sentry, or Bugsnag. The main architectural decision is not "does it fit Laravel" (it does) but which topology: the hosted larabug.com service versus the self-hosted LaraBug server, which is itself a Laravel app with its own database, queue, and auth surface. Self-hosting converts a package dependency into an owned service.
Integration feasibility. Mechanically trivial: composer require, auto-discovery of the service provider, php artisan larabug:install / vendor:publish for config/larabug.php, then a project key and environment variables. A single-app PoC is a half-day; a fleet rollout with a self-hosted collector and SSO is closer to one to two weeks of engineering plus review. The real cost is parity work — matching the grouping, release tagging, and alert routing that an incumbent tool already provides.
Technical risk. The dominant risk is supply chain and bus factor, not code quality. 297 stars and zero dependents is a thin adoption signal for something wired into error handling; a single-maintainer project with this profile means upstream fixes may never land. The release date (2026-10-23) should be verified against the actual tag history — a forward-dated or sparse release cadence is a maintenance smell. Secondary risks: PII leakage (stack traces and request bodies frequently carry tokens, cookies, and user identifiers into a third-party or self-hosted store), recursion/self-reporting loops when the collector is unreachable, and Laravel-11-era exception handler changes plus Octane/long-lived-worker compatibility (singleton state, stale config). MIT license removes legal friction but offers no warranty or indemnity.
Key questions.
Stack fit. Strong if and only if the estate is predominantly Laravel/PHP 8.1+. For a polyglot estate (Node services, Go workers, Python jobs), LaraBug covers only a slice, which either forces a two-vendor error-reporting strategy or leaves a visibility gap. Treat it as a Laravel-native tool, not an org-wide observability platform.
Migration path. Do not cut over. Run LaraBug in parallel with the incumbent for 4–6 weeks on one high-traffic production app, then diff capture rates by exception class. Migration is "complete" only when: grouping matches or beats the incumbent, alert routing (Slack/PagerDuty/email) reproduces existing thresholds, release/version tagging is wired into deploy, and on-call has signed off on the new UI. Retire the old tool only after a full incident cycle has been handled on LaraBug alone.
Compatibility. Validate a matrix of Laravel versions actually in the estate (e.g., 9/10/11) × PHP 8.1/8.2/8.3, plus Octane and queue-worker contexts. The Laravel 11 withExceptions() API changes how handlers are registered — confirm the package's install path still works or requires manual wiring. Check that config caching (php artisan config:cache) picks up credentials correctly, and that per-environment enable/disable works so local and CI runs don't spam the collector.
Sequencing.
Maintenance. Package upgrades are cheap; the collector is not. Self-hosting means owning a Laravel app, a database whose primary workload is append-and-grow, queue workers, TLS certs, and upgrades — realistically 0.1–0.2 FTE ongoing. With a single-maintainer upstream, budget for the possibility of forking and maintaining the client package internally; that is a real cost that should be priced before adoption, not after.
Support. Community-only: GitHub issues, no SLA, no vendor escalation. Compare against an incumbent with a support contract. For a tier-1 production dependency this is the weakest dimension; mitigate by keeping the integration thin enough to swap (isolate it behind your own reporting abstraction so the vendor call is one class deep).
Scaling. Cost scales with error volume, not request volume, and error volume spikes exactly when you can least afford it — during incidents, when the collector is also most likely to be degraded. Required controls: client-side sampling and rate limiting, deduplication/grouping before egress, queue-based dispatch with a bounded queue, and a hard circuit breaker so a saturated queue never backpressures the app. Storage growth on self-hosted needs a retention policy (e.g., 30/90-day rolloff) defined on day one, plus index and partition planning.
Failure modes.
Ramp-up. Developer-facing learning curve is minimal — roughly half a day to read the config, understand grouping, and set alert rules; the UI is simpler than Sentry's, which cuts both ways (faster onboarding, fewer triage affordances). The non-trivial ramp is operational: on-call needs a runbook covering collector health, queue depth, retention jobs, key rotation, and the fallback path if the tool is down. Add one tabletop exercise before fleet rollout.
TPM recommendation. Approve for a time-boxed pilot on non-tier-1 Laravel apps, gated on the failure-mode tests and PII review passing. Do not standardize org-wide until upstream release cadence, maintainer responsiveness, and Octane/version coverage are confirmed — and keep the abstraction seam so the decision is reversible.
How can I help you explore Laravel packages today?