swayok/laravel-extended-errors
Laravel Extended Errors enhances Laravel's exception and error handling with richer context, cleaner responses, and flexible customization for APIs and web apps, helping surface useful debugging details while keeping production errors structured and user-friendly.
What it is. swayok/laravel-extended-errors is a developer-diagnostics package with two coupled capabilities: (1) an extended exception renderer that surfaces more context than Laravel's default debug page, and (2) Monolog handlers that emit HTML file logs and HTML emails using the same rendering, so an error email looks like the debug screen.
Architecture fit. Structurally this is a low-coupling package — the expected shape is a service provider, a publishable config, and Monolog handler/formatter classes registered as log channels. That pattern fits Laravel cleanly and does not require touching application domain code. The risk is not architectural intrusion; it is that the package sits on two of the most version-sensitive seams in the framework: the exception handler's render pipeline and Monolog's FormatterInterface/HandlerInterface contracts, both of which have broken across major versions.
Integration feasibility. Mechanically easy: composer require, publish config, add a channel, point stack at it. Realistically this is a half-day spike, not a project. The cost is not installation but validation — there is no test matrix published, no CI badge evidence in the description, and zero dependents, so nobody has exercised it against your Laravel/PHP/Monolog combination.
Technical risk.
Key questions for the maintainer / spike.
TPM read. Treat this as developer ergonomics, not infrastructure. It is plausible for local and staging environments; it is not a component to put on the production critical path without a fork-and-own decision.
Stack fit. Best fit is a Laravel app on a recent major version with Monolog channel configuration already in config/logging.php, and a team that already reads Laravel debug pages. Poor fit if you have a structured-logging standard (JSON to ELK/Datadog/Splunk), a SIEM, or a compliance regime that governs what may leave the VPC — HTML logs and HTML email are both hostile to those pipelines.
Migration path. Strictly additive and reversible:
html channel rather than replacing single/daily/stack.APP_ENV !== 'production' and an explicit feature flag, so the default posture for production is off.stack; no data migration, no schema change.Compatibility work. Verify against the pinned versions before writing any config: Laravel exception handler rendering hooks, Monolog FormatterInterface signature, PHP version constraints in composer.json, and whether the package conflicts with Ignition, Telescope, Horizon, or Sentry — all of which also hook exception rendering, and collisions here produce confusing duplicate or suppressed output.
Sequencing.
Decision rule to propose to engineering. Default to no for production; allow in local/staging as a developer-experience convenience. Revisit only if the team is actively debugging exception rendering and wants a faster loop.
Maintenance. Low code footprint but non-trivial ownership cost, because the package touches two version-fragile seams. Budget for a compatibility review at every Laravel major upgrade and every Monolog major upgrade. With a single maintainer and no dependents, the practical assumption is that you will maintain the fork, not consume upstream. Pin an exact version and treat upgrades as deliberate work, not composer update fallout.
Support. GitHub issues only; no SLA, no security policy stated, no backport commitments. An undisclosed vulnerability in a package that renders request context into logs and email is a real exposure with no coordinated-disclosure channel. Raise this with security before production use.
Scaling.
Failure modes to design against.
bubble/fallback handler ordering and a test with the mailer disabled.Ramp-up. Minimal for a Laravel developer: config plus a channel entry, roughly an hour to first useful output. The real ramp-up is organizational — the team must internalize "this channel is for humans, JSON is for machines" so nobody starts alerting off HTML files, and on-call must know that an HTML email is a debugging aid rather than a paging signal. Document that boundary in the runbook before enabling it.
Bottom line. Worth a short, time-boxed spike for local and staging diagnostics; not worth a production dependency at this maturity, star count, and adoption level. Recommendation: pilot in non-production, keep default structured logging authoritative, and if the team genuinely values the output, fork and own it rather than depending on upstream.
How can I help you explore Laravel packages today?