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

Tinymce Nova Laravel Package

gregsphotography/tinymce-nova

Integrates the TinyMCE rich-text editor into Laravel Nova as a reusable field. Add a configurable WYSIWYG editor to Nova resource forms for creating and editing formatted HTML content, with familiar toolbar and editing controls. Supports standard TinyMCE configuration for flexible content editing in...

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a Nova field package: a thin adapter between Nova's field lifecycle and the TinyMCE editor, with a small configuration surface for asset sourcing (local vs. CDN). That is the right shape for the problem — it keeps editor concerns out of application code and confines coupling to two well-defined boundaries (Nova's field API and TinyMCE's init/config API). The tradeoff is that the package inherits the version cadence of both Nova and Laravel, and the release notes validate specifically against Laravel 13 / Nova 5, which is a narrow supported matrix.

Integration feasibility. Low effort. Register the field on a Nova resource, publish the config, choose local or CDN asset delivery, done. v1.2.2 materially improves this story by de-risking the asset path: concurrent-load sharing, a configurable source, and an editable fallback on load failure or timeout address the most common "editor didn't render" production incident for CDN-backed fields.

Technical risk.

  • Fallback content shape. The fallback is an editable plain control, while the primary path produces TinyMCE HTML. The notes assert stored recipe content is unchanged, but they do not state that fallback-authored content is normalized to the same shape. This is the highest-value unknown.
  • Lifecycle correctness. Init-on-ready, save-current-content, and cleanup-on-navigation are precisely the areas where Nova rich-text fields historically lose or duplicate content. The validation described (lifecycle tests, browser smoke tests) is encouraging but smoke tests are not regression coverage for navigation edge cases.
  • Escaped detail rendering. Escaping is the correct default for XSS safety; preserving paragraph/list line breaks via escaped text means the detail view is a faithful plain-text representation, not a rendered preview. That is a deliberate product decision that will be visible to users.
  • Version pinning. Laravel 13 / Nova 5 validation narrows applicability for teams on earlier majors; confirm composer.json constraints before committing.

Key questions.

  • What are the declared constraints for php, laravel/framework, and nova — and is there a supported path for Laravel 11/12 or Nova 4?
  • Is fallback-authored content parsed or normalized before save, or stored as raw text alongside HTML records?
  • Is the load timeout configurable, and does it differ per environment?
  • Is CDN loading compatible with a strict CSP, and is a nonce/integrity mechanism documented?
  • Does cleanup-on-navigation cover Nova's client-side navigation and modal/detail drawers, not just full page loads?
  • Were the fallback and failure paths tested, or only the happy path?
  • Did config key names change in this release for source selection and editor config forwarding (requires re-publish)?
  • Does escaping in the detail row regress any existing records where teams expected rendered formatting?

Integration Approach

Stack fit. A Nova 5 field on Laravel 13, rendering TinyMCE. Fits existing Nova admin surfaces well; the notes make no claim of a standalone Blade/Livewire component, so treat it as Nova-only.

Migration path. Patch release with no schema change and no stored-content change — a drop-in composer update in most cases. The one caveat is configuration: "forward editor configuration and use the correct defaults when switching between local and CDN sources" implies config semantics moved. Diff the published config against the package default rather than blindly re-publishing.

Compatibility. Verify the PHP and framework constraints, confirm the published asset build lands where the field expects it (e.g. public/vendor/...), and check coexistence with the app's Vite/Mix pipeline and CSP headers. If the app is on an older Nova major, this release likely does not apply.

Sequencing.

  1. Confirm composer/PHP constraints against the target app; note the Laravel 13 / Nova 5 validation baseline.
  2. Install on staging; publish and diff config; pick local asset hosting for production to eliminate the CDN dependency.
  3. Smoke test create / edit / detail on one representative resource, explicitly checking paragraph and list line breaks.
  4. Deliberately exercise the failure path — block the asset host or force a timeout — and verify fallback content round-trips and renders acceptably in the detail row.
  5. Validate CSP and asset caching in the production-like environment.
  6. Roll out to a single resource, then broadly, with 1.2.1 held as a rollback target.

Operational Impact

Maintenance. Small dependency surface, but three moving targets: Nova, Laravel, and TinyMCE upstream. Choosing local assets means owning editor bundle upgrades and CVE response; choosing CDN shifts that to the vendor in exchange for an availability and CSP dependency. Budget for at least quarterly review.

Support. Anticipate tickets in three buckets: editor not appearing (asset path, CSP, blocked CDN), formatting lost or altered after a fallback session, and "the detail view doesn't look like the editor." The fallback behavior is user-visible and should be documented for content editors before rollout — it is a behavior change, not just a bug fix.

Scaling. Client-side only; no meaningful server-side load beyond static asset serving. Local assets benefit from standard HTTP/CDN caching in front of the public directory. Concurrent-load sharing reduces duplicate TinyMCE fetches on pages rendering multiple fields.

Failure modes.

  • CDN blocked or slow → editable fallback engages; UX degrades silently and content shape may diverge from the HTML path.
  • Init race during Nova navigation → stale or empty editor content; cleanup logic is the mitigation, but its coverage is asserted rather than proven at scale.
  • Escaped detail rendering → formatting is not visually reproduced, generating "why does this look different" questions.
  • Nova major upgrade → field breakage until the package catches up; pin and test before upgrading Nova.

Ramp-up. Low for developers (config plus field registration, roughly half a day including staging validation and CSP work if using CDN). Moderate for content editors, who need a short brief on fallback behavior and detail-view rendering.

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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log