Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Tabs Laravel Package

shuvroroy/nova-tabs

A Laravel Nova package that organizes resource fields into clean, navigable tabs, keeping complex forms tidy and easier to scan. Add tab panels to your Nova resources with simple method chaining.

View on GitHub
Deep Wiki
Context7

shuvroroy/nova-tabs is a lightweight Laravel Nova package for organizing resource form fields into tabbed sections. It helps keep complex Nova forms clean and scannable by grouping related fields into separate tabs without custom frontend work.

  • Add multiple tabs to Nova resource forms
  • Group related fields for cleaner layouts
  • Simple declarative configuration in Nova resources
  • Works alongside existing Nova fields and panels
  • Minimal setup with no custom frontend required
Frequently asked questions about Nova Tabs
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.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo
bernskioldmedia/laravel-harvest
bernskiold/laravel-data-scrubber
bernskiold/laravel-currency-converter
bernskiold/laravel-campaign-monitor
bernskioldmedia/laravel-autotranslate
siberfx/telegram-bot
roy-sandip/laravel-view-extended
gregsphotography/site-builder-core
roy-sandip/laravel-view
anodyne/blade-fluentui-icons
webx-ui/module-catalog-collections