ajmariduena/dynamic-field
Dynamic Field for Laravel lets you attach custom fields to Eloquent models without writing new migrations. Configure field types, validation, and options, store values as JSON, and access dynamic data through a simple, fluent API—ideal for user-defined forms and flexible schemas.
Architecture fit
The package is a Laravel Nova field extension, which places it in a narrow but well-understood slot: Nova fields are Composer-installed PHP classes paired with a compiled Vue component, resolved at runtime by Nova's field registry. Architecturally this is a low-ceremony integration — no service container wiring, no migrations of its own, and typically no published config. The trade-off is that Nova fields are tightly coupled to Nova's internal asset pipeline and front-end stack, so the package's real "surface area" is as much JavaScript as PHP. A TPM should treat this as a presentation-layer dependency, not infrastructure: it should never sit on a critical write path where a broken component blocks data entry.
The "dynamic field" concept usually implies composing sub-fields at runtime (conditional visibility, repeatable groups, or JSON-schema-driven forms) and persisting structured data into a single column. That is genuinely useful in Nova, which has no first-class repeatable/builder field. The opportunity: 6.47 score against a 0.58 composite suggests exactly this: real capability gap, immature supply.
Integration feasibility
Feasible for a scoped admin-only use case. Blockers are not conceptual but logistical:
composer.json. Nova major versions change the field API and front-end framework generation, so compatibility must be verified against your Nova version, not "latest."dist/, you inherit a Node build step and the attendant toolchain drift.Technical risk
eval, unvetted dynamic dispatch, and unpublished asset fetches.Key questions
Stack fit
Good fit if you are already on Laravel + Nova and the need is confined to back-office authoring. It is a poor fit if the same dynamic structures must render in the customer-facing app — the field is a Nova admin construct, and its rendering rules would need to be reimplemented for any public surface. Recommend keeping the persistence contract (the JSON shape) as the stable interface and treating the Nova field as one consumer of it.
Migration path
Treat adoption as additive and reversible:
Compatibility
Verify against your exact matrix: PHP minor, Laravel major, Nova major, and Node version if you must build assets. Nova's front-end generation has moved forward over time; a field built for an older generation may need component-level porting, which is a genuine engineering task, not a config toggle. Budget it explicitly.
Sequencing
Source review → fork and pin → DTO/persistence contract → single-resource pilot → validation parity check (server-side rules must not depend on the field) → broader rollout → document exit criteria. Do not sequence this ahead of any Nova upgrade; land it after you are on a stable Nova major so you have headroom before the next boundary.
Maintenance
Assume you own it. A single-maintainer package with 18 stars should be budgeted as vendored internal code with an upstream courtesy channel, not as a dependency with a support contract. Practical cost: a recurring line item each Nova upgrade cycle (component porting + regression testing), plus ad-hoc time if the author goes dormant.
Support
No vendor support, no SLA, no CVE process. Internal triage falls to whoever owns the Nova admin area. Mitigate by keeping the blast radius small: if the field breaks, admins should retain a degraded-but-functional editing path rather than a hard failure.
Scaling
Admin-side scale is rarely the constraint — the number of editors is small. Real scaling concerns are (a) JSON payload size per record if repeatable groups grow unbounded, and (b) query/index performance if reporting later needs to filter on nested keys. Decide early whether the persisted structures will ever need to be queried relationally; if yes, normalize instead of nesting.
Failure modes
Ramp-up
Low for consumers — admins see a form, developers add one field to a resource. Moderate for maintainers — someone must be able to read both the PHP field class and the Vue component, which is a narrower skill set than typical Laravel work. Identify that person before adoption; if no one on the team will own the JS side, that absence is itself the deciding factor. Recommend a time-boxed spike (1–2 days) covering source review, a pilot resource, and a documented exit plan before committing.
How can I help you explore Laravel packages today?