inspheric/nova-url-field
A URL field for Laravel Nova that displays URLs as clickable, copyable links in index, detail, and form views. Customize link text, target, and styling while storing values as plain strings, keeping long URLs readable and letting users open or copy them with one click.
Admin tooling velocity: This package is a narrow accelerator for Laravel Nova admin panels. Where a resource already needs a website, homepage, docs_url, vendor_portal, repo link, or callback endpoint column, it replaces hand-rolled Text::make(...)->displayUsing(fn () => '<a href=...>') markup with a maintained field class. The value is time saved on internal tooling, not a new user-facing capability.
Build vs. buy (buy the small thing): Adopt rather than build when the requirement is exactly "store, validate, display, click through a URL" with nullable values and Nova's own validation rules. Build in-house — or move to a separate service — the moment the requirement grows to link previews, favicons, redirects, metadata extraction, click analytics, approval workflows, or domain-specific validation. This package deliberately does none of those, and stretching it is the wrong instinct.
Roadmap sequencing around Nova 5: v3.0 adds Nova 5 support, so this removes a small but real migration blocker for admin resources that depend on a URL field. Treat it as an enabler attached to an already-scheduled Nova upgrade, not as a roadmap item in its own right. On Nova 4, pin v2.0.2 and defer.
Backlog prioritization: Pull this in opportunistically as engineers touch each resource. Do not schedule a dedicated "convert all Text fields to URL fields" refactor — the field is too small to justify its own initiative, and conversion is a one-line diff per resource.
Dependency governance: Approve as a small, MIT-licensed, admin-only dependency with low blast radius but weak ecosystem validation: ~102 stars, zero dependents, single primary maintainer. Decision rule: keep it strictly in admin surfaces, never in a request path serving end users, and treat it as "owned by us in all but name."
Consider it when:
Look elsewhere when:
For executives: This is a small, MIT-licensed add-on for Laravel Nova admin screens. It lets editors work with website and reference links as clickable URLs without us writing and maintaining custom field code. Its latest release adds Nova 5 support, so it will not block a Nova platform upgrade. Cost is negligible and blast radius is low because it only touches internal admin tooling — but it should be time-boxed and reviewed like any small open-source dependency, not framed as a strategic platform choice.
For engineering: One field class, no service provider, no migrations, no assets, no config to publish. Integration surface is the resource's fields() method: import Inspheric\NovaUrlField\Url and swap out the existing Text field. Pin the major to the Nova major — ^3.0 on Nova 5, ^2.0.2 on Nova 4 — and read the composer.json diff between them, because the v3.0 release notes announce what was added but not what was dropped or whether the PHP floor moved. Run a short spike on one non-critical resource in staging and verify index rendering, detail rendering, the edit round-trip, and especially null-vs-empty-string behavior, which is the most plausible regression in a major bump. Note that Nova is closed-source, so CI needs license credentials configured or composer install fails before tests run. Validation stays with us — pair the field with ->rules('url'), ->rules('max:255'), and ->nullable(); and if the column ever accepts untrusted input, treat URL scheme handling as a security review item (javascript: and data: can pass shape-only URL rules), and confirm rel="noopener noreferrer" on target="_blank" anchors. Finally, document the subclass path — if we need scheme sanitizing or custom anchor markup, we extend Url ourselves and turn a future upstream stall into a two-hour task rather than a rewrite.
How can I help you explore Laravel packages today?