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

Fos Rest Extra Bundle Laravel Package

m6web/fos-rest-extra-bundle

A Symfony bundle that extends FOSRestBundle with extra utilities for building REST APIs. It provides convenient configuration and helpers to reduce boilerplate around request handling and responses, integrating cleanly into existing FOSRestBundle-based applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — unchanged: poor. v4.0.0 changes the Symfony version constraint, not the nature of the package. m6web/fos-rest-extra-bundle remains a Symfony bundle: Bundle subclass, DI extension, service definitions, event listeners and annotations bound to friendsofphp/fos-rest-bundle. Laravel has no bundle system, no kernel, no FOSRestBundle listener pipeline, and no ViewListener/format-listener equivalent for these classes to attach to. There is still no service provider, facade, PSR-15 shim, or config bridge. In a Laravel application the package still contributes zero callable functionality without a Symfony kernel and container alongside Laravel's.

What the release actually changes. The note is a single line: "Make this bundle compatible with sf6." That is a constraint and API-compatibility bump, and shipping it as a 4.0.0 major signals a breaking change for existing users — almost certainly dropping Symfony 4.x/5.x support. It removes the single largest second-order blocker identified previously (Symfony 4.x/5.x pins colliding with the Symfony 6 components Laravel 10/11 already require). It does not touch the first-order blocker: there is still no Laravel integration surface. The release is therefore a risk reduction, not a capability change — and it does nothing to increase the package's usefulness to us.

Integration feasibility — still technically possible, still practically inadvisable. Installing alongside Laravel 10 becomes less likely to explode in Composer. But you would still need a dual-container architecture and a subset of traffic routed through Symfony to obtain a few request listeners. The multi-week infrastructure cost is unchanged; only the probability of a dependency-resolution fight on install has fallen.

Technical risk — high, marginally reduced. The prior profile: last release 2022-07-21, 1 GitHub star, 0 dependents, single-vendor origin (M6Web / BedrockStreaming). Current profile:

  • Composer conflicts — reduced, not eliminated. SF6 compatibility helps Laravel 10 (Symfony 6.2/6.3). It does not obviously help Laravel 11, which rides Symfony 7 components; an SF6-only constraint set can conflict there. Assume a lockfile audit is still required, and that fos-rest-bundle interop may pin you back.
  • Abandonment — unresolved. One release after roughly two years, described in six words with no changelog detail, no migration notes, and no linked PRs is not a maintenance cadence. It is evidence that someone needed it once. Still no security policy, no advisory history, no triage.
  • Thin value — unchanged. The "extra features" are still a handful of listeners/annotations over FOSRestBundle, still replicable in Laravel with a few dozen lines of middleware.

Key questions a TPM must force before any spike:

  1. What capability are we actually buying? (Header-based API versioning? Content negotiation? Response/link headers? Exception normalisation?) Name it precisely — the answer almost certainly maps to a first-class Laravel primitive.
  2. Does v4.0.0 drop Symfony 4/5, and does it support Symfony 7? The release note doesn't say. If we operate a Symfony service on 4.4/5.x, this may be a forced-upgrade event, not a gift — and if Laravel 11 is in scope, SF6-only may still conflict.
  3. Do we operate a Symfony service where this legitimately belongs? If yes, evaluate it there and keep Laravel out of it.
  4. Is the capability already covered? Laravel API Resources, Response macros, route prefixes and standard middleware cover most of this surface.
  5. Who owns the fork? If the answer is "nobody yet," the decision is already made.
  6. Does one terse release change our confidence in the maintainer's responsiveness? It should not. Ask what the support SLA is — the answer remains "none."

Verdict: reject for a Laravel stack — unchanged. v4.0.0 removes a dependency-resolution headache, which makes an unnecessary thing easier to install. It does not create a Laravel integration path, does not establish maintenance, and does not make a native implementation less attractive. Composite score 0.599, opportunity 27.21, zero dependents still describes a low-signal, low-leverage dependency. The correct TPM action remains: redirect the request from "integrate this package" to "reimplement the capability natively."

Integration Approach

Stack fit. Natural home: Symfony 6.x + FOSRestBundle 3.x. Laravel 9/10/11: not a fit — do not add this to a Laravel composer.json, even though v4.0.0 makes Composer complain less.

