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.
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.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.Effectively never for new work, and never in a Laravel codebase. Adoption criteria would have to include all of the following:
Guzzle\Service\Client, pre-PSR-7) and need container-level client configuration.composer.lock and removal is a bigger change than the sprint allows.Look elsewhere when:
Http:: with Http::withHeaders()->retry()->timeout(), Http::pool() for concurrency, and a thin ServiceProvider or macro for shared defaults. Zero dependencies added.symfony/http-client (first-party, PSR-18, native profiler integration) or a maintained Guzzle bundle.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.
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).
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.How can I help you explore Laravel packages today?