evercodelab/dependent-select-bundle
Symfony bundle for dependent select fields: dynamically load and update dropdown options based on another field’s selection, simplifying cascading forms with AJAX-backed choices.
Architecture fit. The first finding is a category mismatch that gates the entire evaluation: this is a Symfony bundle, not a Laravel package. Its integration surface is the Symfony Form component (AbstractType, form type extensions, PRE_SUBMIT/POST_SUBMIT event listeners or a custom DataTransformer) plus Symfony's bundle registration in config/bundles.php. Laravel has no bundle system, no Symfony Form component in its default stack, and no equivalent hook for a form type extension to inject dependent-field behavior. Installing it via Composer would technically resolve (it is a library), but there is no supported path to make it do anything inside a Laravel request lifecycle without effectively reimplementing the bundle's core logic. For a Laravel-first codebase, architecture fit is zero.
Integration feasibility. Even inside a Symfony application, feasibility is poor. The package shows zero stars, zero dependents, and a score of 0 — that is the signature of an abandoned artifact rather than a dormant but stable one. Typical bundles from this lineage pin symfony/symfony to 2.x/3.x era constraints and ship a jQuery-based front-end for the AJAX cascade. A modern Symfony 6/7 app cannot install it without constraint overrides, and the jQuery front-end would conflict with the asset pipeline (Webpack Encore / AssetMapper) and with CSP policies typical of current deployments. The realistic integration cost is "fork and rewrite," which is not integration.
Technical risk. High and largely unpriced:
Key questions for the requester:
Stack fit. For a Laravel stack — the framing of this request — the correct decision is reject and rebuild. Dependent selects in Laravel are a solved, low-cost problem with first-class options:
wire:model.live on the parent, computed child options) — closest conceptual analogue to the bundle, server-driven, no custom routing or JS.Each of these reproduces the bundle's value in well under a sprint, with code the team owns and can validate against Laravel's validation and authorization primitives.
Migration path. If a Symfony app genuinely exists: do not migrate to this bundle. Treat it as a reference implementation only — read its form-event handling to understand the intended semantics, then reimplement in the host app's native idiom (Symfony form events with a maintained EntityType and ChoiceType cascade, or a small Stimulus controller). If the bundle is already in production somewhere, the migration is off it, and the sequencing is: inventory the forms using it → identify the AJAX endpoints and their authorization assumptions → replace form type by form type behind the existing UI contract → delete the bundle and its route registrations.
Compatibility. Assume no compatibility with currently supported PHP or Symfony releases until proven otherwise. Verify with a hard gate before any spike: composer why-not against the target framework version, inspection of the composer.json constraint block, and a read of the JS asset for jQuery version assumptions. If any of those fail, close the evaluation — it is cheaper to fail here than in a sprint.
Sequencing. (1) Confirm stack and intent with the requester. (2) If Laravel: spike the Livewire or Alpine implementation against one real form, measure, then template it. (3) If Symfony legacy: same spike using native form events. (4) Only if a compelling, documented reason exists, fork with an explicit owner, a pinned constraint, and a dependency-update calendar. Do not sequence this package ahead of the native rebuild — the rebuild is cheaper and it is the artifact you keep.
Maintenance. Effectively none available. Zero stars and zero dependents mean no downstream users are absorbing upgrade work, no issue triage is happening, and there is no community to consult when behavior is surprising. Adopting this transfers 100% of maintenance to your team on day one, for a component whose only job is UI convenience — a poor trade.
Support. No vendor, no SLA, no security contact, no changelog cadence. In an incident, the team is reading source under pressure. For a form-field helper this is survivable; it is still an avoidable class of risk.
Scaling. The bundle itself does not scale concerns — dependent selects are low-QPS, cacheable, and trivially indexable. The real scaling question is organizational: every additional form built on an unmaintained dependency compounds the removal cost. The rebuild path (Livewire/Inertia) scales with the app's existing patterns at zero marginal dependency cost.
Failure modes to plan for:
Ramp-up. Near-zero learning curve if the team is a Symfony 2/3 shop still fluent in form events and jQuery — but that fluency is itself depreciating. For a Laravel team the ramp-up is a false economy: the time spent understanding a foreign, abandoned bundle exceeds the time to build the feature natively.
Recommendation. Do not adopt. The package is misaligned with the stated Laravel stack and carries abandonment risk disproportionate to the trivial value it provides. Allocate a short spike to the native implementation in the host framework's idiom, and use this bundle only as a semantic reference if a specific edge case needs clarifying.
How can I help you explore Laravel packages today?