nurmuhammet/dynamic-fields
A Laravel package for adding dynamic, customizable fields to your Eloquent models. Define field types and configurations, then let users create and manage their own custom fields and values without schema changes.
Architecture fit
This is a Laravel Nova field package, which places it in a narrow architectural slot: it only has value if Nova is already the admin layer. Nova fields extend Laravel\Nova\Fields\Field, ship a compiled Vue component, and are registered through NovaServiceProvider::fields(). The integration surface is small and conventional, which is the package's main technical strength — there is no service provider gymnastics, no database schema ownership, and no runtime dependency beyond Nova itself. The architectural risk is inverted: the package doesn't impose a design, but it also can't be reused outside Nova, so any evaluation is really an evaluation of Nova field extensions as a category.
Integration feasibility
Mechanically straightforward: Composer require, optional asset publishing, register the field class in one resource, rebuild Nova assets. A competent Laravel developer should complete a spike in under a day. The feasibility question is not "can we install it" but "does its conditional-display semantics match our form requirements" — dynamic field behavior is easy to demo and hard to get right across create/update/detail views, inline relationships, and ActionModal contexts.
Technical risk The dominant risk is stewardship, not code. Two stars and zero dependents means effectively no production signal, no community bug surface, and no downstream pressure to fix breakage. A single-maintainer Nova field package is structurally fragile because Nova majors change the field/Vue contract and proprietary Nova releases are not something the maintainer can be pinned to. Secondary risks:
dependsOn, hideWhenCreating/showWhenCreating, and conditional visibility helpers. A meaningful share of "dynamic fields" use cases may be covered natively, which would make the dependency net-negative.Key questions
rules()/authorize on the server, or is it presentation-only?dependsOn plus a small custom field, removing the third-party dependency entirely?Stack fit Requires Laravel + Nova (paid license, per-site cost) + a Nova-compatible Vue toolchain. If our admin stack is Filament, Livewire, or hand-rolled Blade, this package is a non-starter and should be closed out immediately rather than re-evaluated.
Migration path There is no migration path in the conventional sense — no data model, no persisted state, no backfill. Adoption is a code-level addition to one resource. That cuts both ways: low switching cost in, low switching cost out, which supports a time-boxed pilot rather than a formal adoption decision.
Compatibility
Pin explicitly. Verify composer.json constraints for laravel/nova, php, and illuminate/*; verify the compiled asset works with our Nova build (asset publishing, nova:publish, Vite vs Mix). Treat any unpinned nova constraint as a red flag and test against the exact minor we run.
Sequencing
dependsOn + a 100-line custom field.Maintenance Assume ownership at adoption. With one maintainer and no dependents, the realistic steady state is "we fork it on the first break." Budget a small but permanent maintenance line: annual Nova upgrade review, asset rebuild, dependency bumps. Vendor the code into our repository (or a private Composer VCS entry) on day one — do not rely on Packagist availability for a package with this adoption profile.
Support No SLA, no vendor, no community. Support cost is borne entirely internally; the actual cost driver is the developer who reverse-engineers the Vue component when it breaks, not the acquisition. Ramp-up for a Nova-experienced team is low (hours); for a team without Nova field authoring experience, add a day.
Scaling Negligible performance footprint. Conditional logic is client-side per form render; there is no query impact, no queue usage, no cache surface. Scale risk is organizational rather than technical: every additional resource using the field increases the blast radius of a Nova upgrade without increasing our leverage over the dependency.
Failure modes
composer update, breaking admin forms with no code change on our side.Recommendation Do not adopt as a strategic dependency at 2 stars and zero dependents. Run the native-first spike; if the package's specific behavior is genuinely differentiating, vendor and fork it with an internal wrapper and an explicit owner. Otherwise, implement the narrow slice we need as a first-party Nova field.
How can I help you explore Laravel packages today?