shuvroroy/nova-dynamic-views
A Laravel Nova package for creating dynamic, configurable views in your admin panel. It lets you build reusable, data-driven Nova pages and tailor what users see without custom Vue components, with straightforward installation and integration into existing Nova resources.
header() or toolbar() today, and count how many diverge from the default. If that is "eight resources, five near-identical blocks," one registration path with per-resource overrides pays for itself immediately. If it is "one resource, one header," it does not.NOVA_DYNAMIC_CHROME=false reverting to stock Nova chrome) so a bad header is a one-line rollback rather than a hotfix. Also drives the deployment ritual: php artisan view:clear alongside config:cache, or you get the classic "works locally, wrong on staging" stale-compiled-view failure.Consider it when:
Nova::header(fn () => view(...)) in NovaServiceProvider or a resource-level header().src/ and the service provider in one sitting, confirm the real resolution order (global default → per-resource override → conditional override), and own a pinned copy.Look elsewhere when:
Nova::header(), is not worth a dependency.Adoption gate: a time-boxed spike on a branch that proves Nova 5.11.0 compatibility, isolates every package call behind one internal adapter (e.g. App\Nova\NovaChrome), adds one rendering test per custom view (actingAs($admin)->get('/nova/resources/users')->assertOk()->assertSee('Production')), resolves view names through an explicit config allowlist rather than string concatenation, and ships behind a config flag with a named owner.
For executives: This is a small, MIT-licensed utility that standardizes headers and toolbars in our internal Laravel Nova admin panel — environment labels, tenant context, branding, quick links — so those changes get made once instead of screen by screen. It is not a strategic platform bet: adoption is minimal (10 stars, 0 dependents), there is one maintainer, and there is no vendor, SLA, or security guarantee. Recommend a time-boxed pilot in a non-critical admin area, pinned to a specific version, owned by a named engineer, with a config flag that reverts to stock Nova chrome in one line. Do not approve it as a dependency for anything customer-facing, and do not size the roadmap against the description's broader claims about dynamic field visibility until engineering has confirmed them in source.
For engineering: The package centralizes where Nova's header and toolbar slots resolve their views, eliminating duplicated override wiring across resources; v2.4.0 is a compatibility bump for Nova 5.11.0. The risks are thin validation, a changelog that says nothing about breaking changes, and package calls leaking into dozens of resources if we are careless. Recommended posture: review the v2.3.0 → v2.4.0 diff, route every call through one internal adapter (App\Nova\NovaChrome) so a vendor swap is a single-file rewrite, add one rendered-output test per dynamic view, put php artisan view:clear in the deploy script, keep expensive queries and outbound calls out of header partials since they render on every Nova page, and treat any user- or tenant-supplied value as untrusted — resolve view names through a config allowlist, never concatenation, or you have built a cross-tenant leak surface. Keep the native Nova::header() fallback documented from day one so removal stays a refactor.
How can I help you explore Laravel packages today?