nowo-tech/sentry-bundle
A Symfony bundle that integrates Sentry error tracking and monitoring into your application, providing sensible defaults for capturing exceptions, logging events, and reporting performance data with minimal configuration.
Architecture fit. Unchanged. Low for a Laravel-first codebase, moderate-to-good for a Symfony estate. The package remains a classical Symfony bundle (Bundle subclass, DependencyInjection extension, Configuration tree, kernel/console event subscribers). Laravel has no config/bundles.php auto-discovery and no Symfony-style Configuration tree; its Sentry integration is sentry/sentry-laravel, built on sentry/sentry with its own service provider, config file, and Integration hooks. v1.11.2 touches no bundle wiring, no public service IDs, and no config keys, so the architectural verdict is unchanged: this is a pattern source for Laravel, a dependency only for a sibling Symfony service.
What is actually valuable. Unchanged. The differentiator is opinionated enrichment — request/user/console context, breadcrumb augmentation, filtering, richer config surface — sitting on Symfony HttpFoundation (Laravel uses the same code via illuminate/http) and the Sentry SDK's public Event/Scope API rather than framework-private internals. That remains the porting target.
Integration feasibility. Unchanged. Not feasible as a composer dependency for Laravel; feasible as transferable logic with moderate effort (HTTP-side listeners port ~1:1, console-side do not, YAML config becomes config/sentry.php).
What v1.11.2 changes for us. This is a maintenance release — dependencies refreshed, demo database moved to MySQL 8.4, #[DataProvider] modernization, changelog/docs tidying — with no breaking API change. Semver was respected on a patch bump. It is significant not for features but for maintainer-maturity evidence, which touches several of our open due-diligence items:
release-check that runs ensure-up and a new check-open-prs gate — releases cannot ship with open PRs.docs/SECURITY.md adds attack surface, threat model, and dependency policy (REQ-SEC-001).UPGRADING.md#to-1112 anchor — requirements traceability and a maintained upgrade path, not ad-hoc tagging.Technical risk (revised).
check-open-prs and the 99% gate are process controls we have not seen hold under pressure (e.g. an urgent security release). Treat as intent until observed over a few releases.SECURITY.md may constrain sentry/sentry ranges. Still plan separate composer roots where sentry/sentry-laravel co-exists.Key questions (updated — resolved in bold, still open otherwise).
sentry/sentry-symfony or reimplement integration? (Still open — determines inheritance of upstream security fixes.)SECURITY.md threat model does not clearly answer this; confirm scope.)UPGRADING.md anchor exists. Still ask for a published compatibility policy.sentry/sentry and sentry/sentry-symfony ranges, and is it enforced in CI?check-open-prs/coverage gate apply to security releases, or can it be bypassed?### Changed sections — is it generated, and can release notes be trusted as a complete change inventory?Stack fit. Unchanged. Symfony app → genuine fit, adopt as a normal bundle. Laravel app/package → do not depend; harvest patterns. Mixed estate → split the decision by runtime, not by team.
Migration path (Laravel target).
src/DependencyInjection/, src/Configuration.php, and the listener classes; diff behavior against sentry/sentry-laravel defaults and record the actual value gap. Port listeners, not the abstraction.mergeConfigFrom + publish, preserving key names where sensible.Integration on the Sentry hub, each behind its own config flag.before_send to confirm event counts and payload contents.#[DataProvider]-style test attributes, and an equivalent coverage threshold — so the fork inherits the discipline that made this release borrowable.Compatibility. Unchanged. PHP ≥8.1 and Symfony 6/7/8 align with current Laravel PHP baselines; friction is framework-contract-level (events, DI, config), not language-level. v1.11.2 introduces no compatibility delta, so no re-verification is required for work already scoped. The MySQL 8.4 demo change is demo-only and irrelevant unless we run their demo harness. MIT headers and attribution stay in place (NOTICE/source comment).
Sequencing.
sentry/sentry-laravel (1–2 days).Recommendation. Unchanged in direction, stronger in confidence: do not add as a dependency in Laravel; treat as a reference implementation and port selectively with attribution. The maturity signals in v1.11.2 make two things cheaper — borrowing code with a defensible quality story, and engaging upstream rather than forking silently (a repo with open-PR release gates, Dependabot, and REQ traceability is likely responsive to issues/PRs). Prefer upstreaming durable improvements to sentry/sentry-laravel. For Symfony services, evaluate on its own merits with a config-flag rollout.
Maintenance. Improved but not transformed. Static analysis plus a 99% coverage gate and a release gate materially reduce the chance we inherit broken listener logic; the code is MIT and self-contained, so it is ours either way. The core cost remains that with zero dependents we are first to hit any bug and there is no issue corpus to search. A fork still becomes an internal package with an owner, changelog, and review cadence — budget it explicitly. Upgrades remain driven by sentry/sentry majors; the presence of UPGRADING.md anchors is a genuine improvement here, as is the visible dependency-refresh cadence. Assume at least one migration per year.
Support. Still no community, no vendor SLA, no Stack Overflow coverage; internal documentation remains a deliverable we must write, because the README plus spec docs are the only spec. Two offsets: docs/SECURITY.md gives us a vulnerability-reporting path and dependency policy to cite in our own security review, and the REQ/UPGRADING artifacts shorten comprehension time. Estimate one to two sprints of Laravel engineering for full parity including docs and tests; near-zero ramp-up for a Symfony developer.
Scaling. Unchanged. The cost driver is Sentry event and breadcrumb volume, not CPU. Enrichment increases payload size and events per request, raising ingest cost at scale — measure events/request and average payload bytes before/after, and set traces_sample_rate and before_send filtering deliberately. Verify subscriber overhead under production-like load and quantify the cross-service tracing upside in the business case. The MySQL demo change has no production bearing.
Failure modes to design against.
sentry/sentry → runtime Error on boot, not a build failure, unless pinned exactly. Heightened: dependencies now move inside patch releases, so a loose constraint can change behavior on a "safe" bump.check-open-prs or coverage can be skipped for hotfixes, quality expectations should be re-based.Bottom line for the TPM. The architectural verdict is unchanged: not a Laravel dependency. v1.11.2 is a patch-level hygiene release that raises maintainer-maturity confidence — CI static analysis, a 99% coverage gate, an open-PR release gate, and a published security/threat-model document — and it answers or downgrades roughly half of our open due-diligence questions without introducing breaking changes. The PII/scrubbing question remains open and is still the single blocker before any production adoption. Proceed with the time-boxed pattern-evaluation spike at the same scope (slightly reduced provenance effort), and defer the dependency decision until PII behavior and the sentry/sentry dependency policy are confirmed.
How can I help you explore Laravel packages today?