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 Html Field Laravel Package

reedware/nova-html-field

Laravel Nova field that renders raw HTML directly within resource forms and detail screens. Embed custom markup, links, or inline content alongside standard Nova fields to build richer, more flexible admin panels without writing custom components. Simple to install and configure.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. reedware/nova-html-field is a single-purpose Nova field: a Laravel\Nova\Fields\Field subclass plus a compiled Vue component that renders arbitrary HTML in a Nova form (and presumably detail/index contexts). Architecturally it is a thin presentation layer, so it carries no data model, no migrations, no service providers of consequence, and no runtime coupling to our domain code. That makes it exceptionally easy to swap out — which is the most important architectural fact about it.

The binding constraint is not Laravel, it is Nova. Nova is a paid, privately distributed package served from nova.laravel.com, not Packagist. Any composer install of this field requires that our application already has the Nova repository + credentials configured, and that the field's laravel/nova version constraint intersects our installed Nova major. The last release was 2020-10-23, which places it squarely in the Nova 3.x era (Nova 4 shipped mid-2022, Nova 5 in 2024). Unless the constraint is unusually permissive, this will not resolve against a modern Nova install without a fork.

Integration feasibility. High in effort-to-value terms, low in risk terms. The total surface area is small enough (likely <300 lines of PHP + a prebuilt dist/js/field.js) that a fork-and-own strategy is realistic. The main unknown is whether the committed compiled asset targets a Vue runtime compatible with our Nova build; a mismatch produces a silently blank field rather than a hard failure, which is the worst kind of failure to discover in production.

Technical risk. Ranked:

  1. Unmaintained + zero adoption. 0 stars, 0 dependents, no downstream bug reports means no one has validated this against any real Nova version other than the author's. We would be the first serious consumer. Bus factor is 1, and that 1 has not shipped since 2020.
  2. XSS via raw HTML rendering. A field whose entire purpose is injecting HTML into a form will use v-html (or PHP-side raw output). If the value is developer-authored static copy, risk is contained. If it ever derives from model data, user input, or a CMS, it is a stored-XSS vector with no sanitization layer visible in the package description. This must be audited before merge.
  3. Nova major-version drift. Nova 4/5 changed field asset conventions and PHP/Laravel floors. A pinned 2020-era component is a latent breakage on every Nova upgrade.
  4. Composer resolution friction. Private-repo dependency + stale constraints = onboarding pain for every new developer and every CI runner.

Key questions.

  • Which Nova, Laravel, and PHP versions are in scope, and does the package's composer.json constraint actually satisfy them?
  • Is the HTML value static/trusted, or does it ever touch user-controlled data? If the latter, is there any sanitization (DOMPurify, HTMLPurifier)?
  • Is dist/js/field.js committed, and does it match the source? Is the build reproducible?
  • What license is declared, and is the maintainer responsive to PRs or willing to transfer/co-maintain?
  • Do we need form-context only, or detail/index as well?
  • Is there a maintained alternative (Nova panel/HTML fields) that already supports our Nova version?

Integration Approach

Stack fit. The package assumes a Laravel + Nova monolith with a Node/laravel-mix build pipeline available at install time. If we consume the prebuilt dist/ asset, we can skip Node entirely and treat it as a drop-in field — the cleanest path. If we must rebuild, we inherit a 2020 webpack/mix toolchain that will fight modern Node LTS.

Migration path. Do not composer require this directly. Fork it into our internal VCS (or a private Packagist/Satis repo) and:

  1. Relax/expand the laravel/nova constraint to our installed major, and set PHP/Laravel floors to match.
  2. Rebuild or verify the compiled asset against our Nova version; commit dist/ for deterministic CI.
  3. Add an explicit sanitization step if the value is anything other than hard-coded copy.
  4. Publish the field's assets under a namespaced tag to avoid collisions.

Compatibility. Treat Nova 3 as the only plausible supported target out of the box. Nova 4/5 support is a fork-and-port task, not a config change. Validate with a smoke test asserting the field renders visible markup in create, update, and detail views — a blank render is the expected failure signature.

Sequencing.

  1. Spike (½ day): install the fork in a throwaway branch, confirm the field renders on our Nova version, inspect the Vue component and PHP class for v-html/raw output.
  2. Decision gate: if the spike requires more than ~1 day of asset/toolchain repair, build in-house instead. A display-only Nova field is genuinely ~100 lines (a Field subclass with ->asHtml()-style rendering plus a minimal FormField.vue); owning that is cheaper than owning a dead dependency.
  3. Harden: sanitize, add a feature test, document the fork in our dependency register.
  4. Roll out to one admin form, monitor, then generalize.

Operational Impact

Maintenance. Effectively zero upstream maintenance; all maintenance is ours from day one. That is acceptable only because the code volume is tiny. Budget a recurring line item for "verify against each Nova major upgrade," since Nova upgrades are the single trigger that will break this field.

Support. No vendor, no SLA, no docs beyond a README. Internal support means reading the source. Ramp-up for a Laravel developer is low — an hour to understand, a day to confidently modify. The risk is not comprehension, it is discoverability: a silently broken HTML field in an admin form may go unnoticed by engineering and be reported by an operator instead.

Scaling. Negligible. It renders server-side-passed props into a Vue component on form load; no queries, no queues, no external calls. It will not be a throughput bottleneck at any realistic admin-panel scale.

Failure modes.

  • Silent blank render after a Nova upgrade or asset publish failure — highest likelihood, low detectability. Mitigate with a smoke test in CI or a synthetic check on a known admin page.
  • Composer resolution failure on fresh clones/CI if the Nova private repo or the fork's constraints drift.
  • Stored XSS if the field value is ever populated from untrusted input without sanitization.
  • Asset collision if another Nova package publishes an identically-named JS bundle.
  • Abandonment by us — the most probable end state for a 0-dependent package with no owner; mitigate by keeping the fork small enough that deletion/replacement stays trivial.

Recommendation. Do not adopt as-is. Either fork with a hard 1-day cap on remediation, or — my preference given zero stars, zero dependents, and a five-year-old release — reimplement the ~100-line field in-house, which eliminates the dependency, the private-repo coupling, and the upgrade-drift risk for roughly the same effort as making the fork safe.

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.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator