makraz/ux-quill
makraz/ux-quill is a Laravel package that adds a ready-to-use Quill rich-text editor Blade component. Drop it into forms, customize the toolbar, and store HTML or Delta content with minimal setup—ideal for clean WYSIWYG editing in Laravel apps.
QuillType drops a full WYSIWYG into any Symfony form, stores HTML in a hidden field, and handles the two-way sync plus native input/change events that form validation and Live Components depend on. That is roughly the scope of a 1–3 sprint frontend task converted into a composer dependency.symfony/stimulus-bundle, Symfony Forms, and Symfony 6.4/7/8. It has no bearing on a Laravel roadmap — for Laravel the equivalents are Filament's RichEditor, Livewire-based editors, or a standalone Quill/Alpine integration. Treat this release as relevant only if the product surface in question is Symfony.QuillAdminField is a one-liner for EasyAdmin, which makes this a cheap upgrade to internal back-office editing without committing to a JS build pipeline (works with both AssetMapper and Webpack Encore).Adopt for a spike or a low-risk surface when:
symfony/stimulus-bundle >= 2.9.1 is present or easy to add.quill:options, quill:connect, and quill:change events, custom toolbar configs, snow/bubble themes, readOnly, and minHeight cover most product asks (preview mode, custom toolbars, autosave-on-change) without forking.Look elsewhere when:
quill:options/quill:connect events or look at a batteries-included editor.Evaluation checklist before committing: run a one-day spike covering (1) a form with validation failing server-side, (2) Live Component re-render, (3) EasyAdmin field, (4) a custom toolbar, (5) paste-from-Word and paste-as-plain-text, (6) sanitize-on-save, (7) keyboard-only accessibility and screen-reader behavior of the toolbar.
For executives (one paragraph): This is a small, free, open-source Symfony bundle that embeds the Quill 2 rich text editor into standard Symfony forms with no custom JavaScript. It converts a recurring "we need a WYSIWYG here" build item into a configuration task and works with our existing asset pipeline, so it is cheap to trial and cheap to remove. The caveat is maturity: it is a first, explicitly experimental release with no compatibility promise between versions. The right posture is to pilot it on an internal admin surface, pin the version, and expand only if it holds up — not to standardize it across customer-facing editors this quarter.
For engineering: Integration is a Symfony form type (QuillType) plus an optional EasyAdmin field; the editor state is a normal hidden input emitting native input/change events, so existing validators and data-live-ignore Live Components keep working. Customization is deliberately open: three Stimulus events (quill:options, quill:connect, quill:change) let us adjust config, hook initialization, and react to content changes without patching the bundle. Two things are on us, not the bundle: HTML sanitization on save/render, and an image upload adapter if we want anything beyond base64 inline images. Version-pin it and assign an owner for upgrade reviews.
For product/design: We get the expected editing surface immediately — headings H1–H3, bold/italic/underline/strike, ordered and unordered lists, blockquote, code block, links, images, clear-formatting — plus two layouts (snow toolbar, bubble floating) and per-field control over placeholder, read-only preview mode, and minimum height. Custom toolbars are configurable, so we can ship a reduced toolbar per content type rather than one compromise toolbar everywhere. Ask for accessibility validation and a paste-behavior decision (rich vs. plain text) during the pilot; those are product choices the package will not make for us.
Recommendation: Approve a time-boxed pilot on an internal admin form; pin to v0.1.0; define a sanitization policy and an image-handling decision as pilot exit criteria; revisit standardization once the package reaches a stable 1.x or after two clean upgrade cycles.
How can I help you explore Laravel packages today?