Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova External Url Laravel Package

pdewit/nova-external-url

Laravel Nova field for adding clickable external URL links to resources. Display a link or button in index and detail views, point it at any URL, and optionally open it in a new tab. Easy to configure in Nova resource classes for quick access to related external pages.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

Operator efficiency in back-office tooling. This is a presentational Nova field that turns a stored or derived URL into a clickable anchor on admin index/detail screens, so support, ops, and finance teams jump straight to Stripe dashboards, vendor portals, or internal docs instead of copy-pasting raw URLs. The win is small but tangible — seconds per ticket — and worth quantifying only if you need to justify the work at all.

Build vs. buy — reframed as "own vs. write thirty lines." The entire functional surface is one PHP field class and one Vue component. With a last release of November 2018, 30 stars, and zero dependents, the real decision isn't install and forget, it's vendor, patch, and carry forward through every Nova upgrade. Treat this as a maintenance decision disguised as a purchasing decision, because that's what it is.

Roadmap boundary setting. Useful for drawing a clean line between a presentational link and an integration. If a stakeholder asks "let admins open the customer in Stripe," this satisfies it. If they ask "let admins refund the customer in Stripe," that is a separate roadmap item this package does nothing for — no auth handoff, no deep-link signing, no link-health monitoring, no workflow automation. Naming that boundary early prevents scope creep into a much larger build.

Nova upgrade planning. The package targets Nova 1.x/2.x with pre-Vue-3 assets, so its presence in the codebase becomes a concrete line item in any Nova 4/5 migration estimate. It also serves as a forcing function to audit how many resources rely on custom field packages versus native fields — a useful inventory before committing to an upgrade timeline.

Dependency governance. A clean, low-stakes test case for your policy on unmaintained, low-adoption Composer packages. Whatever rule you apply here generalizes to the next dozen lookalikes, and getting the rule written down is more valuable than the specific verdict.

Documentation drift as a procurement signal. The package description advertises configurable external links in Nova's sidebar, while the implementation is a resource field. Before any work is scoped off the README, confirm the deliverable. That kind of mismatch is itself a reason to trust source code over marketing copy on every future evaluation.

When to Consider This Package

Consider it only when all of the following hold:

  • The product already runs Laravel Nova, and specifically a Nova version whose laravel/nova Composer constraint this package actually satisfies. Verify this first — it is the fastest kill signal available.
  • The need is strictly presentational: display a URL, optionally let an operator edit it, open it in a new tab. No validation guarantees, no link checking, no auth handoff, no workflow.
  • A named owner is willing to fork or vendor it, and the team is comfortable pinning a commit SHA rather than a version tag.
  • The blast radius is small — one or a handful of resources, not a platform-wide convention.

Look elsewhere — or simply build the field — when:

  • You are on Nova 4/5. Nova ships a first-class Laravel\Nova\Fields\URL that renders as a link, and Text::make('Website')->displayUsing(...)->asHtml() covers most detail-page cases. Using the native field eliminates the dependency outright and delivers the identical user-visible outcome.
  • Security review is mandatory. The 2018-era Vue component likely omits rel="noopener noreferrer" on target="_blank" — modest but real — and it signals a broader lack of active maintenance.
  • You need sorting or filtering on the displayed value. Computed/resolveUsing fields don't sort correctly (Nova sorts the underlying column), so the package contributes nothing on index views.
  • Your team has a standing rule against unmaintained dependencies. That rule is reasonable here: the surface is small enough that a local field in nova-components/ is cheaper over any horizon longer than a quarter.
  • Adoption would be platform-wide. One abandoned component replicated across dozens of resources multiplies the eventual replacement cost linearly.

How to Pitch It (Stakeholders)

To executives: This is a minor admin-screen convenience for internal tools built on Laravel Nova — it makes external links clickable for the operations team instead of showing raw URLs. It is not strategic or roadmap-critical: one release in 2018, negligible adoption, no active maintainer. Recommendation: skip it for new work and use Nova's built-in URL field, which delivers the same user-facing outcome with zero added maintenance burden. If a legacy Nova 2 app already depends on it, leave it alone until the next Nova upgrade and budget roughly half a day to replace it then.

To engineering: Treat this as a vendored snippet, not a dependency. The whole package is one field class and one Vue component; the cleanest path is to copy it into nova-components/ (or use Nova's native URL field on 4+), add rel="noopener noreferrer", default to ->onlyOnDetail() so long URLs don't wreck index layout, and apply ->rules('nullable', 'url', 'max:2048') at every call site — the package validates nothing and renders whatever string it's given. If you do install it, pin the commit SHA, publish and symlink assets via nova:publish, and expect the classic blank-column failure to be a missing asset symlink or stale config cache rather than a code bug. Assign an owner for the Nova-upgrade line item, and add QA checks for URL escaping and safe link behavior before this reaches an operator screen.

To the requesting stakeholder: You will get the clickable "Open in [system]" link you asked for. The user-visible result is identical whether we use this package or a short in-house field, so we're choosing the in-house route to avoid carrying an abandoned 2018 dependency through future Nova upgrades. Same outcome, fewer future surprises — and if the ask ever grows from opening the external system to acting inside it, that's a separate and much larger conversation.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle