tanmuhittin/nova-collapsible-groups
Laravel Nova package that organizes resource form fields into collapsible groups, turning long, complex forms into tidy sections users can expand and collapse. Configure group labels, default open or closed state, and styling with standard Nova fields—no custom components required.
Architecture fit — poor for anything current. nova-collapsible-groups is a Nova 2-era theme patch. Its mechanism is almost certainly asset injection (Nova::script() / Nova::style() in a service provider, or published overrides of public/vendor/nova/app.{js,css}) that adds collapse/expand behaviour to the sidebar navigation groups rendered by Nova's core Vue theme. That architecture is tightly coupled to Nova 2's compiled, non-modular front end. Nova 3 reworked the asset pipeline; Nova 4+ rewrote the UI on Vue 3 + Inertia with a first-party menu API and, critically, native collapsible navigation groups. The package's entire reason for existing was absorbed into the product it patches.
Integration feasibility — mechanically trivial, strategically pointless. composer require tanmuhittin/nova-collapsible-groups plus php artisan vendor:publish is a five-minute task on a Nova 2 install. The problem is not effort, it is target: the package has one meaningful consumer profile (a Nova 2.x application that intends to stay on Nova 2.x), and that profile is itself a liability.
Technical risk — high, concentrated in three places.
| Risk | Detail | Severity |
|---|---|---|
| Abandonment | Last release 2019-03-18; 23 stars, 0 dependents, no issue triage for ~6 years | High |
| Version drift | No evidence of Nova/Laravel/PHP constraints; installs on modern stacks and fails silently or white-screens the admin | High |
| Asset clobbering | Theme-level overrides are destroyed by nova:publish, Nova patch upgrades, or container rebuilds that re-fetch vendor assets |
Medium |
| Blast radius | Nova 2's admin is a single-page Vue app; an uncaught JS error in injected theme code can blank the entire control panel, not just the sidebar | High |
| Supply chain | Raw JS injected into an authenticated admin surface from an unmaintained repo with no security posture | Medium |
Key questions before any decision:
Recommendation: reject as a dependency. If a legacy Nova 2 install genuinely needs this behaviour, vendor the logic into first-party code rather than taking a dependency on an abandoned theme patch.
Stack fit. Package targets ~Laravel 5.6–5.8 / PHP 7.1–7.3 / Nova 2.x. Modern Laravel (10/11/12) + PHP 8.2+ + Nova 4/5 is outside its design envelope. Treat it as incompatible until proven otherwise by a spike, not the reverse.
Migration path.
Compatibility gates. Before any pilot, verify in a throwaway environment: Composer resolves without --ignore-platform-reqs; assets publish to the expected path; sidebar renders on the Nova dashboard, a resource index, and a detail page; no console errors; behaviour survives nova:publish and a composer update of laravel/nova.
Sequencing (if pursued at all):
Maintenance. Effectively 100% ours. No upstream commits, no issue responses, no PHP/Nova compatibility releases. Budget for re-validation on every Nova upgrade, every PHP minor, and every admin asset rebuild. This is a permanent small tax for a small cosmetic win.
Support. No vendor. Support requests route to the internal team, and the failure symptom ("the admin panel is blank") is high-urgency by default, so a cosmetic package inherits P1 expectations it cannot justify.
Scaling. Negligible runtime cost — it is client-side DOM toggling on a menu that is already rendered. It does not touch queries, queues, or request handling. The scaling concern is organisational, not technical: the sidebar grows as the app grows, which is precisely why the native solution keeps improving and this one does not.
Failure modes to instrument.
composer install during an emergency deploy — the worst possible time to discover a dead dependency.Ramp-up. Low skill cost (any Laravel developer understands Nova asset registration) but non-zero context cost: whoever owns it must understand Nova's theming internals well enough to debug breakage after an upgrade, and that knowledge expires with Nova 2.
Bottom line. This package solves a problem the framework now solves natively, on a version of the framework almost nobody runs, with no maintenance since 2019 and zero downstream validation. The only defensible use is a short-lived fork inside a Nova 2 estate that is explicitly frozen — and even there, the honest answer is a first-party snippet, not a dependency.
How can I help you explore Laravel packages today?