outl1ne/nova-detached-filters
Nova Detached Filters lets you pull Laravel Nova filters out of the default filter dropdown and render them detached elsewhere on the page, keeping frequently used filters visible and one click away for faster resource browsing.
Architecture fit This package occupies the thinnest possible layer of a Laravel Nova application: it takes filters that Nova already renders inside its filter dropdown and re-renders chosen ones as standalone panels on the resource index toolbar. There is no migration, no schema change, no new route, no persistence, and no alteration to filter query logic — the filters continue to execute exactly as before. For a TPM that classification matters more than the feature itself: this is an internal admin-ergonomics change, fundable and scopeable independently of the customer-facing roadmap, with a blast radius confined to staff operators. A failure degrades an internal convenience, not a customer transaction.
The trade-off to internalize is that this is a presentation adapter bolted onto Nova's proprietary filter internals. Nova is closed-source and commercially versioned on its own cadence; anything hooking its filter menu or index toolbar inherits coupling to code the team cannot read at review time and does not control. That is acceptable for a convenience layer with a documented exit, and unacceptable as something the business becomes structurally dependent on.
Integration feasibility
High, conditional on the team already standardizing on Laravel Nova 4.x/5.x (Vue 3). Adoption is a composer require with an auto-discovered service provider plus a small per-resource change — a trait, base-class override, or filter flag. No consumer build step, no asset pipeline work, no data migration. A competent backend developer completes a spike inside a day, which means the decision cost dominates the implementation cost. The real feasibility risk is dependency governance, not technical difficulty: a single-maintainer MIT package at ~63 stars with zero listed dependents should be treated as a pinned experiment with a fork plan, not an adopted platform dependency.
Technical risk
Key questions to resolve
composer.json?Stack fit Target: Laravel 10/11, PHP 8.1+, Nova 4.x/5.x. Outside Nova — Filament, plain Blade, an in-house React admin — the package is inert and should not be evaluated at all. Within Nova it is a low-cost lever improving a daily-use internal product without touching domain code, which is exactly the profile that fits an ops-tooling line item.
Migration path Adopt per-resource and incrementally, never globally on day one:
Rollback is a deleted trait/flag plus one Composer line — demonstrable inside a sprint. That reversibility is the core of the business case and should be stated explicitly in the approval request.
Compatibility
Pin the package version and an explicit Nova constraint together so an incidental Nova bump cannot silently orphan it. Add a mandatory line to the Nova upgrade runbook: re-verify detached filters after any Nova version change. Pre-check overlap with every other index-toolbar-modifying dependency. Confirm asset-publish behavior (nova:publish / vendor:publish) is documented, since stale published assets are where this class of package typically breaks first and most confusingly.
Sequencing
Maintenance Low code cost, moderate dependency-maintenance cost. Realistically a few hours per quarter for one named backend developer to review upstream activity and re-validate after Nova releases. Set a standing trigger: if upstream is quiet across two Nova majors, fork and vendor internally — measurable in half a day at this code volume. The dangerous pattern is not the maintenance itself but the absence of a named owner when a Nova upgrade lands.
Support Community-only. GitHub issues, no SLA, no vendor relationship. At ~63 stars with zero listed dependents, assume we are near the front of the queue for any bug and that triage is our problem. The mitigation is shallow integration plus documented removal, not negotiation or warranty. State this plainly to stakeholders so nobody later mistakes it for a supported vendor component.
Scaling Runtime cost is negligible — detached filters execute identical queries to their dropdown equivalents. The real scaling risk is behavioral: always-visible controls invite always-on broad filters (unbounded date ranges, "all statuses") firing on every index load against large tables, and they consume horizontal toolbar space. Enforce two guardrails: a query-cost review for any promoted filter, and a cap of ~2–3 detached filters per resource to preserve layout on narrower viewports.
Failure modes to plan for
Ramp-up Essentially zero for backend developers — the integration is a trait or flag plus Composer. The ramp-up cost that matters is organizational: establishing the owner, the upgrade-runbook line, and the per-resource convention so the change does not quietly rot into an untracked dependency. Budget a short review cycle for that governance work; it is larger than the code change and is what keeps a 63-star single-maintainer package from becoming an unowned liability.
How can I help you explore Laravel packages today?