rawilk/filament-quill
A Filament form field that brings the Quill rich text editor to your admin panels, with configurable toolbars and easy content handling.
Baseline established (no prior assessment). This assessment is written against release v2.0.1 of rawilk/filament-quill, a Laravel package that provides a Quill-based rich text form field for Filament panels. The v2.0.1 delta is narrow and low-risk: a Shift+Enter soft-line-break fix in the editor binding, and a CSS change replacing Tailwind @apply with direct CSS for the editor's minimum height.
Field subclass on the PHP side, a Livewire-aware Alpine/JS wrapper around Quill 2.x on the client side, plus publishable config and front-end assets. It sits inside the Filament form layer, so it inherits Filament's state binding, validation, and reactivity rather than introducing a parallel data path. That is the right shape for this problem. The meaningful architectural caveat is that it is a presentation component: it produces HTML strings and does not, on its own, guarantee safe storage or safe rendering. HTML sanitization on output (or on save) remains our responsibility, and any Blade view rendering stored content with unescaped output is an XSS surface regardless of which editor produced the markup.composer require, register the plugin on the target panel provider, publish config/assets, add the field to a form schema. The realistic effort is in verification, not installation: confirming the asset pipeline actually serves the new stylesheet, confirming Livewire re-renders do not desync editor state, and confirming the stored HTML round-trips through the rest of the app (search indexing, PDF rendering, email templates, API consumers) without surprises.@apply with direct CSS removes a hidden dependency on the host app's Tailwind build containing the utility classes. That is a genuine compatibility improvement — it fixes the common failure where a custom Filament theme, a purged CSS build, or a non-Tailwind front end silently drops the editor's minimum height. The residual risk is specificity and theming: hand-written CSS can now collide with panel theme overrides, and if the minimum height was previously tunable through utility classes, teams may find their old customization no longer applies and need to move it into package config or a published stylesheet.<br>-style soft breaks versus new paragraphs). It is the correct behavior for a rich text editor, but content authored before the fix may render with different paragraph spacing, and any downstream parser, diffing tool, or word-count logic that assumed one block per line will see different input.filament:assets / vendor:publish --force), and is that documented? Where does the minimum height now live, and how do we override it per panel or theme? Does the package bundle or CDN-load Quill, and does that survive a strict CSP (no inline styles/scripts)? What is the recommended sanitization pairing on render? Is image/file upload supported natively, and where do those files land and with what validation? Is there test coverage for Livewire re-render and disabled/readonly states?RichEditor when we specifically want Quill's paste behavior, toolbar model, or an existing Quill-based authoring convention.RichEditor (Tiptap), the payload is HTML on both sides, so most content transfers; the migration cost is in embeds, custom toolbar buttons, and any Blade renderers keyed to a specific tag structure. From a prior 1.x install of this same package, treat 2.0.0 as the migration event and 2.0.1 as a drop-in patch on top — but re-verify the published config and assets, since major lines routinely rename config keys and restructure the asset paths.composer.json constraints at install time. Pin the package version in composer.json and commit any published config/assets so panel themes and CI builds are reproducible. Treat the CSS fix as a reason to re-check customized Filament themes, which is where the @apply removal will surface if anything does.RichEditor, which is a same-day swap for most form schemas.->disabled() state changes desyncing editor content from form state, producing silent data loss on save; toolbar/config misconfiguration throwing at render time and taking down an entire form rather than one field; and theme CSS specificity now fighting hand-written package CSS after the @apply removal.How can I help you explore Laravel packages today?