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

Stack Trace Laravel Package

innmind/stack-trace

A lightweight PHP library for working with stack traces: capture them, inspect individual frames, and render readable traces for debugging and error reporting. Framework-agnostic and simple to drop into existing error handlers.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for error diagnostics. This package is a candidate building block for any in-house exception inspection surface: a custom error dashboard, an enriched log channel, or an admin-only "last exception" viewer. It supports a component-level buy decision (parse traces ourselves vs. adopt a parser), not a platform decision.
  • Trace presentation in our own tooling. If the roadmap includes a self-hosted error tracker or an internal debugging panel, this package would sit behind the "which frames matter?" question — separating application frames from /vendor frames, extracting file/line/class/function, and normalizing traces so the same exception groups consistently across requests and deploys.
  • Exception grouping and deduplication. Grouping exceptions by a stable trace fingerprint is the prerequisite for alert routing, noise suppression, and "N occurrences, first seen" counters. A trace-inspection library is the cheapest way to test that hypothesis before committing to a vendor SDK.
  • Log and telemetry enrichment. Adding structured trace context to Monolog/PSR-3 records or to Laravel's exception report() context. Relevant if the roadmap includes "reduce mean time to diagnosis" as a measurable goal.
  • Hot-path dependency budgeting. Because this would run inside the exception handler, it forces an explicit decision about dependency weight and failure modes in error paths — a useful forcing function regardless of the outcome.
  • Ecosystem/style fit. It also surfaces an org question: are we standardizing on functional, immutable collection APIs (innmind/immutable-style) in internal tooling, or staying with Laravel-native arrays and Collection? This package is on one side of that line.
  • Runtime upgrade gating (new, from 5.1.0). The package now constrains our PHP version. Placing a dependency in the exception handler that can block a future PHP upgrade is a roadmap-level consideration, not just a code-style one.

Evidence caveat for the decision record: 0 stars, 0 dependents, single-maintainer, composite score ~16.6, opportunity score ~48. The opportunity signal says the problem space (trace inspection/grouping) is underserved; it says nothing about this package being the answer. Treat it as a spike candidate, not a foundation.

Release-note caveat (5.1.0): the newest release drops PHP 8.4 support — and it did so in a minor version bump (5.0.0 → 5.1.0), not a major one. Two things follow. First, practical: if our Laravel estate is on 8.4, or if the upgrade to 8.4 / 8.5 is on the 12-month roadmap, this package is now a hard blocker in the error path — the worst possible place to discover an incompatibility, because the fallback is "exceptions get reported badly." Second, signal: removing a supported runtime in a non-major release is a versioning-discipline data point, and it reinforces rather than offsets the zero-adoption risk already noted. The assessment below is unchanged in direction — still a spike, not a foundation — but the compat constraint should be checked before any spike starts, not after.

When to Consider This Package

Consider it when:

  • You are building internal tooling (debug console, log enricher, exception grouper) and want trace parsing as a small, single-purpose, MIT-licensed dependency rather than importing Ignition, Whoops, or a full APM SDK.
  • You need a framework-agnostic representation of a trace — e.g., the same code must run in a Laravel app, a queue worker, and a standalone CLI daemon.
  • Your team is already comfortable with Innmind-style immutable collections and functional composition; the API will feel native rather than foreign.
  • You are doing a time-boxed spike (1–3 days) to validate a grouping/fingerprinting design, and you will wrap whatever you choose behind your own TraceInspector interface.
  • You can accept bus-factor-one risk because the blast radius is limited to internal tooling and the wrapper lets you swap it out.
  • Your PHP version is already inside the package's supported matrix — verify the actual composer.json php constraint for the 5.x line (post-5.1.0) rather than trusting the release title, and confirm it matches every runtime we deploy to (web, queue workers, CLI, CI images).

Look elsewhere when:

  • The requirement is production-grade error reporting for customer-facing systems. Flare, Sentry, Bugsnag, and Laravel's own handler already ship trace grouping, frame filtering, and a support contract. Rebuilding that on an unproven zero-dependent library is a bad trade.
  • You need framework integration out of the box — a service provider, a config file, a Blade/Ignition renderer, queued reporting. You will write all of that yourself here.
  • You need maintenance guarantees: security policy, LTS/PHP-version matrix, changelog discipline, responsive issue triage. None of that is evidenced by 0 stars / 0 dependents — and the 5.1.0 change removes a currently-shipping PHP version without a major bump, which is the opposite of a versioning guarantee.
  • We are on PHP 8.4, or 8.4 adoption is on the roadmap. As of 5.1.0 this package's support matrix excludes it. Do not adopt a component into the exception handler that pins us to an older runtime.
  • The consuming team is array-and-Collection-native and would pay a comprehension tax on immutable functional types in an error path.
  • You are in a regulated or supply-chain-audited context where an unvetted single-maintainer dependency needs an exception approval you are unlikely to get for a nice-to-have.

Adoption criteria if pursued: wrap behind an internal interface; pin the version; add a contract test that feeds real traces from our PHP version(s); confirm behavior on our actual error volume in staging before any production surface. Add to the gate: record the package's php constraint in the decision record, and require that adopting it does not narrow our supported runtime window. Re-check the constraint on every composer update, and prefer an upper-bounded pin over a floating ^5.x so a future support-drop cannot land silently.

How to Pitch It (Stakeholders)

For executives (one paragraph): We are evaluating a small, MIT-licensed PHP library that turns an exception's raw stack trace into a structured, inspectable form — the foundation for better error grouping and faster diagnosis in our own tooling. The cost is negligible and there is no vendor commitment, but the package has no measurable adoption (zero dependent projects), and its latest release removed support for a current PHP version in a minor update — which is exactly the kind of surprise we do not want inside our error handler. So I am recommending a short, time-boxed evaluation rather than an adoption, conditional on our PHP version being supported. It is a cheap experiment against a real cost — engineer hours lost to unreadable traces — not a strategic bet, and it is fully reversible because we will isolate it behind our own interface. If the spike does not beat what Laravel's handler plus our existing monitoring already give us, we stop and lose a few days.

For engineering: This is a parser, not a platform. It gives us a structured trace we can filter, fingerprint, and enrich logs with — and it is ours to shape, with no SDK, no agent, no data leaving our infrastructure. The trade-offs are explicit: it pulls in the maintainer's immutable-collection style, it has one maintainer and no dependents, it does no framework wiring, and as of 5.1.0 it has dropped PHP 8.4 — in a minor release, so read the composer.json constraint before you type composer require. That last point matters more than usual here: this dependency lives in the exception path, so an unsupported-runtime conflict shows up as broken error reporting, not as a build failure we notice on day one. So we adopt it only inside an internal adapter (TraceInspector), with a contract test built from real traces off our production PHP versions, and with the runtime constraint asserted in CI. If it disappoints, or if the maintainer's support matrix drifts away from our runtimes again, the adapter swaps to Ignition's parser or a hand-rolled version in a day. Spike scope: parse, filter vendor frames, fingerprint a trace, emit as structured log context, plus one afternoon confirming the 5.x constraint against our deployed PHP versions. Decision at the end: keep, wrap-thinner, or drop.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core