eolica/nova-pill-filter
Nova Pill Filter adds a pill-style filter to Laravel Nova resource indexes, letting users toggle predefined options with a single click instead of opening a dropdown. Lightweight and quick to register in your Nova resource.
Architecture fit. The package occupies a narrow, well-defined extension point in Laravel Nova: a custom filter that renders as clickable pills instead of Nova’s default dropdown. Architecturally this is low-coupling, UI-only, and has no database schema impact, no background jobs, and no service integrations. For a TPM, that means the blast radius is small and the pattern is easy to reason about. The value is not the package as a dependency but the reference implementation of a Nova filter view — and because it is MIT-licensed, the realistic leverage path is to fork or reimplement, not to consume it as-is.
Integration feasibility. Moderate for a spike, low for production adoption without a fork. The last release was October 2020, which places it in the Nova 2/3, Vue 2, PHP 7.x/8.0 era. Nova 4+ moved to Vue 3 and a materially different asset and filter-rendering pipeline, so the shipped front-end is likely incompatible with a current Nova install even if the PHP filter class still composes. Feasibility hinges on inspecting composer.json for the Nova constraint, whether compiled assets are committed or built via npm, and whether the filter relies on Nova internals that have since changed.
Technical risk. High, concentrated in abandonment rather than runtime behavior. The repository is archived, has 1 star, 0 dependents, and no upstream maintainer. There is no security exposure of consequence in a UI-only filter, but there is dependency rot (Vue 2 is end-of-life), no test signal, and no upgrade path. The most dangerous failure is not a crash: it is a filter that silently renders but does not apply, causing users to believe they are viewing a filtered dataset when they are seeing all records.
Key questions.
apply(Request, Builder, $value) contract, and is that contract stable in our Nova version?Stack fit. Laravel + Nova with a Vue-based custom filter view. Fits cleanly if we are on Nova 3 or earlier; requires a port if we are on Nova 4/5. The PHP side is likely a small Filter subclass and a service provider that registers a view or asset; the front-end is the part that carries version risk.
Migration path. Treat the package as a source reference, not a long-term Composer dependency. Preferred path: vendor the filter into the application (for example under nova-components/ or app/Nova/Filters) with MIT attribution, or reimplement the same UX as a first-party custom filter using our current Nova version’s conventions. If we must install it initially, pin the exact version and isolate it to a single resource so removal is trivial.
Compatibility. Validate against the actual Nova version before any estimate is committed. Check the Composer constraint, whether vendor/ assets are published, and whether the filter view uses Vue 2 syntax or Nova 3-era mixins. Assume the PHP filter class is portable and the Vue component is not. Budget for rewriting the view against Nova’s current asset pipeline and testing the filter’s applied-query behavior, not just its rendering.
Sequencing.
Maintenance. High-touch if forked and kept current; frozen and fragile if consumed as-is. The ongoing cost is small in absolute terms — a single filter view and a small PHP class — but it is recurring and must be assigned. Without an owner, the component will quietly drift out of compatibility at the next Nova upgrade.
Support. No upstream support. The repository is archived, so issues and pull requests will not be addressed. MIT licensing permits a fork, which is the only durable support model. Internal documentation should capture the Nova version, the fork point, and the attribution notice.
Scaling. Runtime cost is negligible: the filter is UI-only and does not add queries beyond whatever the filter’s apply method produces. The scaling concern is query performance, not package performance. If pill values map to unindexed columns or large whereIn sets, filtering can become slow on large Nova resources; that is an application concern to validate during the pilot.
Failure modes.
Ramp-up. Low for a Laravel developer familiar with Nova custom filters: the PHP side is a day or less to understand. The front-end port to a current Nova/Vue 3 pipeline is the real effort — roughly one to two weeks including testing, depending on how much of the original view can be reused. Recommend adopting only if the pill UX is a confirmed product requirement; otherwise use Nova’s native filter and avoid the ownership burden.
How can I help you explore Laravel packages today?