iamgerwin/nova-dependency-container
Nova Dependency Container for Laravel Nova lets you conditionally show or hide fields based on another field's value, keeping forms clean and relevant. Wrap dependent fields in a container and define simple dependency rules for dynamic, context-aware resource forms.
Architecture fit. iamgerwin/nova-dependency-container is a Laravel Nova field add-on: a wrapper field that conditionally shows/hides or enables/disables child fields based on the value of other fields. Architecturally it is a thin, additive layer — a custom Nova Field subclass on the PHP side plus a Vue component on the Nova front-end. It does not alter application domain code, routing, persistence, or the service container beyond a single service provider. For teams already standardized on Nova, this is a low-coupling fit; for teams not on Nova, the package is irrelevant (Nova is a paid, closed-source first-party product).
Integration feasibility. High. Composer install with Laravel package auto-discovery; usage is declarative inside Nova::resources() field definitions. v1.0.16 is a patch release with no public API, schema, config, or field-definition changes — the surface area a consumer touches is unchanged. The one behavioral change worth noting is defensive: FieldServiceProvider now guards Nova asset registration behind a class_exists check, so the package no longer hard-fails in environments where Laravel\Nova\Nova is absent.
Technical risk.
Key questions for the maintainer / internal owners.
class_exists guard log a warning when Nova is absent, or fail silently? Can it be made to fail loudly outside local/testing?Stack fit. Requires Laravel (auto-discovery era), PHP 8.3+, and a licensed Nova installation. If the platform is on PHP 8.1/8.2 today, this release effectively raises the floor — that is the only potentially gating item in the changelog, and it should be validated against the platform's supported PHP matrix before upgrading.
Migration path. Straightforward composer update iamgerwin/nova-dependency-container from ^1.0.15 to ^1.0.16. No migrations, no config publish, no field-definition edits, no asset republish required in the normal case (Nova's nova:publish/nova:assets step should still be run if the project vendors assets). No codemods, no deprecations to chase.
Compatibility. Confirm three axes before merge: (a) platform PHP version ≥ 8.3; (b) Nova major version matches what the package's Vue component targets; (c) transitive floors from collision ^8.6 and pest ^3.7.4 are dev-only and do not constrain production composer.lock. The PHPStan-clean claim plus passing tests raises confidence that the Nova-absent path is now exercised in CI — verify that the suite actually runs without Nova in at least one job.
Sequencing.
Maintenance. Near-zero steady-state. No scheduled jobs, no queues, no storage, no external services, no configuration to drift. The only recurring task is bumping the pin alongside Nova major upgrades, since that is when the Vue component contract is most likely to break.
Support. Support load is concentrated in Nova upgrades and front-end asset issues, not in day-to-day operation. Because Nova is closed-source and the package is community-maintained, internal teams should budget the ability to read and patch ~a few hundred lines of PHP/Vue rather than depend on upstream turnaround. Recommend pinning to ^1.0.16 and treating it as an "evaluate on upgrade" dependency rather than auto-merging renovator PRs, given the Nova/Vue coupling.
Scaling. Effectively free at runtime: the field logic is client-side condition evaluation over already-rendered form fields, invoked on value change. No per-request database or network cost, no server-side evaluation. Performance impact is bounded by the number of dependency containers on a given Nova form — worth a sanity check on very large resource forms (dozens of containers), where per-keystroke reactive evaluation could add up. The 2.5KB bundle reduction is negligible on its own but directionally good.
Failure modes.
Ramp-up. Minimal for any Laravel developer already fluent in Nova: the API is declarative field composition, learnable in under an hour from the README plus one example. The real ramp-up cost is environmental — getting a developer to a working Nova install locally (paid license, asset build). The improved Nova-absence handling in v1.0.16 partially reduces this by letting contributors run the package's own tests without a Nova license, which meaningfully lowers the cost of contributing a fix or verifying a patch. Recommend documenting the expected field behaviors (visible / hidden / enabled / disabled / nested) in the team's internal Nova conventions doc so regressions are caught by inspection rather than by QA.
How can I help you explore Laravel packages today?