silverbackis/api-component-bundle
A Symfony bundle for building modular JSON APIs with reusable components. It helps organize endpoints, handle requests and responses, and keep API code clean, testable, and easy to extend across your application.
component; assigning a group owner from inside that group returns a 422 on components. That turns a class of corrupt-data bugs (and a ComponentVoter infinite recursion) into a clean, client-facing validation error — a decision-enabler if your roadmap includes reordering, drag-and-drop nesting, or delegated group ownership.2.0.0-alpha.30. Plan integration as a spike/behind-a-flag item, not a committed Q-date dependency, until a stable 2.0 lands. Budget an upgrade window for the 1.x → 2.x boundary.ApiTestCase with in-memory SQLite per process, and both configs fail on Risky. This gives product a single, enforceable regression gate and one Codecov upload — useful when arguing for (or defending) release quality bars.component, components), the frontend can render precise, localized validation messages instead of generic 500s. Worth locking into the API contract docs before client teams build against it.Consider it when:
2.0.0-alpha.30 means API surface and behavior can still move between alphas; treat the version pin as a deliberate risk, not an accident.Look elsewhere when:
.30) signals the opposite; wait for a stable 2.0 tag or accept a support burden.ComponentVoter becomes a wrapper you must reconcile rather than a benefit.Immediate integration note: treat the self-nesting rejection as a client-visible behavior change. Audit any existing importers, bulk-move endpoints, or admin UI flows that could attempt a subtree re-parent and ensure they handle 422 on component / components gracefully.
For executives (one paragraph): This release hardens a content-structuring service we would otherwise have to build ourselves. It converts a class of silent data corruption — content nested inside itself, which could also crash our permission checks — into a clean validation error the UI can explain to users. In parallel, the project consolidated its entire test suite onto one modern framework and moved onto the current Symfony generation, which lowers our long-term maintenance and upgrade cost. The caveat is maturity: this is still an alpha (2.0.0-alpha.30), so I recommend a time-boxed evaluation spike rather than a committed delivery dependency until a stable 2.0 ships.
For engineering leads: Two things landed. (1) Integrity: cycle prevention is enforced at write time at any depth (published and draft components treated as a single node), returning 422 on component for self-containment and 422 on components when a group owner is set from inside the group; ComponentVoter no longer infinite-recurses on pre-existing cycles in the database — so expect to need a data-remediation pass if any cycles are live. (2) Tooling: Behat is removed; all features are PHPUnit functional tests on ApiTestCase with per-process in-memory SQLite, the debug-kernel group, and both configs failing on Risky. CI is PHPUnit-only with a single Codecov upload; assets and the golden scaffold moved to tests/Functional/assets and tests/Functional/Fixture/scaffolds. The test environment now resolves Symfony 8.1, no longer capped at 7.4, and symfony/yaml / symfony/translation are direct dev dependencies. Net: a stricter, faster, single-path test story — but any local Behat tooling, Gherkin fixtures, or CI jobs referencing features/ paths must be updated in the same change.
For product/design: Users can no longer accidentally drop a component into its own subtree — the API rejects it with a field-level error, so we should design the empty/invalid drop state and message rather than relying on a generic failure.
How can I help you explore Laravel packages today?