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

Guzzle Bundle Laravel Package

orkestra/guzzle-bundle

Orkestra Guzzle Bundle integrates the Guzzle HTTP client into Symfony applications, providing service configuration, dependency injection support, and convenient access to configured clients for making API requests, handling responses, and managing HTTP options with sensible defaults.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy (verdict: build, and we already have it). orkestra/guzzle-bundle is a Symfony 2-era DI wrapper whose entire value is registering Guzzle clients in a container. Laravel ships Illuminate\Support\Facades\Http and a service-container binding for Guzzle out of the box. Adopting an archived third-party integration bundle to re-expose a client our framework already exposes is pure dependency weight. This is a clean "buy → build" data point for the HTTP integration layer.
  • Roadmap: standardize the outbound HTTP layer. Use this as the historical reference point when sequencing the "one HTTP client, one set of retry/timeout/observability defaults" epic. The ecosystem has moved to PSR-18 and symfony/http-client; Laravel has moved to the Http facade with macros and Http::pool. That epic should target the maintained first-party path, not vendor bundles.
  • Cross-framework consolidation decision. We are a PHP shop, not a Laravel-only shop. This package is a concrete example of the "per-framework integration bundles" pattern we should stop paying for: every framework already ships (or easily wires) its own HTTP client. One decision — no bundle-based HTTP layers in any framework — covers Laravel, Symfony, and anything we inherit.
  • Dependency governance policy for the Laravel estate. Feeds a rule adoptable immediately: no new dependency that is (a) archived, (b) pinned to an EOL framework major, or (c) has zero dependents. This package trips all three and is a clean calibration example for the review checklist and for reviewer training.
  • Supplier/OSS risk scoring thresholds. 11 stars, 0 dependents, archived, low opportunity score — a bottom-decile profile. Useful as the "what red looks like" anchor in our dependency inventory scoring.
  • Legacy sustain triage, not an invest decision. The only defensible use is a legacy Symfony 2.x app already carrying it. For a Laravel roadmap it is a non-candidate; documenting that explicitly prevents someone from "finding" it later and pitching it as a shortcut.

When to Consider This Package

Effectively never for new work, and never in a Laravel codebase. Adoption criteria would have to include all of the following:

  • You are already running Symfony 2.3–2.8 and cannot upgrade this cycle.
  • You are pinned to the Guzzle 3/5-era API this bundle targets (Guzzle\Service\Client, pre-PSR-7) and need container-level client configuration.
  • The package is already in composer.lock and removal is a bigger change than the sprint allows.
  • You want it as reference reading only — an example of how someone structured Guzzle service definitions in a Symfony DI container.

Look elsewhere when:

  • Any Laravel application (5.x through 11.x). Use Http:: with Http::withHeaders()->retry()->timeout(), Http::pool() for concurrency, and a thin ServiceProvider or macro for shared defaults. Zero dependencies added.
  • Any Symfony 4+ codebase. Use symfony/http-client (first-party, PSR-18, native profiler integration) or a maintained Guzzle bundle.
  • You need middleware, retries, circuit breaking, or observability. Modern clients cover this natively; a Symfony 2-era wrapper does not.
  • Security and patch cadence matter. Archived means no fixes; you inherit CVEs in EOL Guzzle and Symfony components with no upgrade path.
  • You want community support. 11 stars, 0 dependents: no triage, no Q&A corpus, no third-party fixes. Every bug becomes ours.
  • You need typed service contracts or generated clients. Prefer OpenAPI-generated SDKs or symfony/http-client + serializer.

Decision rule of thumb: if you can configure it in config/services.yaml — or, in Laravel, in one ServiceProvider binding — skip the bundle.

How to Pitch It (Stakeholders)

For executives (one paragraph). We evaluated orkestra/guzzle-bundle and recommend no adoption — it is not even a candidate for our Laravel services. It is an archived Symfony 2-era wrapper that adds configuration convenience on top of an HTTP client our framework already provides and maintains. It has no maintainer, no dependents, and no security patch path, so adopting it converts a solved problem into a standing liability in our outbound request path. The real takeaway is the policy it justifies: screen out archived, EOL-pinned, zero-adoption dependencies before they enter the codebase, and keep outbound HTTP on maintained first-party clients in every framework we run. Cost of the recommended path is negligible — a service binding and a macro; cost of the alternative is an unpatched dependency we cannot upgrade.

For engineering (summary).

  • Verdict: No-go. Not applicable to Laravel at all; sustain-only if it already sits in a legacy Symfony 2.x lockfile somewhere in the estate.
  • Why: Archived repo, 11 stars, 0 dependents, pinned to an EOL Symfony major and a pre-PSR-7 Guzzle API. The delivered value is DI wiring we can own in a few lines.
  • Replacement: Laravel — Illuminate\Support\Facades\Http with a scoped macro or ServiceProvider binding for base URL, timeout, retry, and headers; Http::pool() where concurrency matters. Symfony — symfony/http-client. Raw Guzzle only where its specific semantics are required.
  • Effort: Small and bounded. A config/service binding plus handler and middleware defaults; no application logic should depend on the bundle's API surface, so the exit is cheap.
  • Ask: (1) Approve the no-go and record it in the decision log so it doesn't resurface. (2) Add "archived / EOL-pinned / zero dependents" to the dependency review checklist for all PHP repos, not just Laravel. (3) Inventory the estate for transitive pulls and fold any hits into the relevant framework-upgrade backlog so they are removed rather than carried forward. (4) Publish the team's HTTP defaults (timeouts, retries, logging, correlation IDs) once, so nobody needs a bundle to get sane behavior.
  • Risk if we ignore this: silent CVE exposure in the HTTP path with no upstream fix, one more hard blocker on any future framework upgrade, and a precedent that per-framework wrapper bundles are an acceptable way to solve problems the framework already solved.
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.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums