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

Filament Ckeditor Field Laravel Package

kahusoftware/filament-ckeditor-field

kahusoftware/filament-ckeditor-field adds a CKEditor 5 rich text editor field to Filament forms, with configurable toolbars, image and media support, smooth Livewire integration, and easy customization for Laravel admin panels. It replaces basic textareas with a full-featured WYSIWYG editor.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a thin Filament form-field wrapper: a Field subclass, a Blade view, and asset registration that boots CKEditor 5 into the Livewire-rendered DOM. The "non-premium features" framing is the important architectural detail — it means the package targets the GPL-licensed CKEditor 5 open-source distribution and deliberately excludes commercial plugins (real-time collaboration, track changes, comments, export to Word/PDF, import from Word). That makes the package a UI convenience, not a platform component: it contributes no persistence layer, no upload backend, no sanitization, and no content model. It assumes your application already has an HTML storage column and a rendering path. Any TPM evaluating this should treat it as ~200 lines of glue they may end up owning, not as an integration.

Integration feasibility. Mechanically straightforward on Filament v3/v4 with Livewire and Alpine: mount the editor on a wire:ignore wrapper, sync HTML into the field's state via entangle or a debounced $wire.set, and tear down/re-init on Livewire navigation. The hard parts are the edges everyone hits: state divergence after a validation error round-trip, editor destruction on a parent re-render (silent data loss), CKEditor's upload adapter having no endpoint to call, and the fact that whatever HTML lands in the database is stored raw. None of those are solved by a 16-star wrapper, and the package's own scope suggests it doesn't try.

Technical risk. High, and concentrated in ownership rather than code quality. 16 stars, 0 dependents, a single maintainer, and a composite score of 19.5 put this firmly in "assume abandonment" territory. The dependency it wraps is also unusually volatile: CKEditor 5 has absorbed a licensing change and repeated installation-method churn, and a CDN-loaded floating version can break production without a deploy. Filament's own field API is not frozen across majors, so an upstream Filament release plus an absent maintainer equals a broken admin panel. Add two non-code risks: the GPL provenance of the bundled editor build needs a legal read if you ship a closed-source product, and stored-XSS exposure sits entirely with you. The "opportunity" score of 38.6 is arguably generous — the opportunity is for whoever writes a maintained version, not for whoever consumes this one.

Key questions. Which Filament and Livewire majors are actually supported — pinned in composer.json or merely claimed in the README? Are CKEditor assets served from a CDN or published to public/vendor, and is the editor version pinned? Does the field survive a full Livewire re-render, a validation failure, and a dependent reactive field update without losing content? Is there any documented sanitization contract, or is the consumer expected to run symfony/html-sanitizer themselves? Does image upload work, and if so against what endpoint — does it reuse Filament's existing disk/visibility configuration or invent its own? How do representative documents round-trip compared to Filament's native TipTap-based RichEditor? And what is the maintainer's response history on issues and PRs?

Integration Approach

Stack fit. Adopt only if you are already committed to Filament and have a specific capability gap that Filament's first-party RichEditor (TipTap) does not close — realistic candidates are CKEditor's table editing ergonomics, paste-from-Word fidelity, or a plugin in the free tier you need. If the requirement is simply "rich text in a form," the native field wins on every axis a TPM cares about: maintenance, security defaults, upgrade path, and support. Treat this package as a bounded experiment, and make the alternative explicit in whatever decision record you write.

Migration path. Content at rest is HTML either way, so a switch is not a data migration — it is a markup-compatibility exercise. TipTap and CKEditor emit different HTML for identical semantics (tables, nested lists, figure captions), so build a golden-file corpus of ten to twenty real documents from production, render and re-edit each in the candidate, and diff the saved output. Anything that round-trips through a sanitizer allowlist unchanged is safe to migrate; anything that loses structure needs a one-time normalisation pass. Critically, do not reference the package class directly in resource files. Subclass it once as App\Filament\Fields\RichTextField and use that everywhere, so the vendor swap is a single-file change.

Compatibility. Pin the package to an exact version, pin Filament and Livewire majors, and — if assets come from a CDN — pin the CKEditor build version explicitly rather than inheriting a floating tag. Add a conflict constraint against the Filament majors you have not tested. Keep the field out of any resource that a Filament upgrade would touch first.

Sequencing. (1) Spike in a throwaway branch against a single resource: render, type, save, reload, trigger a validation error, trigger a reactive dependent field, and navigate away and back — the last three are where these wrappers fail. (2) Decide the sanitization posture before writing content: allowlist via symfony/html-sanitizer, applied on save, with tests covering <script>, onerror, and javascript: URLs. (3) Explicitly decide on image upload — disabling it for v1 is a legitimate and often correct answer, and it removes the largest unowned surface. (4) Accessibility and i18n check: label association, keyboard trap on exit, RTL, and locale wiring for the editor UI. (5) Roll out to one low-traffic content type, instrument for field-level errors, then expand. (6) Pre-commit to the fork contingency before rollout, not after.

Operational Impact

Maintenance. Budget for owning this within twelve to eighteen months. The realistic steady state is a private fork with upstream as a patch source: clone, add CI, add a Filament-major compatibility matrix, and track Filament releases manually since no one else will. That is perhaps two to four engineer-days a year in quiet periods and a one-to-two-week scramble the first time a Filament major lands. If your organisation cannot absorb that, it cannot absorb this dependency.

Support. There is no commercial support and effectively no community: the issue tracker of a 16-star repository is not an escalation path. Your team is tier one, two, and three. Write an internal runbook covering the fork process, the pinned versions and why they are pinned, the sanitizer configuration, and the known failure symptoms below.

Scaling. No server-side scaling concern — CKEditor is client-side and your web tier sees only the HTML payload. The real scaling limit is Livewire's habit of shipping component state on every request: a 300–500 KB long-form document round-trips on each interaction, inflating request size, latency, and memory. Mitigate with deferred or debounced state sync, ->dehydrated(false) where the value is not needed server-side, and a documented ceiling on document size. Watch post_max_size and Livewire's practical payload comfort zone; also confirm that editors are not instantiated inside large repeating Repeaters, where dozens of instances will degrade the admin panel noticeably.

Failure modes. Silent content loss when a Livewire re-render destroys the editor instance without re-hydrating — the highest-severity risk and the one to test hardest. Editor breakage from an unpinned CDN version bump or a CDN outage, hitting production without a deploy. Stored XSS from unsanitized HTML, surfacing in the admin panel first and the public site second. Empty-but-truthy state (<p></p>) defeating required validation. Orphaned upload endpoints if the adapter points at a route that later moves. Filament major upgrade with no upstream fix. GPL or premium-plugin drift creating licensing exposure if someone later extends the editor toolbar with a commercial feature.

Ramp-up. Half a day for a mid-level Filament developer to render and save a field; two to three days to do it properly once sanitization, upload decisions, and the re-render edge cases are included. Front-end engineers need only passing familiarity with Alpine. SRE impact is near zero — static JS assets only — but add the CDN to the third-party dependency and outage register if assets are not self-hosted, and prefer self-hosting from the start.

Recommendation. The 19.5 score and 38.6 opportunity figure are consistent with a niche wrapper that solves a narrow problem for its author. Use it as a scoped spike behind your own field abstraction, with sanitization and upload scope decided up front, and go in expecting to maintain it. Do not let it become load-bearing for a content-heavy product without a fork plan already in place.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package