kisame76/filament-advanced-rich-editor
Advanced rich text editor for Filament and Laravel admin panels. Adds a customizable WYSIWYG field with formatting, media, and content tools, making it easy to author, edit, and manage polished rich content directly in forms, resources, and admin interfaces. Built for FilamentPHP and Laravel project...
Architecture fit
Unchanged at the core: the package is a Filament v5 form field extending RichEditor, inheriting the standard schema-component lifecycle — ->make(), state binding, validation, Livewire dehydration. Adoption remains a per-field class swap, resource by resource, behind a flag.
Two things in v1.7.0 sharpen the architectural picture:
menu-position.js, image-panel.js, color-picker.js, font-size-picker.js, plus the pre-existing media browser, are now separate assets loaded via x-load-src / x-load-css. This is a better architecture than inline x-data blobs, but it means the field is now a small JS application with a lazy-loading manifest. The CSP conversation is no longer "add a nonce"; it is "verify dynamic script/style injection under our CSP, on our panel, before rollout."The MediaSource / ReplacesMedia seam and the mediaLibraryDocuments registry remain the two extension points a TPM must own. Nothing in this release changes their shape.
Integration feasibility
Still low code churn, moderate configuration work. v1.7.0 adds two mandatory upgrade mechanics that did not previously exist:
filament-advanced-rich-editor-overlays.css) is not published by the package and is loaded at editor start. Skip php artisan filament:assets and pickers, menus, media browser, find/replace and dialogs render unstyled — not broken, but visibly wrong and plausibly mistaken for a CSS bug. This must be a step in the deploy pipeline, not a README footnote.description_list, invisibles, and the new tools_menu entries do not appear in an already-published config. Republishing overwrites — so the upgrade procedure is publish-to-a-temp-path, diff, merge. Every minor from here on may add config keys.Technical risk
The dominant risk remains adoption, not technology: still a single maintainer, still a thin downstream base. What v1.7.0 does change is the character of that risk — the release is a deep, measured performance pass with server timings, first-frame timings, long-task counts and byte counts quoted throughout. That is the work of someone instrumenting their own package. It is a strong positive signal on engineering quality, and it is still not a support commitment.
Risk profile changes:
menu-position.js alone, ≈20 KB from hoisted emoji/character strings, ≈10 KB from icon de-duplication, 49 KB across five editors from the image panel). My earlier "measure the asset surface" caveat stands but is now a much smaller number.Unchanged risks: cascading reference rewriting on delete/replace (transactionality still undescribed — I did not see it addressed), browser-local drafts, no version support policy, no security disclosure process described.
One new behavioural risk worth naming: enabling definition lists over an existing run of paragraphs converts "every other one" into a term. That is a content-mutating edit with a plausible-but-wrong default if an editor toggles it on a pre-existing block. The feature is off by default, which is the right call.
Key questions
x-load-src / x-load-css respect a nonce-based CSP, and is that tested?viteTheme, multiple panels)?php artisan filament:assets documented as a mandatory post-upgrade step, and is there a version-check that fails loudly rather than rendering unstyled overlays?RichEditor, or does it collide?Stack fit
Unchanged hard gate: Laravel 11/12, PHP 8.2+, Filament v5, Livewire 3, Alpine. Spatie Media Library v11 for the attachment feature. Filament v3/v4 estates cannot use this and there is no downgrade path.
One addition: because the package now ships a JS build with lazy-loaded modules and an unhashed overlay stylesheet, the deployment target must run php artisan filament:assets as part of release, and the panel must permit runtime x-load-src / x-load-css under whatever CSP is in force. If assets are baked into an immutable container image, the publish step belongs in the image build, not at container start.
Migration path
Per-field swap remains mechanical. The non-mechanical parts are unchanged (content round-trip fidelity, media marker syntax backfill) plus one new one: config drift. Published configs from a prior 1.x will not gain description_list, invisibles, or the new tools_menu entries. Plan a publish-and-diff step into every minor upgrade rather than treating the config as static.
If we are already running a 1.x, treat 1.7.0 as a deploy-gated change: publish assets, publish-and-merge config, smoke-test the overlay UI (pickers, menus, media browser, find/replace) before promoting.
Compatibility
x-load-css and x-load-src specifically, not just the main bundle.RichEditor extensions in the same panel.Sequencing
php artisan filament:assets into the pipeline. Establish the publish-and-diff config procedure. Both before any content work.MediaSource implementation over the existing DAM.mediaLibraryDocuments.mediaLibraryDeletable to a named admin role; replace to content leads. Policies written before the UI is enabled.RichEditor selectable at runtime.Maintenance
Assume we may own patches. Budget roughly 1–2 engineer-days per month for dependency tracking (Filament minors, TipTap, Spatie Media Library) plus unplanned fixes; the 5.10 positioning regression is a realistic example of the unplanned kind. Assign a named maintainer. Track TipTap advisories directly — we now know the engine, so there is no excuse not to.
Two new maintenance line items: the asset-publish step must survive in the deploy pipeline (someone will "optimise" it out), and published configs must be re-diffed on each minor.
Support
Still no commercial support, no SLA, GitHub issues only. Internal support cost is unchanged and dominated by editor helpdesk tickets. v1.7.0 adds visible tools that will generate questions — "Show blocks" (which labels everything P, H2, LI) and "Show invisible characters" are power-user views that will alarm non-technical editors if discovered accidentally. Both are non-destructive and reset per page load, but the editor guide should name them and say what they are for. The AI-translated locales should not be presented to non-English editors as reviewed translations.
Scaling
Failure modes
| Failure | Impact | Mitigation |
|---|---|---|
| Assets not republished after upgrade | Pickers, menus, media browser render unstyled; looks like a CSS regression | filament:assets in the deploy pipeline; smoke-test overlays post-deploy |
| Published config not re-diffed | New features silently unavailable; tools_menu entries missing |
Publish-and-diff step on every minor |
CSP blocks x-load-css / x-load-src |
Overlays load without styles or scripts | Verify against our CSP in the spike, with nonces |
| Editor assets fail entirely (build) | Editors blocked | Feature flag back to stock RichEditor |
| Partial rewrite during delete/replace | Broken embeds, silent front-end 404s | Transaction + dry-run; front-end link checker as defence in depth |
| Over-permissioned delete of shared file | Mass content damage across many documents | Narrow mediaLibraryDeletable role; audit log |
| Definition lists toggled on a run of existing paragraphs | Half the paragraphs silently become terms | Off by default; document the behaviour; train editors before enabling |
| Stale CDN/conversion cache after replace | Users see the old asset | Explicit purge step in the runbook |
| Draft lost (cache clear, incognito) | Editor frustration, lost work | UI copy stating drafts are browser-local |
| Filament minor breaks positioning | Toolbar pickers render in the bar instead of over text | Pin Filament minors; CI compatibility gate |
| Unpatched TipTap vulnerability | Panel-wide exposure | Direct advisory tracking; fork readiness |
Ramp-up
Developers: low, with one addition — whoever owns the deploy pipeline must understand the asset-publish and config-diff steps, or the first minor upgrade ships a broken-looking editor. Content editors: medium, unchanged in substance; add a line to onboarding about the two new view toggles so nobody files a ticket about the ¶ symbols. The definition-list command needs a one-line warning: don't toggle it on a block of existing paragraphs you care about. Ops/admin: moderate, focused on storage growth and shared-file deletes.
Verdict for a TPM
v1.7.0 materially improves the two operational objections I raised in the previous assessment — panel-wide CSS weight and multi-editor render cost — and does so with quoted measurements rather than adjectives. It also fixes a Filament 5.10 regression, which is the first evidence that the maintainer tracks Filament minors in practice rather than in principle. Combined with the move from PHP string assertions to real JavaScript tests, this is a package being engineered rather than merely published.
None of that changes the structural position: still a single maintainer, still a thin downstream base, still no support policy. Adoption posture is unchanged — internal admin tooling where we can tolerate and patch breakage, feature-flagged with a stock-RichEditor fallback, a fork kept warm, and nothing customer-facing or compliance-critical until it has survived a full Filament upgrade cycle in our hands. What has changed is the cost of that posture: the runtime overhead argument against it is now much weaker, and the upgrade checklist is longer by two items (asset publish, config diff).
How can I help you explore Laravel packages today?