torfs-ict/ea-sortable-bundle
A Symfony bundle that adds drag-and-drop sorting to EasyAdmin listings, letting admins reorder Doctrine entities through a sortable backend interface with minimal configuration and no custom code.
Architecture fit. torfs-ict/ea-sortable-bundle is a Symfony bundle, not a Laravel package. Its name and upstream namespace indicate it hooks into EasyAdmin (the Symfony admin generator) to provide drag-and-drop ordering of Doctrine entities via a persisted position column. There is no Illuminate\Support\ServiceProvider, no Laravel package auto-discovery entry, no published config/migration stubs, and no Eloquent integration. On a Laravel codebase the package is not installable in any meaningful sense — it can be pulled as a Composer dependency, but its bundle class will never be registered and its behaviour will never execute. Architecture fit is therefore effectively zero for direct adoption; the only realistic value is as a reference implementation for the sortable-position pattern (position column + reorder endpoint + SortableJS front end).
Integration feasibility. Direct: not feasible. Indirect (porting the pattern into Laravel) is feasible and is a small, well-understood piece of work — a position integer column, a reorder controller action accepting an ordered ID list, and a transaction that rewrites positions. Effort is measured in days, not weeks, but it is our code, not the vendor's, so the dependency buys us only design guidance.
Technical risk. Several compounding risks:
compare/1.0.0...1.0.1 link. We cannot determine from the release metadata whether this is a bug fix, a dependency bump, a security patch, or a CI-only change. Any assessment of the delta is speculation until the diff and CHANGELOG.md are read.torfs-ict is a retailer's ICT org publishing an internal tool. Expect low release cadence, limited issue triage, and a high bus factor.Key questions.
CHANGELOG.md — do not accept the release page as the record.spatie/laravel-sortable, spatie/eloquent-sortable) that removes the need to port at all?Stack fit. Mismatch. Target stack is Laravel/PHP with Eloquent; the package assumes Symfony DI, Doctrine ORM, Twig, and EasyAdmin routing. There is no adapter layer worth writing — bridging Doctrine to Eloquent for a feature this small is strictly more work than reimplementing it.
Migration path. There is nothing to migrate from or to; this is a pattern adoption, not a package adoption:
position (or sort_order) unsigned integer column plus an index on (parent_id, position) if ordering is scoped.POST /{resource}/reorder endpoint accepting an ordered array of IDs; validate membership and authorization before writing.SortableJS on the front end, mirroring what the bundle does with EasyAdmin's assets.spatie/eloquent-sortable, which implements exactly this for Eloquent and is actively maintained — this is the recommended substitute, and it makes the Symfony bundle redundant.Compatibility. Unknown and unverifiable from the release notes. If the Symfony path is ever revisited, compatibility must be established against the pinned EasyAdmin minor, not the package's own semver alone.
Sequencing.
spatie/eloquent-sortable.Maintenance. Adopting the bundle externally means inheriting a dependency whose release communication is a bare changelog link. We would be unable to assess upgrade risk without reading diffs manually — an ongoing tax on every patch release, disproportionate to the feature's value. If we port the pattern instead, maintenance is ours and trivially small.
Support. No commercial support, no SLA, no visible security policy. Issue response times should be assumed to be best-effort and volunteer-adjacent.
Scaling. Sorting features have a predictable scaling profile worth flagging regardless of implementation: a drag-and-drop reorder rewrites N rows, so cost grows linearly with collection size and holds row locks for the transaction duration. For collections in the low hundreds this is negligible; beyond that, prefer sparse or fractional ordering so a single drag writes O(1) rows. Concurrent reorders from two admin sessions are the classic failure mode and require either optimistic locking or last-write-wins acceptance — decide explicitly.
Failure modes.
Ramp-up. Negligible for the pattern; significant for the Symfony bundle if the team is Laravel-only. Realistically the ramp-up cost exceeds the cost of implementing sorting directly, which is the decisive operational argument against adoption.
Verdict on 1.0.1. The patch release carries no actionable information, so it does not change any conclusion — but it does reinforce the governance concern: a dependency that publishes no release notes is a dependency we cannot safely track. Recommendation stands as do not adopt; reuse the pattern or use spatie/eloquent-sortable, and re-evaluate only if the 1.0.1 diff reveals a security fix relevant to a Symfony service we actually run.
How can I help you explore Laravel packages today?