We are happy to announce the release of CKEditor 5 v47.4.0.
Release highlights
This is a minor update focused on improving content editing workflows and data compatibility. We are introducing better visualization for table borders, enhanced image alignment handling, and several improvements to AI and email features.
Experimental table cell type support
We are introducing an experimental tableCellTypeSupport flag that enables changing table cell types between data and header cells (th). This feature provides more flexibility when working with complex table structures. Read more about how to enable it in the update guide.
Hidden table borders visualization
We are introducing a new config.table.showHiddenBorders configuration option (enabled by default) that helps editors work with tables that have hidden borders. When the editor detects inline border:none or border-style:none declarations on table and cell elements, it renders dashed helper borders in the editing view. This makes it easier to see the table structure while editing without affecting the output data. For strict WYSIWYG scenarios where you want the editing view to match the output exactly, this visualization can be disabled.
Email compatibility improvements
We improved the email styles transformation with better appearance of resized inline images in classic Outlook clients. Additionally, the new optional useFigureToTableFallback flag in the email styles transformers can replace figure (block images) with tables to improve alignment and width handling in older email clients with limited CSS support.
Other improvements and fixes
- Fixed multiple issues in the AI features, including improved tooltips for web search sources in AI Chat, proper handling of Quick Actions when opening the AI Chat panel, resolved loading state issues in the AI Review sidebar, and others.
- The editor now recognizes CSS
floatstyle on images (e.g.,style="float: left"orstyle="float: right") and automatically maps it to left/right image alignment. This works for both inline and block images, improving compatibility when pasting content from external sources or loading legacy content. If custom image styles are configured, they take precedence over the float style. - The Emoji plugin can now be used with the Emoji v17.0 dataset, which has been uploaded to the CKEditor CDN. This update does not change the default emoji version used by CKEditor.
Incoming old installation methods sunset reminder
Please note that the old installation methods will only remain available up to CKEditor 5 v48.0.0, which is planned for release at the beginning of Q2 2026. For more timeline details, refer to the dedicated GitHub issue.
In CKEditor 5 v42.0.0 in June 2024, we introduced new installation methods designed to improve and simplify the developer workflow. Soon, they will be the only available paths to install and use CKEditor 5.
If your project still relies on old installation methods, now is a good time to plan your next steps. We recommend choosing between these two options:
- Migrate to the new installation methods, which are the recommended path for most users. The new installation methods provide a cleaner setup, easier upgrades, and better alignment with future CKEditor 5 releases.
- Consider CKEditor 5 Long Term Support (LTS). If migrating in the near term is not feasible, you can extend support for legacy installation methods.
Features
-
table, theme-lark: Added support for visualizing hidden table and table cell borders through a new configuration option:
table.showHiddenBorders(enabled by default). The editor now detects inlineborder:noneandborder-style:nonedeclarations on table and cell elements and renders dashed helper borders in the editing view. This visualization can be disabled for strict WYSIWYG scenarios. Closes #19039. -
ai: Added a new tooltip for web search sources in the AI Chat.
The tooltip now displays the full link, favicon, and link title.
-
email: Added an inline-styles transformation that improves the appearance of resized inline images in classic Outlook clients.
Additionally, introduced an optional
useFigureToTableFallbackflag in the email inline-styles transformers. When enabled, figures (block images) are replaced with tables to improve alignment and width handling in older email clients that have limited CSS support. This enhances compatibility but adds extra markup, which may affect layout in some cases. -
emoji: The Emoji plugin can now be used together with the Emoji v17.0 dataset, which has been uploaded to the CKEditor CDN. This update does not change the default emoji version used by CKEditor. Closes #19394.
Bug fixes
-
basic-styles, icons: Fixed the superscript and footnote icons to properly inherit colors from CSS instead of using hardcoded fill values. Closes #19464.
-
email, export-inline-styles: Fixed incorrect table alignment in Classic Outlook when exporting inline styles with
getEmailInlineStylesTransformations. -
paste-from-office, table: The editor no longer crashes when calling
getData()on content containing a table with custom styling, provided that theTablePropertiesEditingandPlainTableOutputplugins are loaded without theTablePropertiesplugin. Closes #19512. -
code-block, typing: Fixed an error thrown when creating a code block via backticks on some keyboard layouts (e.g. US International). Closes #18926.
-
engine, undo: Fixed a bug where undoing changes to root attributes (e.g. the
orderattribute) would not restore the correct value. Closes #19483. -
ai: AI Review sidebar is no longer stuck in loading state for specific AI API responses with no real changes in the content.
-
ai: AI Chat related Quick Actions now open the AI Chat if it is closed or if another tab is currently active.
-
ai: The AI feature now functions correctly when used with the Title plugin.
-
ai: The document will no longer be added to the context automatically when it is disabled via the
ai.chat.context.document.enabledconfig. -
ai: Quick Actions that use AI Chat are now hidden when the document context is disabled via the
ai.chat.context.document.enabledconfig, as they require the document to function properly. -
ai: Editor toolbar is now always visible when AI Review suggestion is accepted or dismissed.
-
footnotes: The footnotes' definitions are no longer lost when pasting content that lacks the
application/ckeditor5-footnotesdata but contains footnote references and definitions. The plugin now extracts and merges footnote definitions from the pasted content, ensuring that existing footnotes are preserved and new ones are added correctly. -
image: The editor and its UI now recognize the CSS
floatstyle on images (e.g.style="float: left"orstyle="float: right") and map it to left/right image alignment. This applies to both inline and block images. If custom image styles are configured, then thefloatstyle is ignored. Closes #19521. -
link: Fixed an issue where setting editor data with multiple images or images mixed with text inside a single link would result in only the first image being preserved and the rest of the content being removed. Closes #18961.
-
media-embed: Added a
strict-origin-when-cross-originattribute to theiframetag when embedding YouTube videos. It corresponds with the YouTube documentation and resolves occurrences of error 153 when embedding YouTube videos.Thanks to @ampaze.
-
pagination: Fixed a crash in pagination that occurred when a to-do list item was the first element in the editor.
-
pagination: Fixed an issue with the incorrect order of page breaks for tables containing specific data.
-
revision-history: Stopped the revision history loading overlay spinner from animating while hidden. Closes ckeditor/ckeditor5#19558.
-
table: Fixed incorrect table rows moving as header row when preceding rows are not header rows. Closes #19431.
-
table: The default alignment for table headers in the output has been set to left to match the editing view and ensure consistent rendering across all browsers. Closes #19454.
-
typing: Disable text transformations inside inline code so automatic text transformation does not convert typed text. Closes #19557.
-
ui: Guarded dropdown panel selection handling against non-element targets to avoid errors when selecting text. Closes #19565.
Other changes
-
ai: The Track Changes suggestion markers are always grayed out in AI review, even if active.
This makes it easier to navigate when review check is active in content with many Track Changes suggestions and keeps full focus on changes created by AI.
-
ai: AI models displayed in Review and Chat are now sorted by their model family.
-
core: The
Editorclass constructor now detects if the providedEditorConfigis not an object. Closes #18072.The common source of this error is when an editor class (e.g.,
ClassicEditor) is mistakenly included in the plugins list when initializing Editor. -
table: Introduced the experimental
tableCellTypeSupportflag to enable changing table cell types betweendataandheader. To use this change, besides the flag, theTablePropertiesUIExperimentalandTableCellPropertiesUIExperimentalplugins must be used. See #16730. -
Removes operation and time limits from trial license.
Released packages
Check out the Versioning policy guide for more information.
Releases containing new features:
Other releases:
Released packages (summary)