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 Toast Ui Editor Field Laravel Package

bbs-lab/nova-toast-ui-editor-field

A Laravel Nova field that brings the Toast UI Editor into your admin panel, giving users a rich markdown and WYSIWYG editing experience with live preview, so long-form content is easier to write and manage.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit bbs-lab/nova-toast-ui-editor-field is a Laravel Nova form field that wraps the upstream TOAST UI Editor as a custom Nova field component. Architecturally it is a thin adapter in three layers: a PHP Field subclass (server-side definition, storage, optional traits), a compiled Vue/JS asset registered with Nova's field registry, and the third-party @toast-ui/editor bundle. It fits applications that already run Nova as the admin surface and need rich Markdown/WYSIWYG authoring on an Eloquent attribute. It is not a general-purpose editor package and provides no value outside Nova.

Integration feasibility Integration is low-effort by design: composer require, declare the field on a Nova resource, and (depending on how the service provider registers assets) publish or serve the compiled JS. No configuration surface, no migrations, no queue/worker implications. The main gating requirement is a valid Nova license and a Nova major that the package supports. Because the field is a single attribute editor, the blast radius is confined to whatever resources opt in.

Technical risk

  • Version-catch-up pattern. This release exists solely to add Laravel 13 support, which is the classic signal for a low-cadence wrapper package: compatibility arrives reactively after the framework major ships. Expect a similar lag for the next Nova/Laravel major.
  • Small-maintainer / low-bus-factor. Single-author package with modest issue volume; no vendor SLA. Treat as an internal dependency you may need to fork.
  • Transitive risk from the upstream editor. TOAST UI Editor has a history of XSS and DOM-clobbering advisories; the field inherits whatever version it pins. Release notes say nothing about the bundled editor version.
  • Storage semantics ambiguity. Whether content is persisted as Markdown or HTML determines your render pipeline, sanitization policy, and search behavior — and is the most common source of silent data issues with editor swaps.
  • Asset pipeline fragility. Nova custom fields break in predictable ways on Nova upgrades (Mix/Vite manifest changes, Vue version shifts, publish tags). This is the dominant day-2 failure mode.

Key questions

  1. Does v2.1.0 change the composer.json floor for PHP/Laravel/Nova, or is the Laravel 13 support purely an additive constraint widening? Is it a safe drop-in for v2.0.0 consumers on older stacks?
  2. What Nova majors are supported, and is Nova 5 (or later) required to reach Laravel 13?
  3. Was @toast-ui/editor bumped in this release, and what version is pinned? Does it include the recent security fixes?
  4. Is output sanitized server-side before rendering, and where — package, host app, or not at all?
  5. Is there a CI matrix covering Laravel 10–13 × Nova majors, or is support asserted without test evidence?
  6. How are assets published/served, and does the upgrade require a re-publish or cache clear?

Integration Approach

Stack fit Laravel + Nova admin application. The field is a drop-in for any Nova resource attribute currently using Textarea, Markdown, or Trix/Text fields, provided the storage format matches what your render path expects. It is a poor fit if you need structured/block content, collaborative editing, or a non-Nova authoring surface.

Migration path

  • v2.0.0 → v2.1.0: additive compatibility change; treat as a minor and a low-risk bump. Validate that the widened constraint did not silently raise the minimum Nova or PHP version.
  • Field migration: if replacing a plain Markdown field, data is likely compatible when both store Markdown in the same column. If replacing Trix/Text (HTML storage) or moving the other direction, plan a content normalization step — do not mix formats in one column.
  • Laravel 13 upgrade: sequence the framework/Nova upgrade and this package bump together; the package bump alone delivers nothing until you are on the target stack.

Compatibility Requires verifying the actual constraint set from composer.json at the v2.1.0 tag rather than inferring from release notes. The notes assert Laravel 13 support but say nothing about Nova version pairing, PHP floor, or backward compatibility with 10/11/12.

Sequencing

  1. Inspect composer.json and the diff at v2.1.0 (constraints, pinned editor version, asset changes).
  2. Trial bump in a staging branch on the current Laravel/Nova to confirm no regression.
  3. Upgrade Laravel 13 + Nova, then re-verify field render, save, and asset publishing.
  4. Regression-test rendering of pre-existing content (Markdown vs HTML round-trip) across at least one seeded record per resource.
  5. Confirm sanitization behavior with a deliberately hostile payload before production rollout.
  6. Roll out resource-by-resource; keep the prior field definition behind a feature flag for one release cycle.

Operational Impact

Maintenance Low ongoing effort but non-zero ownership: pin the version explicitly (avoid floating ^2), track upstream @toast-ui/editor advisories independently of this package's release cadence, and budget for an internal fork if maintenance lapses. Add a calendar reminder to re-evaluate on each Laravel/Nova major rather than waiting for a compatibility PR.

Support Community-only via GitHub issues; no vendor contact, no security disclosure process documented. Internal teams must own triage. Escalation path is: pin, patch locally, or fork.

Scaling The dominant scaling cost is client-side: the TOAST UI Editor bundle is heavy and loads on every Nova form page using the field, which is noticeable on slow admin connections. Content lands in a TEXT/LONGTEXT column; very large documents inflate row size and degrade full-text search depending on your indexing strategy. There is no server-side rendering cost, so horizontal scaling of the app tier is unaffected. Image/file uploads are not handled by the field itself — plan a separate upload path and a storage/CDN story before enabling it.

Failure modes

  • Field silently fails to render after a Nova upgrade (asset manifest/registry mismatch) — the most likely failure.
  • XSS through unsanitized Markdown/HTML rendered on the public site, not in Nova.
  • Format drift: HTML written into a Markdown-expected column, corrupting downstream rendering.
  • Composer constraint conflict blocking a framework upgrade (the inverse of the problem this release solves).
  • Unpublished/uncached assets after deploy causing blank editors in production only.
  • Abandonment: no release for the next framework major, forcing a fork on a deadline.

Ramp-up Hours for a developer already fluent in Nova custom fields; the field API is conventional. The real onboarding cost is policy, not code: document whether the column stores Markdown or HTML, mandate sanitization at render time, and define who owns the fork if upstream goes quiet. Add one integration test per resource that asserts round-trip fidelity so editor swaps are caught in CI rather than by editors.

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.
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
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource