php-bug-catcher/reporter-bundle
A Symfony bundle for php-bug-catcher that wires up automatic exception and error reporting, capturing detailed bug reports and sending them to your configured reporter so you can find and fix issues faster.
getPrevious()) that were previously dropped entirely and are now labelled Caused by: …. For Laravel apps, where a QueryException typically wraps a PDOException, this is the difference between seeing the real root cause and seeing a wrapper.Caused by: labels require a matching server-side template change (bug-catcher#19), this release creates a small client/server version-coupling item that belongs on the platform roadmap alongside the reporter upgrade.Consider adopting when:
Look elsewhere when:
Evaluation cautions specific to this release:
(1064): ), but it introduces a coupling to vendor internals worth testing on upgrade.Caused by: labels after the corresponding server-side template change lands; without it the frames appear unlabelled, which can read as noise to reviewers.To executives: Error reports were pointing engineers one frame away from where the bug actually was, and were discarding the underlying cause of wrapped exceptions — which is precisely the information needed to diagnose a failed query or a failed request. This release fixes both, at zero migration cost: no configuration changes, no downtime, no server-side protocol change, and no data leaves our infrastructure. The business outcome is shorter time-to-diagnosis on production incidents, fewer mis-assigned bugs, and continued avoidance of a per-seat SaaS error-tracking bill.
To engineering leadership: The change replaces fragile string parsing with a first-class path that reads the Throwable directly, so the first frame is the true throw site with the same surrounding code context as parsed frames. It additionally walks the getPrevious() chain and labels those frames Caused by:, recovering information the previous formatter dropped. collectFrames(string) remains as a fallback, and both the Laravel listener and the Monolog handler switch automatically when a Throwable is available. The wire format is unchanged (serialize(Codeframe[])), so rollout is a composer bump.
To the engineering team: Upgrading is a patch-level dependency bump with no code changes on our side. Two things to know: only newly captured reports benefit — old records keep their old frames, so do not expect historical incidents to improve; and to get the Caused by: labels rendered in the dashboard, the matching server-side template change (bug-catcher#19) must ship with or before our client upgrade. Recommend upgrading the client, staging the server template, and spot-checking a known nested-exception case (e.g. a QueryException-wrapped PDOException) before rolling across all services.
Ask: Approve the reporter upgrade as routine maintenance across PHP services, paired with the server-side template update, and treat "verify throw-site accuracy and chained-exception rendering on a known incident" as the acceptance criterion.
How can I help you explore Laravel packages today?