freema/react-admin-api-bundle
Symfony bundle that adds a react-admin compatible API backend to your app, handling dataprovider requests, filters, pagination and Doctrine ORM resources so you can connect a react-admin frontend with minimal custom code.
freema/react-admin-api-bundle is a Symfony bundle, not a Laravel package — there is no service provider, no Eloquent integration, and no config/*.php to publish. On a Laravel codebase you are either (a) reading it for the trait patterns, or (b) running it against a Symfony service in the same estate. Do not plan a Laravel sprint around it without confirming which of those you are doing.composer require freema/react-admin-api-bundle:^1.3.0. The 1.2.x line carries a delete bug (see Gotchas) — do not start on it.UPGRADING.md at the 1.3.0 tag before anything else. It is the only migration surface the maintainers publish, and the release notes point at it rather than repeating contents.DeleteTrait, SoftDeleteTrait, then the list traits. These are the actual API contract — they define the response shapes (DeleteDataResult) and the query-parameter handling (sorting, filtering) that react-admin's dataProvider expects.<Resource> at it, and verify list, sort, and delete round-trip before adding a second entity. The traits are the unit of reuse; adopt them one resource at a time.uses the relevant traits. Keep your own business logic in a service the controller calls, so a future trait signature change (like the SortDirection shift in 1.3.0) is a one-line controller edit rather than a rewrite.SortDirection enum when the installed doctrine/orm accepts it and fall back to the string on older versions. Do not hand-roll orderBy() from $_GET['sort'] in your own controllers — you will reintroduce the deprecation the release just fixed, and you lose the version negotiation.DeleteDataResult now returns success, or 400 for an unknown id — matching DeleteTrait. Model this in your client: a 400 means "already gone / never existed", not "server broke". react-admin will surface it as an error notification, so map it deliberately if your UI should treat it as idempotent.SoftDeleteTrait::delete() passed the entity id where DeleteDataResult expects a status, throwing a TypeError after the entity had already been soft-deleted or removed. Every failed call was a half-applied mutation. If you ran 1.2.x in any environment, audit delete endpoints and logs for TypeErrors and check whether retries or queue consumers double-fired deletes on records that were already gone.orderBy( with a literal 'ASC'/'DESC'.vendor/freema/react-admin-api-bundle has no CI config, no composer.lock, no dev dependencies. Do not try to run the upstream suite from vendor to reproduce a bug — go to the GitHub tag instead.DeleteTrait and SoftDeleteTrait are now documented as answering identically. If a future release drifts them apart, that is a client-visible breaking change even in a patch — worth a quick regression test on both.How can I help you explore Laravel packages today?