Capability mapping (build, don't adopt). Unchanged by the release. Translate intent into Laravel idioms rather than porting Symfony listeners:

Bundle-style capability Laravel-native equivalent Effort
Accept-header / media-type negotiation Middleware inspecting Accept, setting Content-Type ~1 day
API versioning via Accept: …;version=N Middleware parsing the version param + Route::prefix('v{n}') or header-driven resolver 1–2 days
Response/link header decoration Response::macro() or a terminating middleware < 1 day
Serialisation shaping Eloquent API Resources / JsonResource standard practice
Exception → HTTP mapping Handler::renderable() / withExceptions() < 1 day

Migration path. Unchanged as a plan; v4.0.0 only alters the compatibility precondition. If the team is coming from a Symfony service that used this bundle: (1) inventory the exact behaviours in use by reading listener configuration, not the docs; (2) write contract tests against current HTTP responses (status, headers, body shape); (3) implement the middleware equivalents in Laravel; (4) diff against the contract tests. Budget one sprint including tests, versus an open-ended dual-runtime experiment.

Compatibility — the one materially revised item. v4.0.0 shifts the constraint window from Symfony 4/5-era to Symfony 6. Practical consequences:

  • Laravel 10 — conflict risk on symfony/* components drops substantially. The blocker is now purely architectural.
  • Laravel 11 — uncertain; Symfony 7 components may still collide with an SF6-only constraint set. Verify before assuming the release helps us at all.
  • Existing Symfony services — a 4.0.0 major likely drops SF4/5 support. Any internal Symfony 4.4 service using this bundle is now on an unsupported pin. That is a migration task to schedule, not a free upgrade.
  • Upstream interop — fos-rest-bundle version coupling is still the real constraint and was not addressed in the note.
  • If adoption were ever chosen: pinned fork under the org namespace (our-org/fos-rest-extra-bundle) with a documented patch policy. Do not rely on Packagist resolution remaining stable.

Sequencing.

  1. Capability audit — write down the exact behaviours required, with example requests/responses.
  2. Build-vs-adopt decision record; default to build. A version bump is not new evidence for adopt — re-run the decision only if a capability changed.
  3. New: check whether any internal Symfony service is pinned to this bundle and is affected by the 4.0.0 break. Treat that as a separate, scheduled upgrade with its own risk.
  4. If a Symfony service exists, scope the change there and keep it out of the Laravel codebase.
  5. If forking is chosen, fork + pin + add CI contract tests before any feature work.
  6. Ship behind a feature flag; compare responses in staging.

Operational Impact

Maintenance. Still you are the maintainer from day one. The v4.0.0 release is a single compatibility commit after a roughly two-year gap, with a one-line note and no changelog, deprecation guidance, or upgrade documentation. One release does not constitute a support cadence — it constitutes evidence that someone, once, needed Symfony 6. One star and zero dependents still mean no downstream pressure to fix anything and no community patch stream. The permanent-tax argument is unchanged; the tax is now merely payable against a slightly newer baseline.

Support. No vendor SLA, no issue triage, no documented upgrade guides. The 4.0.0 release is itself an example of the problem: a breaking major version shipped with no migration note, so you must read the diff to learn what broke. Debugging means reading source. Escalation is "email the original authors and hope." For a production API surface, still unacceptable.

Scaling. Runtime cost remains negligible — request-scoped listeners, not a throughput concern. The scaling risk remains organisational: every additional Laravel service inherits the dual-runtime complexity, and every Symfony minor bump becomes a project. v4.0.0 buys exactly one such bump of headroom.

Failure modes to plan for:

  • Composer resolution failure on Laravel 11 / Symfony 7 upgrades — lower probability than before, still the most likely operational break.
  • New: an internal Symfony 4/5 service silently left on an unsupported major after the 4.0.0 break, with no deprecation notice to flag it.
  • Silent behavioural drift in format negotiation after a transitive Symfony patch bump — no upstream tests to catch it.
  • Listener-ordering conflicts with other bundles/middleware producing wrong status codes or Content-Type on edge-case requests.
  • Unpatched CVEs in the abandoned transitive dependency tree; no security advisories will ever be filed.
  • Knowledge concentration: one engineer understands the dual-container wiring, then leaves.

Ramp-up. Unchanged. For a Symfony-fluent engineer: hours. For a Laravel-only team: effectively a research project in a framework they don't use — a poor allocation of senior time. The Laravel-native middleware alternative is readable by any mid-level Laravel developer on day one, which remains a strong operational argument.

Recommendation. Do not adopt. The v4.0.0 release lowers the installation cost of a thing we should not install, and raises a separate housekeeping item if any internal Symfony service depends on the pre-4.0 line. Convert the requirement into a Laravel-native middleware + API Resources implementation, own it in-house, and revisit only if the organisation standardises on Symfony for the relevant service boundary.

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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource