- How do I install shuvroroy/nova-tabs in a Laravel Nova application?
- Install it with Composer using composer require shuvroroy/nova-tabs, and pin the version explicitly (for example 1.1.1 or ~1.1.1) with the lock file committed. There is no config file to publish, no migration to run, and no service to register in most cases. The package registers a precompiled Vue bundle through Nova's asset API, so you do not need a custom frontend build step.
- Which Laravel Nova versions does nova-tabs support?
- Check the package's composer.json constraint against the Nova major you actually run before installing anything. The last release was 2023-11-15 and Nova's extension APIs move between majors, so do not assume compatibility from the README alone. Read vendor/shuvroroy/nova-tabs/src/ and confirm it matches your Nova version. Treat every Nova major upgrade as a gated change that requires regression testing of tabbed resources.
- How do I add tabs to a Nova resource form?
- You group fields inside a Tabs container and individual Tab children within your resource's fields() method, using method chaining to attach fields to each tab. The configuration is declarative and lives entirely in the Nova resource class, so there is no separate config file. Because the package is a presentational wrapper, it works alongside your existing Nova fields and panels without changing your data model.
- Why does my Nova form refuse to submit when a required field is in another tab?
- Validation errors are not routed to the tab that contains the offending field, so a required field hidden inside an inactive tab can make the form silently fail to submit. This is a known behavioral limitation rather than a bug you can configure around. The practical fix is to keep required fields in the first tab or otherwise visible, and to treat that placement as a product requirement for the resource. Test the failure path deliberately before shipping a tabbed form to admins.
- Does nova-tabs work with conditional fields such as dependsOn or hideWhen?
- Conditional field behavior is untested by the package maintainer and should be verified in your own install before relying on it. Add the conditional logic to a tabbed field on both the create and detail screens and confirm it still reacts correctly. If a conditional field can become hidden, also confirm it is not required, since hidden validation errors will block submission. Budget time for this regression pass as part of adoption.
- Does nova-tabs behave the same on Nova create and detail pages?
- Not necessarily, because Nova renders create and detail forms through different code paths. Always load both screens after installing and check the tab layout, field visibility, and submit behavior on each. It is common for one screen to work while the other shows a layout or spacing issue. Include both screens in any pilot and in every Nova upgrade regression pass.
- Why do my Nova tabs render but not switch when clicked?
- This usually points to a JavaScript asset conflict, often caused by another custom Nova tool or card shipping its own Vue bundle or registering components twice. The package compiles to a Vue bundle loaded through Nova::script(), so overlapping registrations can break tab switching even though the markup looks correct. Disable other custom Nova assets one at a time to isolate the conflict. Also check the browser console for Vue warnings about duplicate component names.
- What are the alternatives to shuvroroy/nova-tabs for grouping Nova fields?
- Nova's built-in panels and field grouping cover simple layout needs without adding a dependency. If you need richer tab behavior, you can build a small custom Nova component or fork the package, which the MIT license permits. Because this package is a thin presentational wrapper with no persistence or service classes, an in-house reimplementation is realistically scoped. Compare that cost against the maintenance risk of a low-traffic dependency before deciding.
- Is shuvroroy/nova-tabs still maintained and safe to use in production?
- It is a small package with a single maintainer, roughly 9 stars, 0 dependents, and a patch-level release history ending in November 2023, so expect limited real-world edge-case coverage. The functional risk is low because it is purely presentational, but the lifecycle risk is real since Nova is proprietary and its extension APIs change across majors. Pin the version tightly, commit the lock file, and name an owner responsible for re-testing tabbed resources when Nova ships a major. The MIT license means you can patch or fork if the maintainer does not keep up.
- How do I remove nova-tabs and roll back if it does not work out?
- Run composer remove shuvroroy/nova-tabs and revert the fields() methods that used Tabs and Tab back to plain field arrays. There are no migrations, no database changes, and no stored data to unwind, so rollback is immediate. This reversibility is what makes a short pilot low risk. Keep the removal commit separate so you can re-apply the change cleanly if you adopt the package later.