CKEditor 5 migration from v26 to v47.3: lessons learned from the field

Between January and September 2026, I led the upgrade of an editorial application’s rich-text editor from CKEditor 5 v26 to v47.3: about 55 in-house plugins, 53 sub-PRs and 683 files. Here is what we learned, from the bare-editor strategy to the bugs only real typing revealed, the AI tooling that made it repeatable, and the two CKEditor issues it led to.

Continue Reading →

CKEditor 5 drag and drop: external block drops split paragraphs — root cause, workaround and fix proposal

Dragging a block object into CKEditor 5 from outside the editor shows an inline caret and splits the paragraph. Here is the root cause (a private _blockMode flag), a working workaround, a live StackBlitz demo, and the fix I proposed upstream in issue #20247.

Continue Reading →

Making simple spaces visible in CKEditor 5: a tiny plugin born from a 7-year-old issue

I needed to see the simple spaces in CKEditor 5, and the only thing out there was a 2019 proof of concept. So I packaged ckeditor5-simple-space: a tiny, dependency-free plugin that shows simple spaces with a toggle button — without ever touching your saved data.

Continue Reading →