Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Livewire Multiselect Laravel Package

bolyfci/livewire-multiselect

A Livewire multiselect component for Laravel that provides searchable dropdowns, tag-style selected items, and straightforward Blade integration, making it simple to build responsive multi-choice forms with server-side state and validation without custom JavaScript.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a server-driven form control for Livewire: a PHP component class plus a Blade view that binds a selected-values array back to a wire:model property. It fits the narrow case of a Laravel monolith or admin panel that is already Livewire-first and needs a multi-select in a form. It does not fit Inertia/Vue/React front ends, API-first services, or public-facing pages with strict performance or accessibility budgets without wrapping. Treat this as a presentation-layer dependency, not infrastructure — its blast radius is confined to form UX if adopted carefully.

Integration feasibility. Mechanically straightforward: composer require, service-provider auto-discovery on Laravel 5.5+, publish config/views/assets, drop the component into a Blade form. The real question is version alignment. The last release is February 2021, which places it in the Livewire 2 / Laravel 8 era. Livewire 3 (2023) rewrote the JavaScript layer, Alpine integration, wire:model semantics, and component registration, so a 2021 component is unlikely to work unmodified on a current stack.

Technical risk.

  • Unmaintained / bus factor 1. 19 stars, no release in over four years. Assume zero upstream responsiveness.
  • Provenance ambiguity. The Composer name (bolyfci/...) does not match the repository owner (ahmedabdel3al/...), which indicates a fork or namespace transfer. The upstream project may be more active, or this may be an orphaned copy — either way, ownership of fixes is unclear.
  • Ecosystem validation is nil. Zero dependents means no downstream projects have absorbed the compatibility cost for you.
  • Front-end coupling. It almost certainly wraps a third-party JS multiselect (Select2/Choices-style) either as a compiled vendor asset or via an npm build step. That library's own age and its interaction with Alpine (which Livewire 3 ships and controls) is a likely source of silent breakage.
  • Data volume. Server-rendered option lists scale linearly with the option set; without verified AJAX/lazy search, this degrades on large reference tables.
  • Security. Low surface overall, but confirm selected labels are escaped rather than rendered as raw HTML, and that the component does not bypass Livewire's request validation.

Key questions to answer before any commitment.

  1. Does it function on Livewire 3 and Laravel 11, or only 2.x/8–9? Is there a maintained upstream to fork from instead?
  2. Does it bundle compiled assets, or require an npm build in our pipeline?
  3. Does it support async option loading/pagination, or render all options server-side?
  4. How are selected values validated and serialized, and does it integrate with Laravel validation rules cleanly?
  5. What is the accessibility story (keyboard nav, ARIA) against our compliance bar?
  6. License and attribution obligations for the embedded JS library — MIT on the wrapper does not cover the vendored dependency.

Integration Approach

Stack fit. Adopt only if the target application is Laravel 8/9 with Livewire 2, or if we are prepared to own a fork. On Livewire 3 the realistic path is a fork-and-port, not a straight install.

Migration path. Two options, decided by the spike outcome: (a) install and pin as-is if it works on the current stack; (b) fork into an internal namespace, port the JS layer to Livewire 3's Alpine conventions, and carry it as first-party code. Option (b) is a genuine but bounded cost — the component is small enough that porting is usually cheaper than building equivalent functionality from scratch, but only if the wrapped JS library is also acceptable.

Compatibility. Pin the Livewire constraint explicitly in composer.json and resolve against the app's existing Livewire version before merging anything. Verify published assets survive the production build (npm run build / vendor:publish) and are not silently stale.

Sequencing.

  1. Read the source directly — it is small; the JS surface matters more than the PHP.
  2. Timebox a spike (roughly one developer-day) on a throwaway branch against the exact target stack, in a real form with real option counts.
  3. If it passes, pilot in a single low-risk internal admin form for one release cycle.
  4. Decide fork-versus-build based on pilot friction, then standardize or abandon.
  5. If adopted, commit the fork to internal source control and reference the VCS path in Composer — never depend on the public package in production without that escape hatch.

Operational Impact

Maintenance. Effectively zero upstream. Every future Laravel or Livewire upgrade becomes our problem. Budget for an internal fork with a named owner or do not adopt; an unowned third-party UI component that breaks on a framework upgrade is a recurring interrupt, not a one-time cost.

Support. No maintainer responsiveness, no issue triage, no documentation beyond a README. Debugging falls to whoever knows Livewire internals plus the wrapped JS library — a narrower skill set than the team average.

Scaling. Fine for tens to low hundreds of options in an admin form. Problematic for large reference datasets: payload size, render time, and DOM weight all grow with the option list unless async search is confirmed. Not a bottleneck for server throughput — it is a form-render and UX cliff.

Failure modes.

  • Silent breakage on a Livewire major upgrade (binding or lifecycle changes).
  • JavaScript double-initialization or Alpine conflict producing a dropdown that renders but does not sync.
  • Published assets drifting from package version across environments.
  • Validation drift — the UI allows selections the backend rule set rejects, or vice versa.
  • Unescaped label rendering if any option text is user-controlled.

Ramp-up. Low to use (hours): a developer who knows Livewire can wire it into a form quickly. High to own safely (days): porting, asset pipeline, upgrade testing, and accessibility remediation are real work that the 19-star, four-year-old release history does not signal.

Read. The 0.445 composite and 0.29 opportunity scores are consistent with the analysis: a small, workable component with no maintenance tailwind. Reasonable as a short-lived convenience inside a Livewire 2 codebase; a poor bet as a long-lived production dependency on a current stack unless someone is explicitly funded to fork it.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums