marshmallow/prefiller-field
marshmallow/prefiller-field adds a configurable form field to Laravel apps that automatically prefills inputs from existing records or custom data sources, cutting repetitive data entry with a simple, flexible API.
Architecture fit. Unchanged. marshmallow/prefiller-field remains a Laravel Nova field extension, not a general Laravel package. Its value proposition depends on the host application running Nova (paid, closed-source first-party add-on) and on admin resources using this field in place of a standard field. Addressable fit is still: Laravel 9/10, Nova 4.x, editor-facing forms with a natural "copy this into that" behavior (slug-from-title, billing-to-shipping, SKU-to-label, template defaults). Filament, Livewire, bespoke Inertia/Vue admin, or Nova 3 remain non-starters regardless of package quality. Release 2.3.1 does nothing to widen this.
Integration feasibility. Unchanged mechanically: composer require, reference the field class in a resource's fields(), declare source/target via the fluent API. No migrations, no service provider wiring beyond Nova's normal field registration, no queue or config surface. The onboarding cost is still reading the source, because a Nova field that mutates another field's value must reach into Nova's client-side form state (the Vue form model / Form component field store), which is not a documented public API. Half a day for a Nova-fluent engineer to confirm the mechanism and constraints.
Technical risk. Still high, with one correction and one new wrinkle from 2.3.1:
Key questions to answer before committing. Which Nova major and Laravel version does the host app run, and does the composer constraint permit it? What actually changed in 2.3.1 — read the compare diff rather than the notes; treat the empty changelog as a blocker to blind upgrades. Does the field write to the target's form value only, or does it also influence what is persisted/submitted? How does it behave alongside Nova's built-in dependsOn() reactivity? Does it preserve or overwrite user-entered values? Are compiled assets shipped in the release, or does adopting it add a Node build step to deploy? Is the license permissive enough to vendor and fork?
Stack fit. Unchanged: Laravel 9/10 + PHP 8.1+ + Nova 4.x, Vue 3 front end. Verify published dist assets exist so no JS toolchain is required in CI. Nova 3 or Nova 5 hosts should treat the package as unsupported until proven otherwise. Confirm that 2.3.1 did not shift PHP/Laravel/Nova constraints — an empty changelog is not permission to assume it didn't.
Migration path. Still do not adopt directly into a production resource. Sequence:
App\Nova\Fields\PrefillFrom) so resources never reference Marshmallow\... directly. Makes an in-house swap a one-file change.dependsOn() plus fillUsing/resolveUsing covers much of the prefill need server-side and is upgrade-stable.Compatibility. Pin laravel/nova explicitly and pin this package to an exact version, not a caret range — a silent patch upgrade with no changelog is precisely the drift you cannot afford on a private-API dependency. Add the field to the Nova upgrade checklist: any Nova bump requires a manual regression pass on every form using it.
Sequencing with the business logic. Unchanged and non-negotiable. Treat the field as a UI convenience only. Any prefill rule that must hold for API writes, imports, seeders, or console commands belongs in a model observer, form request, or Nova fillUsing — not in this package. Build the server-side rule first, then layer the field on top. That ordering means the package's failure degrades experience without changing the data contract.
Maintenance. Runtime footprint is negligible; ownership cost is not. 2.3.1 demonstrates the maintainer is still reachable, which is mild positive signal, but a patch release with a link-only changelog does not reduce your verification burden — it adds a diff to read. Your team still owns every future break; budget a recurring "re-verify on Nova upgrade" line item. Vendoring the code converts an unpredictable third-party dependency into a small, reviewable internal artifact and remains the recommended posture.
Support. Still none. No vendor, no community, no SLA, no issue triage, and now no release notes either. Internal ownership must be assigned by name; if no engineer will own it, it should not ship.
Scaling. No change. No server-side cost, no runtime scaling concern — browser-local logic on an admin screen with bounded concurrency. The real scaling limit is scope: prefill logic expressed only in the UI does not extend to bulk imports, API traffic, integrations, or programmatic record creation, so the rule silently diverges across entry points unless mirrored server-side. Divergence bites at scale; throughput never will.
Failure modes. Ranked by likelihood:
composer update, changing runtime behavior with nothing to review. Mitigate with exact version pins and a diff read before any bump.dist assets.Ramp-up. Low for a Nova-fluent engineer: under a day to install, read, and validate in a spike; a few hours for a second engineer to review. Add roughly an hour to review the 2.3.1 diff. The genuine cost remains designing the prefill rules — which fields pair, when to overwrite, what the server-side source of truth is — identical work whether you adopt, vendor, or build.
TPM recommendation. No change to the decision. Release 2.3.1 is a patch bump with an empty changelog: no breaking changes, no new features, no deprecations, and no evidence of a maintenance commitment. The capability (declarative prefill in Nova forms) remains worth capturing; this implementation is still not a safe direct dependency while adoption signals are near zero and it couples to a private framework API. Run the short spike, read the 2.3.1 diff, then vendor or reimplement behind an internal field class, keep prefill semantics server-authoritative, and treat the UI behavior as removable polish. The one adjustment: pin this package to an exact version and treat future link-only releases as review-required, not auto-mergeable.
How can I help you explore Laravel packages today?