mezcalito/ux-search
mezcalito/ux-search adds a polished search experience to Laravel apps, with model indexing, customizable filters, and reusable UI components for search inputs and result lists. It helps you ship fast, relevant, typo-tolerant results without building search plumbing from scratch.
mezcalito/ux-search is a Symfony UX package. It will not drop into a Laravel app. The real decision it informs is: for our Symfony services, do we standardize on this for search UI, or hand-roll a Blade/Livewire equivalent for Laravel services? Treat it as a Symfony-only candidate and keep the Laravel search story on a separate track.Consider it when:
Look elsewhere when:
Diligence checklist before adoption: confirm compatibility with your exact Symfony and Doctrine versions, inspect the test suite and CI, verify the Live Component behavior under concurrent filter changes, check how facet counts are computed (N+1 query risk), and identify a named internal owner with a fork-and-patch plan.
0.7.0 review note: the release is a single "fix/hardening and quality" change set (PR #52) with no stated new features, breaking changes, or deprecations. It does not change the adoption recommendation. It does two things: (1) it is mild evidence of an actively maintained project rather than an abandoned one, which softens — but does not remove — the single-maintainer risk; and (2) it is worth reading the actual PR diff during the spike, because "hardening" in a 0.x package is exactly where silent behavior changes tend to hide, particularly around filter state and query construction. Confirm whether any of the hardening touches facet-count query generation, since that was the top technical risk identified.
For executives (one paragraph):
Faceted search — the filter sidebar and result grid users expect on any catalog — is expensive to build and easy to get wrong. mezcalito/ux-search is an MIT-licensed open-source component that provides that layer for our Symfony applications, letting us ship filtering in weeks rather than quarters and defer a paid search platform until we have evidence we need one. The trade-off is maturity: it's a small, single-maintainer project with negligible adoption, though it is still being actively maintained (a hardening release shipped as 0.7.0). We therefore recommend a time-boxed spike on one low-risk surface rather than a platform-wide commitment. Cost is zero in license fees; the real investment is a few days of engineering evaluation and a named owner.
For engineering leadership: It's a Symfony UX package — Twig components plus Live Components/Stimulus for the interactive filter behavior — sitting on top of Doctrine. That means no new infrastructure, no new language, no JS build changes beyond what Symfony UX already requires. It fits our existing deployment and on-call model. Risks to price in: tiny community (66 stars, 0 dependents), so treat upstream as a starting point, not a dependency we can wait on; potential query-count blowups from facet aggregation; version-coupling to Symfony UX, which moves fast; and a pre-1.0 version line where minor releases can change behavior. The recent 0.7.0 is a hardening rather than a feature release, which is directionally reassuring, but it's one PR — not a stability guarantee. Mitigation: vendor a pinned copy or fork, review the 0.7.0 diff for filter/query behavior changes, write integration tests around our filter taxonomy, and set an explicit review date to re-evaluate against Meilisearch or a hand-rolled implementation.
Ask: approve a 3–5 day spike on one internal, non-revenue-critical search surface, pinning to the current release; go/no-go based on query performance against realistic data volume, a maintainability read of the codebase (including the 0.7.0 hardening diff), and upstream responsiveness to an issue or PR.
How can I help you explore Laravel packages today?