digital-creative/resource-navigation-tab
Resource Navigation Tab for Laravel Nova lets you group related resources into customizable tabs in the sidebar, keeping admin navigation tidy. Configure tabs, labels, and ordering directly in your Nova resources for a cleaner, more organized backend experience.
Architecture fit
composer.json and all secondary write-ups describe a Filament plugin (2.1.x line) that groups form fields into tabs. These are different products with different APIs. A TPM should not fund a spike until someone has read composer.json and src/ and confirmed the filament/filament constraint and plugin entry point. Two minutes of verification prevents an entire misdirected evaluation.Integration feasibility
composer require, one plugin registration, per-resource tab grouping. Realistic effort for a pilot is hours, not days, for an engineer already fluent in the panel.>=2.1.5 and reject floating 2.x or ^2.1.0. The 2.1.5 patch fixes a HasOne field failing to render on initial page load — that is a blank relationship field on a data-entry form, i.e. a correctness hazard, not a cosmetic quirk. Any version below it is disqualified for production use.composer.lock looks correct. This is a known, documented trap and belongs in the acceptance criteria, not in tribal knowledge.Tabs component already solve this? Filament ships tab/panel primitives. If native tabs deliver the grouping we need, this package is a dependency for zero marginal value. This comparison can and should end the evaluation in the first hour. Everything downstream is conditional on it failing.Technical risk
KeyValue field types inside tabs are unverified until we verify them. The package's test matrix is the weak link, and it fails in whichever resource we happen to use that field type in.visible(), reactive() with a dependent field in another tab) are an untested interaction class. Must be walked explicitly against the field patterns our resources actually use.Key questions for the technical owner
Stack fit
Migration path
2.1.0–2.1.4 install is a straight patch; do it before evaluating anything else, or the pilot will burn an afternoon debugging a phantom blank relationship field.Compatibility
KeyValue, conditional/reactive fields — and walk every one of them inside a tab. Treat any unverified type as unsupported until proven otherwise.Sequencing
composer.json and src/. Confirm Filament vs. Nova and the version constraint.Tabs covers the need. If it does, close the evaluation and bank the finding.composer require ...:^2.1.5; confirm composer.lock and confirm the published asset matches the tag.HasOne and one BelongsTo. Group it Basics / Relations / Meta.2.1.5 defect was a mount-time bug; warm navigation will not reproduce the failure class we are guarding against.Pilot design discipline
HasOne/HasMany/BelongsTo is the least-tested path; a dedicated tab makes breakage obvious in review and diagnosable in production.Maintenance
Tabs fallback with a one-day time-box.Support
Scaling
Failure modes
| Failure | Symptom | Mitigation |
|---|---|---|
Blank HasOne field on first load |
Relationship data silently invisible on cold mount | Pin >=2.1.5; verify published asset; cold-load smoke test |
| Stale published asset | Bug present despite correct composer.lock |
Diff compiled asset against tag before sign-off |
| Validation error in hidden tab | Generic submit failure, no pointer to the offending field | Explicit pilot test; shippable-blocking if unfixable |
| Cross-tab reactive/conditional field | Field evaluates incorrectly when its tab isn't mounted | Explicit test per field pattern in use |
| Unverified field type | Rendering or save failure in a tab | Field-type checklist re-walked each framework upgrade |
| Maintainer abandonment | Package doesn't support a new panel major; admin breaks at render time | Quarterly review; fork contingency pre-agreed |
| Convention drift | Inconsistent tab schemes across resources | Canonical snippet in docs; one resource per PR |
Ramp-up
Recommendation
Approve a contained, single-resource pilot with a defined exit gate and a pre-agreed one-day fallback — not a standard, and not a roadmap line item. Gates: framework confirmed → native tabs proven insufficient → pinned at >=2.1.5 with verified asset → cold-load, hidden-tab validation, and reactive-field tests pass. This is back-office hygiene: cheap, visible, fully reversible, and explicitly not a strategic bet. It should never appear in a roadmap narrative as differentiation; framing it as strategy invites scrutiny it cannot survive.
How can I help you explore Laravel packages today?