sentry/sdk
Official Sentry SDK for PHP. Capture errors, exceptions, and performance traces from Laravel, Symfony, or plain PHP apps, with breadcrumbs, stack traces, and release tracking to find and fix issues faster.
Architecture fit. sentry/sdk is a Composer metapackage: it contains no PHP classes, no service provider, no facade, no config stub, no auto-discovery entry. Its entire behavior is a composer.json require block that pulls sentry/sentry plus a recommended PSR-18/PSR-7 HTTP client stack. Architecturally it is the "batteries-included" selector for the core SDK's transport layer, not an integration surface. For a Laravel codebase the correct architectural unit is sentry/sentry-laravel (which owns the service provider, config/sentry.php, exception handler hooks, queue/command instrumentation); sentry/sdk is at best a transitive artifact beneath it. Treat any proposal to "add sentry/sdk" as a dependency-graph question, not an architecture decision.
Integration feasibility. Trivial to install and trivially reversible — there is nothing to wire. The only real integration work is confirming who else already requires it: composer why sentry/sdk / composer depends sentry/sdk will typically show sentry/sentry-laravel or sentry/sentry as the consumer. If the metapackage is already present transitively, direct adoption adds nothing. If it is absent, adding it explicitly is a no-op at runtime and only introduces a version constraint we now own.
Technical risk.
sentry/sdk minor lines and sentry/sentry minor lines move together. A Dependabot bump of sentry/sdk can force an unintended core SDK upgrade, and vice versa a held-back core SDK can make a standalone sentry/sdk update unresolvable.laravel/framework's HTTP client) and frequently a PSR-18 implementation. Two transports in the same dependency graph is a conflict surface, not a runtime bug, but it produces composer update deadlocks that get debugged at the worst time.sentry/sentry 4.x grew its own curl-based HttpTransport and stopped needing an external client. But it means the package is a lagging indicator and a plausible future abandoned marker.Key questions for the owning team.
sentry/sentry major is in the lockfile, and does our sentry/sentry-laravel version still require sentry/sdk at all?Stack fit. Install sentry/sentry-laravel (Laravel 9–11) or sentry/sentry (non-Laravel services, queue workers, CLI tooling). Let the metapackage resolve transitively and do not add a direct require on sentry/sdk unless we are deliberately overriding the transport. Constrain at the integration layer, not the metapackage layer.
Migration path.
composer show sentry/*, composer why sentry/sdk, composer why guzzlehttp/guzzle.sentry/sentry-laravel, the metapackage is a hard requirement; upgrading to 4.x relaxes that and is the cleanest way to remove the dependency from our surface area.composer why sentry/sdk returns empty before deleting any lockfile entry.composer.json and a full composer update --with-dependencies in a dedicated PR.Compatibility.
allow-plugins friction.Sequencing.
sentry/sentry-laravel to the target major; observe whether sentry/sdk drops out.sentry/sdk line with a dated comment.php artisan sentry:test, confirm sampling rates, watch for transport errors in the app log.Maintenance. Near-zero direct maintenance and near-zero code surface — there is nothing to patch, no config to drift, no migrations. The inherited maintenance is upstream release cadence and the fact that a stale metapackage can silently gate the core SDK's version. Budget for it in the same review cycle as the rest of the observability stack; do not give it its own Dependabot lane, or the team will spend review cycles on PRs that are pure version arithmetic.
Support. OSS-only. Sentry's commercial relationship covers the SaaS ingest and UI, not SDK defect SLAs. Escalation is GitHub issues on getsentry/sentry-php; the metapackage repo itself is a thin manifest. If event delivery is business-critical (e.g., alerting feeds on-call), document a fallback path — logs, APM, or a secondary error tracker — because our support leverage over this layer is thin and slow.
Scaling. The metapackage has no runtime footprint; scaling questions belong to the transport and sampling config it selects: traces_sample_rate, sample_rate, max_breadcrumbs, and whether the transport is synchronous. The high-leverage decision is a non-blocking transport for web requests so a slow or unreachable Sentry ingest endpoint cannot add latency to user-facing requests. Watch event volume cost, not package performance.
Failure modes.
SENTRY_LARAVEL_DSN in one environment turns reporting into a no-op with no startup error.composer install time, typically during an unrelated upgrade.Ramp-up. Low for application engineers — there is no API to learn, and Sentry::captureException() / captureMessage() are self-evident. The actual ramp-up cost is conceptual and lands on whoever owns the dependency graph: understanding Composer resolution, why the metapackage exists, and which layer to constrain when things conflict. Expect half a day for a senior engineer to be productive here, and treat that as the real cost of the package — not the install.
How can I help you explore Laravel packages today?