pavloniym/nova-options-selector
A Laravel Nova field package for adding an options selector to your admin panel, letting you choose from predefined option lists within Nova forms and resources.
Architecture fit. pavloniym/nova-options-selector is a Laravel Nova 4 field package — a Vue field component registered through Nova's field service provider and rendered inside a Nova resource form. Architecturally it is a thin presentation-layer extension: it does not introduce routes, middleware, queues, or persistence of its own, and it stores its value in the same column as a standard Nova Select. That makes it low-blast-radius: it sits inside the admin surface only, never in customer-facing request paths.
Integration feasibility. Straightforward. composer require pavloniym/nova-options-selector, then swap Select::make() for the package's field class in the relevant Nova resources. No schema changes, no migrations, no config publishing expected. Effort is measured in hours for a first resource and minutes per additional resource.
Technical risk. The v1.1.2 release note is the tell: "fixed some styles/classes to Nova v4.34.3." This confirms the package reaches into Nova's internal CSS class names rather than relying on a stable public contract. Consequences:
Key questions for the maintainer / spike.
composer.json (nova isn't on Packagist — confirm how the dependency is expressed and whether Composer will silently allow an incompatible Nova bump)?Select (inheriting options(), searchable(), displayUsingLabels(), nullable(), rules()) or reimplement them? Field-parity gaps are the most likely integration surprise.Stack fit. Laravel 10/11, PHP 8.1+, Nova 4.34.3+ for this specific patch. Confirm the host application is already on a Nova 4.34.x line; this release is explicitly calibrated to that point version.
Migration path. Treat it as a drop-in for Select only after verifying storage parity. Both fields should persist a scalar (or JSON array for multi-select) in the same column format, but confirm empirically on a scratch resource before replacing a field on a resource with existing production data. If the package extends Nova's Select, existing values read unchanged; if it reimplements, test round-trip read/write on a seeded record. Roll out one resource at a time rather than globally.
Compatibility. Pin Nova and the package together in composer.lock — the coupling is bilateral. If the application is pinned below Nova 4.34.3, do not adopt v1.1.2 blindly; validate the class changes against the older Nova markup or hold at the prior tag. There is no announced breaking change in this release; the semver patch signal is accurate.
Sequencing.
composer.lock and document the Nova↔package pairing in the repo README.Maintenance. Low ongoing code cost, moderate ongoing attention cost. The style-only nature of this release means the maintenance burden is not "fix bugs in the package" but "re-verify the field after every Nova upgrade." Budget a recurring line item in the Nova upgrade checklist: re-test custom fields, including this one. Note that the maintainer is already tracking Nova point releases, which is a positive signal on cadence.
Support. No SLA, no vendor contract, community GitHub issues only. Mitigation is cheap given the package's size: mirror the repository internally (or vendor it via a VCS composer.json entry) so a fork is one commit away if the maintainer goes quiet or a Nova release breaks it mid-upgrade.
Scaling. Effectively zero runtime impact. The field is client-side and confined to authenticated admin traffic; there is no server-side rendering cost, no query pattern change, and no effect on application throughput.
Failure modes.
nova:publish or browser cache can mask or mimic breakage. Include php artisan nova:publish and a hard refresh in troubleshooting.Select's rule handling, invalid options may slip through. Cover with a feature test asserting a rejected value.Ramp-up. Minimal. Any developer who has authored a Nova resource can adopt this in under half a day; the only non-obvious knowledge is the Nova-version pairing constraint, which belongs in the README rather than in someone's head.
Assessment of this release. v1.1.2 is a compatibility patch, not a capability change. It neither introduces nor removes features, and it does not alter the integration approach. Its significance is diagnostic: it quantifies the package's coupling to Nova's internal styling and confirms the maintainer is actively tracking Nova point releases. Adopt it if — and only if — you are on Nova 4.34.3 or later; record the pairing and move on.
How can I help you explore Laravel packages today?