We are happy to announce the release of CKEditor 5 v48.4.0.
Release highlights
⭐ AI Context Library
The new Context Library grounds CKEditor AI in your organization's knowledge instead of generic instructions. A context is a named container managed on the AI service that holds reusable prompts and reference files, such as a style guide, a glossary, or compliance rules. Once attached, every AI Chat conversation, Quick Action, Review, and Translate run follows them.
Contexts can be applied environment-wide by an administrator, per editor instance via the new config.ai.defaultContext option, or per call in programmatic flows, and they stay invisible to the end user. Learn more in the documentation.
⭐ Editor feature understanding and configuration awareness
CKEditor AI now knows your editor better. AI Chat requests include a compact snapshot of the loaded features and their configuration, so the responses stay within what your editor supports and respect your configured values, like the allowed heading levels, font sizes, or color palettes. The result: AI changes that apply cleanly to your exact setup.
Feature understanding works out of the box, with no configuration required, and this is only the first iteration. Support for custom plugins, dynamic data features, and working with comments and suggestions is planned. See the documentation for details.
⭐ AI image understanding
CKEditor AI now analyzes images embedded in the document, so it can describe them, generate captions, or take their contents into account when editing the surrounding text. It works in AI Chat and document processing. Learn more in the image analysis section of the integration guide.
⭐ Track Changes: clipboard mode
The new config.trackChanges.clipboardMode option controls how Track Changes suggestions behave when content is copied or cut. The default 'keep' places the selected content on the clipboard as-is, while 'accept' resolves the suggestions in the copy, so the clipboard holds the final text, as if the suggestions were already accepted. The source document stays untouched, which makes this especially useful when pasting content outside the editor.
Table improvements
This release brings a set of upgrades to the Tables feature, focused on everyday editing:
- Split multiple cells at once: select several cells and split them all horizontally or vertically in one go, instead of repeating the action cell by cell.
- Horizontal scrolling for wide tables: tables wider than the editor now scroll horizontally instead of overflowing or squeezing the page layout, thanks to the new
TableScrollplugin. - Pixel-based column widths: the Column resize feature now supports widths in pixels, following the table width unit, and an exact column width can be set through the cell width field. Widths set via the resize handle and the properties form now stay in sync.
Formatting preserved around block widgets
Inserting a block widget, such as an image or a table, no longer drops the active text formatting. The editor now carries selection attributes like bold, italic, or font styles over the widget, so typing after it (or inside a newly inserted table) picks up right where you left off.
Other improvements and fixes
- Added support for inline roots across the AI features, including AI Chat, Quick Actions, Review, and Translate.
- Programmatic AI actions now support multi-root editors and multi-editor
Contextsetups, andprocessDocument()accepts newcapabilitiesoptions that enable reasoning and web search. - In multi-editor setups, AI Chat now re-uploads only the documents that changed, instead of every document on any change.
- The AI suggestion status indicators (Accepted, Rejected, Outdated) have a refreshed look, and the Outdated indicator now shows a reason-specific tooltip explaining why the suggestion became stale.
- AI interactions that modify content are now disabled when the target editor is read-only. In setups with multiple editors this is decided per editor, so interactions targeting editable editors stay available.
- Inline root corrections across features: Find and replace now finds matches inside inline roots, while Show blocks and Footnotes no longer incorrectly work with them.
- Link improvements: decorators can now be configured while creating a link, before it is inserted, and the "Link properties" button is no longer disabled for empty links when
config.link.allowCreatingEmptyLinksis enabled.
MINOR BREAKING CHANGES ℹ️
- ai: Added support for multi-root editors and multi-editor
Contextsetups to the AI Translate API (AITranslateGateway). - ai: Added support for multi-root editors and multi-editor
Contextsetups to the AI Review API (AIReviewGateway). - ai: Added support for multi-root editors and multi-editor
Contextsetups toAIDocumentProcessingGateway#processDocument(). Replaced therootoption withrootsand changed the return type fromAIDocumentProcessingRunResulttoAIRunResult<AIDocumentProcessingRunResult>.
Features
-
ai, collaboration-core: Added an optional
rootoption to the Document Processing API'sprocessDocument()method, allowing integrators to target a specific root in multi-root editors and multi-editorContextsetups. -
ai: Updated the appearance of the AI suggestion status indicators (Accepted, Rejected, and Outdated). Added a reason-specific tooltip to the Outdated indicator that explains why the suggestion became outdated.
-
ai: Added optional
capabilitiesto the AI Document Processing API'sprocessDocument()options, allowing callers to enable reasoning and web search for AI requests. -
ai: Added a snapshot of the editor's loaded features and their configuration to AI Chat requests, allowing the agent to tailor its responses to the editor's capabilities.
-
ai: Added support for inline roots across the AI features, including AI Chat, Quick Actions, Review, and Translate.
-
ai: Disabled content-modifying AI interactions, such as applying or inserting a suggestion, when the target editor is read-only. In setups with multiple editors, interactions targeting editable editors remain available.
-
ai: Added a new configuration option,
config.ai.extraHttpHeaders, allowing the AI service to analyze document images hosted behind authentication, for example from a private CDN. -
ai: Introduced the
ai.defaultContextconfiguration option, allowing integrators to attach administrator-managed contexts from the Context Library, such as reusable prompts and reference files, to AI requests without exposing them in the user interface. This configuration is supported across all AI features, including AI Chat, AI Quick Actions, AI Review Mode, and AI Translate. -
link: Added support for configuring link decorators while creating a link, before inserting it into the document. Closes #20201.
-
table: Added horizontal scrolling for tables wider than the editor, preventing them from overflowing or squeezing the page layout. This behavior is provided by the new
TableScrollplugin. -
table: Preserved active text formatting, such as bold, italic, and font color, when inserting a table. Typing in any cell of the new table now continues the formatting used before the table. Closes #17152.
-
table: Added support for column widths in pixels to the table column resize feature when the table uses pixel widths. The cell width field can now set an exact width for an entire column in a resized table. Closes #14236.
-
table: Added support for splitting multiple table cells at once. Selecting several cells and choosing "Split cell vertically" or "Split cell horizontally" now splits each selected cell in one operation.
-
track-changes: Added the
trackChanges.clipboardModeconfiguration option to control whether suggestions are preserved or accepted when content is copied or cut. The source document remains unchanged.The default
'keep'mode places the selected content on the clipboard with its suggestions, while'accept'places the final content as if the suggestions were accepted. -
widget: Preserved active text formatting when inserting a new paragraph after a block widget. The editor now copies selection attributes, such as bold, italic, and font styles, from the text preceding the widget. Closes #17152.
Bug fixes
-
ai: Fixed an editor crash that occurred when applying an AI Chat change in specific multi-level list scenarios.
-
ai: Preserved comments and suggestions when applying an AI change to the surrounding content.
-
ai: Disabled dragging and dropping files or URLs into the AI Chat panel while an AI response is being generated. Previously, dropped resources were uploaded and then discarded when the response finished or was interrupted.
-
ai: Disabled the "Ask AI" quick action button while an AI Chat response is being processed, preventing a new chat interaction from starting before the current one finishes.
-
ai: Fixed an editor crash that occurred for some AI Chat queries when General HTML Support was enabled and the content included an
<h1>element. -
ai: Updated the AI Chat feed to scroll to every new error message.
-
ai: Disabled AI Chat quick actions while a conversation is loading from history or a reply is streaming. Previously, they could be triggered before the chat was ready.
-
ai: Fixed an issue where the AI Chat feed sometimes appeared stuck after submitting a message while a large document was loaded.
-
ai: Fixed the AI Chat submit button remaining disabled after starting a new chat while a file or URL was still uploading in a previous conversation. Starting a new conversation now resets the upload progress state.
-
ai: Fixed the
formatBlocksuggestion marker being cut off in AI suggestion previews, including the AI Chat feed. -
engine: Fixed a memory leak that occurred when an editor instance remained referenced after being destroyed.
-
find-and-replace: Fixed an issue where Find and Replace did not find matches inside inline roots.
-
find-and-replace: Fixed a memory leak that could degrade editor performance during long editing sessions after replacing all occurrences of a search phrase.
-
footnotes: Prevented footnotes from being inserted into inline roots. Footnotes within inline roots now use the first non-inline root for the footnote definitions container instead of omitting it.
-
fullscreen: Prevented contextual balloons from overlapping the main editor toolbar in fullscreen mode when scrolling through elements taller than the visible editor area, such as large tables. Closes #20194.
-
link: Fixed the "Link properties" button being disabled for links with an empty URL, even when
config.link.allowCreatingEmptyLinkswas enabled. -
mention: Prevented the mention suggestions panel from overflowing the viewport on narrow screens. When the caret is close to the screen edge, the panel now shifts horizontally to keep the entire list visible. Closes #20182.
Thanks to @ELHart05.
-
show-blocks: Prevented Show Blocks from applying to inline roots. The toolbar button is now disabled when the editor has no block roots.
-
style: Prevented style previews from overflowing their buttons in the Styles dropdown. Closes #20200.
-
table: Fixed a crash (
conversion-slot-filter-incompleteerror) that occurred when loading or pasting content containing multiple<table>elements wrapped in a single aligning<div>. Closes #20209. -
ui: Fixed the contextual balloon closing unexpectedly when using its "Previous" and "Next" navigation buttons. Clicking these buttons no longer moves focus out of the editor, so focus-sensitive views such as the balloon toolbar stay visible.
Other changes
- ai: Exposed structured backend error data from AI gateway connectors, such as an
issueslist describing fields that failed validation, underresult.error.data.backendData. - ai: Updated AI Chat in multi-editor setups to re-upload only changed documents. Previously, changing one document re-uploaded documents from all editors.
- document-outline: Added support for recognizing all heading elements (
<h1>through<h6>) in Document Outline and Table of Contents, regardless of whether Heading or General HTML Support handles them. These elements now receive anidattribute in the document data and aheadingIdattribute in the model. - Separated editor UI styles from content styles. No visual or functional changes are expected, but integrations with heavily customized styling should verify their appearance after updating.
Released packages
Check out the Versioning policy guide for more information.
Minor releases (contain minor breaking changes):
Releases containing new features:
Other releases:
Released packages (summary)