fabioguin/livewire-searchable-select
fabioguin/livewire-searchable-select adds a Livewire-powered searchable select component to Laravel apps, letting users filter long option lists as they type. It simplifies building responsive, searchable dropdowns in Blade/Livewire forms and improves UX when choosing from large datasets.
Feature decisions this package informs:
composer require fabioguin/livewire-searchable-select:^2.0.1) removes a classic multi-day "make the select feel good" task from estimates. Use it as a planning reference point when sizing admin/settings/CRUD surfaces where searchable selects appear 5–20 times.Roadmap-level decisions:
$wire.searchTerm directly in the x-model binding, respecting isSelected state on click, automatic dropdown closure). No breaking changes, no deprecations, no new capabilities. The major-version marker (^2.0.1) does imply a v1→v2 migration exists; if the codebase is still on v1, that migration is a separate, unrelated piece of work and should be scoped by engineering, not inferred from these notes.Adopt when:
x-model bound to $wire.searchTerm) confirm the component is tightly coupled to Livewire's reactive property model — it is not framework-agnostic.Look elsewhere when:
searchTerm sync implies the search term is a Livewire property; if the option list is thousands of records, confirm whether the package supports server-side filtering before committing — the release notes don't establish this. If it doesn't, a dedicated combobox with async search is the better fit.Practical evaluation gates before adoption (not answerable from release notes alone): check the repo's test suite and CI status, open-issue response time, latest commit date, Livewire version constraint in composer.json, and whether the styling is overridable without patching vendor code. Do a one-day spike against your actual Laravel/Livewire versions.
Upgrade guidance for existing adopters: v2.0.1 is a safe patch upgrade — no breaking changes or deprecations. The behavioral changes are user-visible improvements (dropdown now closes and resets after selection; clicking an input with an active selection no longer clears the search term). Any tests asserting the old dropdown-stays-open or search-term-resets-on-click behavior will need updating; flag that to QA as expected churn, not a regression.
For executives — the 30-second version: "Every form that asks someone to pick a person, customer, or record from a long list needs a searchable dropdown. We've found a small, actively maintained open-source component that gives us this in an afternoon instead of a sprint, at zero license cost. The latest release is a bug-fix patch that makes the dropdown behave the way users expect — it closes after you pick something and doesn't wipe your search when you click back in. There's no migration work and no cost. The trade-offs are that it's maintained by a single author and it doesn't yet have documented accessibility certification, so we'd use it on internal and admin surfaces first and audit before it goes anywhere customer-facing."
For engineering:
"This is Livewire + Alpine — a drop-in composer require fabioguin/livewire-searchable-select:^2.0.1. v2.0.1 is patch-only: no breaking changes, no deprecations, no new API. Internally it now binds x-model directly to $wire.searchTerm, respects isSelected on click so an active selection isn't cleared, and closes/resets the dropdown after selection. Saves us building and then maintaining a stateful combobox. What I need from you before sign-off: confirm the Livewire version constraint matches ours, confirm the styling is overridable without patching vendor code, tell me whether searchTerm filtering is client-side only (that determines our ceiling on list size), and tell me your read on the test suite and issue activity. Also: if we're still on the 1.x line, scope the v2 migration separately — that's not covered by this patch."
For design/QA: "Two intentional behavior changes to test against rather than file as bugs: the dropdown now auto-closes after a selection and resets its state, and clicking into the input while a value is selected no longer clears the search term. Worth a pass on keyboard flow and screen-reader behavior since that's our open question with this component."
How can I help you explore Laravel packages today?