45.1.0 (May 14, 2025)
We are happy to announce the release of CKEditor 5 v45.1.0.
The typing behavior has been improved for plain text typing. This adjustment allows the web browser to handle text insertion before the editor processes it, enhancing typing reliability across various scenarios, especially on Safari and iOS devices. Issues related to track changes, autocorrect, automatic text replacement, and other input methods have been addressed.
A new method to start a "tracking session" has been introduced, preventing automatic merging of adjacent suggestions. This allows for more precise control over individual changes, catering to workflows that require selective acceptance of edits.
- Sticky toolbars and balloons are now better aligned with the visual viewport on iOS and Safari, ensuring correct positioning when zooming.
- The fullscreen plugin has been improved to maintain scroll position when exiting fullscreen, avoiding unexpected jumps on smooth-scrolling pages. Layout consistency has been refined by adjusting margins and editable width. Errors related to the Content minimap plugin in fullscreen mode have also been resolved.
- Introduced a fix which ensures that the
data-author-id
anddata-suggestion
attributes are preserved in non-block suggestions when retrieving data withshowSuggestionHighlights: true
. - We improved the algorithm for images detection in the Paste from Office feature, in scenarios of mixed local and online images from Microsoft Word. Paste no longer causes some images not to appear.
MINOR BREAKING CHANGES ℹ️
- The default behavior of the
beforeinput
DOM events is no longer prevented in plain text typing scenarios. Now, the engine waits for DOM mutations and applies changes to the model afterward. This should not affect most integrations however, it may affect custom modifications to text insertion into the editor.
-
ckeditor5-code-block: The
Go
/Golang
programming language was added to the@ckeditor/ckeditor5-code-block
package. Closes #18403. (commit)Thanks to @abdorrahmani!
-
clipboard: Exported the
ClipboardObserver
class from the package. Closes #18385. (commit) -
track-changes: Added a method for starting a new tracking session in track changes.
-
utils: Recognize Urdu as an RTL language. Closes #16900. (commit)
Thanks to @smtaha512!
-
comments: Fixed a crash happening for some asynchronous collaboration integrations, when the
TrackChangesData
plugin was used while there was a resolved comment thread in the document's initial data. -
email: Fixed incorrect documentation links in the email configuration helper.
-
fullscreen: Minor styling improvements. Closes #18470. (commit)
-
fullscreen: Changed the method use to recognize the editor type in fullscreen. Closes #18395. (commit)
-
fullscreen: Fixed restoring scroll position after leaving fullscreen mode for containers with
scroll-behavior: smooth
. Closes #18378. (commit) -
html-support: Removing formatting from empty HTML no longer crashes the editor. Closes #18089. (commit)
-
html-support: Pasting an empty HTML element no longer crashes the editor. Closes #18100. (commit)
-
image: Consume the
.image_resize
class and the[aspect-ratio]
style during the upcast of the images. Closes #18287. (commit) -
link: Fixed a bug where the editor would crash or do nothing when pressing the enter key in newline-suppressed scenarios (such as limit elements). Closes #15862. (commit)
Thanks @jonscheiding!
-
minimap: The plugin no longer throws errors when entering the fullscreen mode. Closes #18472. (commit)
-
paste-from-office: Mixed local and online images from Microsoft Word paste no longer cause some images to disappear. Closes #18180. (commit)
-
source-editing-enhanced: When the Enhanced Source Editing dialog is open, all editor commands are now disabled to prevent accidental content edits and unintended UI interactions.
-
table: Table selector regarding margins should not override the style created during integrations. Closes #18428. (commit)
-
track-changes: Fixed insertion suggestion not restored on undo after it was rejected. This affected specific suggestions which included pressing the enter key. Closes #18449. (commit)
-
track-changes: Fixed a crash happening for some asynchronous collaboration integrations, when
TrackChangesData
plugin was used while there was a resolved comment thread in the document's initial data. -
track-changes: An empty element was incorrectly left when an insertion suggestion that ended on "enter key press" was discarded. Also fixed the same error in a case where a similar deletion suggestion was accepted. Related to #18448.
-
track-changes: Added missing
[data-suggestion]
and[data-author-id]
attributes to all suggestion types in editing and data pipelines. -
typing: Typing in track changes mode no longer reverses typed letters in Safari. (commit)
-
typing: The Mac VoiceOver now reads typed characters when typing. Closes #15436. (commit)
-
typing: Mac text replacement shortcuts will now correctly replace text in Safari. Closes #13428. (commit)
-
typing: The list items and headings at the beginning of the editable area can be changed to a plain paragraph on backspace keypress. Closes #18356. (commit)
-
ui: Ensure the table properties form is fully visible within the viewport. Closes #16133. (commit)
-
ui: Optimized performance of dropdowns when opening with many items. Closes #18094. (commit)
-
The sticky toolbar and inline editor toolbar should maintain their visual position relative to the editing area, no matter the visual viewport scale or scroll in Safari on desktop and mobile devices. The contextual balloon position should be aware of the part of the top viewport offset visible in the visual viewport on Safari on desktop and mobile. Closes #7718. (commit)
- core: Non-production license notifications should only be displayed once per page load. Closes #18179. (commit)
- engine: Introduced the
doNotFixSelection
option formodel.deleteContent()
which can be used to force making deletion exactly on the provided selection. Closes #18448. (commit) - track-changes: Fixed an incorrect French translation in the Track changes feature.
- typing: Improved typing performance in large documents. (commit)
Check out the Versioning policy guide for more information.
Released packages (summary)
Releases containing new features:
- @ckeditor/ckeditor5-clipboard: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-code-block: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-utils: v45.0.0 => v45.1.0
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-ai: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-alignment: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-autoformat: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-autosave: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-basic-styles: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-block-quote: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-bookmark: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-case-change: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-ckbox: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-ckfinder: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-cloud-services: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-collaboration-core: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-comments: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-core: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-document-outline: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-easy-image: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-editor-balloon: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-editor-classic: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-editor-decoupled: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-editor-inline: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-editor-multi-root: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-email: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-emoji: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-engine: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-enter: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-essentials: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-export-inline-styles: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-export-pdf: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-export-word: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-find-and-replace: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-font: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-format-painter: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-fullscreen: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-heading: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-highlight: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-horizontal-line: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-html-embed: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-html-support: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-icons: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-image: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-import-word: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-indent: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-language: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-link: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-list: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-list-multi-level: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-markdown-gfm: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-media-embed: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-mention: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-merge-fields: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-minimap: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-operations-compressor: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-page-break: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-pagination: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-paragraph: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-paste-from-office: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-paste-from-office-enhanced: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-real-time-collaboration: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-remove-format: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-restricted-editing: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-revision-history: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-select-all: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-show-blocks: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-slash-command: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-source-editing: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-source-editing-enhanced: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-special-characters: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-style: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-table: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-template: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-theme-lark: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-track-changes: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-typing: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-ui: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-undo: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-upload: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-uploadcare: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-watchdog: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-widget: v45.0.0 => v45.1.0
- @ckeditor/ckeditor5-word-count: v45.0.0 => v45.1.0
- ckeditor5-collaboration: v45.0.0 => v45.1.0
- ckeditor5-premium-features: v45.0.0 => v45.1.0
45.0.0 (April 7, 2025)
The CKEditor 5 v45.0.0 release brings powerful new features and improvements, making content creation smoother and more versatile. From enhanced email editing to a refined linking experience and a brand-new full-screen mode, this update is packed with valuable upgrades.
We are making it easier to create and edit emails directly in CKEditor 5 with several enhancements. This release introduces the following new features:
- Export with Inline Styles (⭐) provides the ability to export email content with automatically inlined styles, ensuring compatibility and proper rendering across different email clients.
- Email Configuration Helper (⭐) is a new configuration helper plugin that provides guidance for integrators to correctly set up an email-friendly editor while avoiding common pitfalls.
- Layout tables: are a new type of tables that has been introduced to simplify the creation of structured email designs, offering better control over layout, alignment and spacing.
Apart from these new features, this update also brings various fixes and improvements related to table behavior, enhanced HTML support, and better handling of complex email structures. These refinements help ensure a more seamless email editing experience, reducing inconsistencies and improving compatibility with external email clients.
A long-requested feature has finally arrived with the introduction of full-screen editing for the classic and decoupled editor types. This new mode provides a focused writing experience by making the editor the centerpiece of the screen. The expanded screen space allows for better visibility of content in sidebars such as comments, suggestions, and document outlines, enhancing your overall workflow.
Linking in CKEditor 5 has been significantly upgraded with a redesigned user interface, making adding and editing links more intuitive. We added the possibility to add and edit the display text of a link. Users can now easily link to bookmarks within the document and select links from predefined lists (defined by the developer). These improvements make inserting and managing links faster and more flexible than ever before.
During this initiative, we also aligned visual and technical components of the editor. Each balloon got a header with the tile, we also unified the toolbar behavior and keystrokes of Link and Bookmarks with other widget’s toolbars like image and tables.
Note
The UI got updated in several places: main view, link properties (decorators), and also its technical implementation changed. Make sure to give special attention to the update if you did any customizations to the link interface.
We are continuing to strengthen the new installation methods while phasing out older solutions. We added one of the key components you asked for: replacing our icons with your custom ones. It is now possible to replace the icons via the package’s override mechanism.
Note
To achieve a proper solution for icons replacement for the npm builds, we needed to introduce a breaking change. If you used our icons for any purposes, make sure to update their paths.
We are progressing with deprecation according to our sunset plan. From this release, predefined builds’ packages, such as @ckeditor/ckeditor-build-classic
, are now officially deprecated.
We also dropped support for Webpack 4 in both the old and new installation methods. All packages and CDN from this version are now distributed with ES2022 as the target ECMAScript version, providing better compatibility with modern JavaScript features and improved performance.
By the end of 2025, custom builds that rely on webpack and DLL builds will also be deprecated. Refer to our documentation and migration guides to ensure a smooth transition.
We are committed to making CKEditor 5 even better. Stay tuned for more improvements in upcoming releases! If you have any feedback, let us know — we are always listening.
Please refer to the update guide to learn more about these changes.
Happy editing!
MAJOR BREAKING CHANGES ℹ️
- bookmark: The
BookmarkUI#actionsView
is no longer available. The bookmark feature is now using theWidgetToolbarRepository
instead. - build-*: CKEditor 5 predefined builds are no longer available.
- link: The
LinkUI#actionsView
is no longer available. The bookmark feature now uses theLinkUI#toolbarView
(an instance of theToolbarView
class) instead of the customLinkActionsView
.
MINOR BREAKING CHANGES ℹ️
- link: The
createBookmarkCallbacks()
helper is now replaced by theisScrollableToTarget()
andscrollToTarget()
helpers. - table: The
FormRowView
class was moved to the@ckeditor/ckeditor5-ui
package. - table: The
form.css
component was moved to the@ckeditor/ckeditor5-theme-lark
package. - All CKEditor 5 icons are now available in the
@ckeditor/ckeditor5-icons
package.
- All packages and CDN source code now target ES2022 as the ECMAScript version.
- email: Introduced a new package to validate the editor configuration for email compatibility. It helps prevent misconfigurations by enforcing best practices and future-proof rules. Added utilities for post-processing CSS, improving support across various email clients by adjusting styles for better rendering consistency.
- export-inline-styles: Added a new package for exporting content with inline styles. Ensures CSS classes (
[class]
) and IDs ([id]
) are inlined within elements, improving compatibility with email clients that strip external styles. It helps maintain consistent formatting across different email clients, reducing rendering issues. - fullscreen: Introduced the fullscreen mode feature. Closes #18026. (commit)
- html-support: Introduced the ability to render the
<style>
elements from the<head>
section of editor data content using theFullPage
plugin. See #13482. (commit) - revision-history: Added a new property
RevisionHistory#isRevisionViewerOpen
that indicates whether the revision history is opened or not. - source-editing-enhanced: The one-dark theme is now built-in and available via
config.sourceEditingEnhanced.theme
by passing the'dark'
value. This change enables the use of the dark theme with the CDN installation method, which does not support externalCodeMirror
dependencies. Additionally, if you previously used theoneDark
extension directly, you can now switch totheme: 'dark'
for built-in support. - table: Introduced the layout tables feature to enable constructing grids with tables, for example for email editing. These tables are designed for layout purposes, and include the
role="presentation"
parameter for accessibility. Users can insert layout tables via the editor toolbar and switch between content and layout tables. The editing view now closely matches the rendered output. Closes #18132. (commit) - table: Added the ability to toggle between content tables and layout tables. Users can switch table types using a split button in the table properties UI. While captions and
<th>
elements may be lost, table structure remains intact. Closes #18131. (commit) - table: Dragging and dropping a table into another table no longer merges them. Instead, the dropped table is placed as a whole inside the target cell. Pasting tables remains unchanged. Closes #18126. (commit)
- template: Inserting a template containing a table into another table no longer merges them. Instead, the template is placed as a whole inside the target cell. See #18126.
- theme-lark: Introduced the
form.css
component . (commit) - ui: Added the
MenuBarView#disable()
andMenuBarView#enable()
methods. They disable/enable all top-level menus in menu bar. Closes #17940. (commit) - ui: Added the
ToolbarView#switchBehavior()
method to switch toolbar behavior after the editor has been initialized. Closes #18159. (commit) - ui: Introduced the
FormRowView
class. (commit) - Moved all icons to the
@ckeditor/ckeditor5-icons
package. Related to #16546. (commit) - Added the
@ckeditor/ckeditor5-icons
package to the core DLL package. (commit)
- ckbox: Resolved an issue where images from private categories were not appearing in the selector. Closes #18044. (commit)
- emoji: Fixed the emoji panel not being visible while used in comments archive. Closes #17964. (commit)
- engine: The selection should not move to another table row while switching heading rows. Closes #17962. (commit)
- heading: Added the missing
converterPriority
type definition toHeadingOption
interface. Closes #18182. (commit) - html-support: The floated tables are now loaded and showed as expected in the editor's view. Closes #18203. (commit)
- link: The
Autolink
feature will now correctly autolinkhttp://localhost
andhttp://localhost:port
. Closes #18185. (commit) - mention: Fixed the mention panel not being visible while used in comments archive. Closes #17964. (commit)
- revision-history: Revisions will now correctly retain data for HTML embed widget, as well as
<script>
and<style>
tags enabled by the General HTML Support feature. Before, when revision was saved, these elements were saved empty, and this lead to data loss when such revision was restored. Note, that this will not fix revisions that are already affected by this error. - revision-history: Fixed a crash when viewing a revision which had an HTML comment node in its data (reproducible with General HTML Support plugin).
- revision-history: Fixed handling
UIElement
s andRawElement
s by revision history (may concern third-party custom plugins). - revision-history: Fixed a crash when viewing a revision which had a collapsed marker in its data (may concern third-party custom plugins).
- table: Removed
[role="textbox"]
from the<td>/
` editables. Windows Narrator no longer reads table dimensions as 0 by 0. Closes #16923. (commit) - track-changes: The editor no longer crashes during initialization when the
ShiftEnter
plugin is removed. - ui: Do not open disabled menu bar menu items on arrow down press. Closes #17915. (commit)
- ui: The
ButtonView#icon
property can now be set/reset after the button's first render. (commit) - table: Widgets UI elements should be visible when they are inside tables. Closes #18268.
- table: Nested tables outline should not be cut of at the bottom during hovering. Closes #18262.
- link: Link balloon no longer disappears when scrolling the page slightly on iOS. Closes #18022.
- bookmark: The Bookmark feature now uses the
WidgetToolbarRepository
instead of a customActionsView
to display the bookmark toolbar in the contextual balloon. The new toolbar uses components registered in theComponentFactory
. (commit) - bookmark: Form styles and structure are now unified with use of
ck-form
andck-form__row
. (commit) - collaboration-core: Translations are now supported in the date formatter used by comments and suggestions, allowing for localizing dates.
- engine: Added the read-only
DomConverter#domDocument
property. Closes #18146. (commit) - image: Image and custom resize form styles and structure now unified with use of
ck-form
andck-form__row
. (commit) - link: The link feature now uses the
ToolbarView
instead of a customLinkActionsView
to display the link toolbar in the contextual balloon. The new toolbar uses components registered in theComponentFactory
. (commit) - link: Form styles and structure are now unified with use of
ck-form
andck-form__row
. (commit) - real-time-collaboration: Added a more modern look to the presence list collapsed view (used when many users are connected to the document).
- revision-history: The document outline will now be hidden when the revision history is opened.
- source-editing: Document outline and annotations will now be hidden when editor is in source editing mode. Closes #17978. (commit)
- table: Extracted the
form.css
to@ckeditor/ckeditor5-theme-lark
package. (commit) - table: Extracted the
FormRowView
to@ckeditor/ckeditor5-ui
package. (commit) - ui: The
IconView
now throws a meaningful error if the provided icon content is not a valid SVG. (commit) - widget: The
WidgetToolbarRepository#register()
now accepts a customized list of desired balloon positions. (commit) - Added the
Belarusian
language translations for CKEditor 5. Huge thanks to @karavanjo. (commit) - Upgraded the minimal version of Node.js to 20.0.0 due to the end of LTS. (commit)
- Updated TypeScript
target
toes2022
. Closes #17886. (commit) - Replaced
lodash-es
withes-toolkit
. See #16395. (commit) - The
@ckeditor/ckeditor5-build-*
packages are no longer maintained. (commit)
Check out the Versioning policy guide for more information.
Released packages (summary)
New packages:
- @ckeditor/ckeditor5-email: v45.0.0
- @ckeditor/ckeditor5-export-inline-styles: v45.0.0
- @ckeditor/ckeditor5-fullscreen: v45.0.0
- @ckeditor/ckeditor5-icons: v45.0.0
Major releases (contain major breaking changes):
- @ckeditor/ckeditor5-bookmark: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-link: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-table: v44.3.0 => v45.0.0
Releases containing new features:
- @ckeditor/ckeditor5-adapter-ckfinder: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-alignment: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-autoformat: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-autosave: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-basic-styles: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-block-quote: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-ckbox: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-ckfinder: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-clipboard: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-cloud-services: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-code-block: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-core: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-easy-image: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-editor-balloon: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-editor-classic: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-editor-decoupled: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-editor-inline: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-editor-multi-root: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-emoji: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-engine: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-enter: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-essentials: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-find-and-replace: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-font: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-heading: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-highlight: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-horizontal-line: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-html-embed: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-html-support: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-image: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-indent: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-language: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-list: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-markdown-gfm: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-media-embed: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-mention: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-minimap: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-page-break: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-paragraph: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-paste-from-office: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-remove-format: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-restricted-editing: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-select-all: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-show-blocks: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-source-editing: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-special-characters: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-style: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-theme-lark: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-typing: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-ui: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-undo: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-upload: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-utils: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-watchdog: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-widget: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-word-count: v44.3.0 => v45.0.0
Other releases:
- @ckeditor/ckeditor5-ai: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-case-change: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-collaboration-core: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-comments: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-document-outline: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-export-pdf: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-export-word: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-format-painter: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-import-word: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-list-multi-level: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-merge-fields: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-operations-compressor: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-pagination: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-paste-from-office-enhanced: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-real-time-collaboration: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-revision-history: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-slash-command: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-source-editing-enhanced: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-template: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-track-changes: v44.3.0 => v45.0.0
- @ckeditor/ckeditor5-uploadcare: v44.3.0 => v45.0.0
- ckeditor5-collaboration: v44.3.0 => v45.0.0
- ckeditor5-premium-features: v44.3.0 => v45.0.0
44.3.0 (March 5, 2025)
We are happy to announce the release of CKEditor 5 v44.3.0.
This release brings a couple of minor improvements and bug fixes:
- Link Decorators: We fixed the behavior of the multiple manual link decorators that set the
rel
attribute. The fix happened so deep in the engine that we improved the overall performance of the editor slightly as well. - Added a new
EmptyBlock
plugin: From now on, new plugin prevents adding
to the output data of blocks, works similarly to thefillEmptyBlocks
configuration in CKEditor 4. - Support for the
<hr>
element in the General HTML Support plugin enhanced: attributes of the<hr>
element are now properly preserved if configuration allows it. - Emoji: We enhanced emoji support for better compatibility with users' older devices.
For more details, see the changelog below.
MINOR BREAKING CHANGES ℹ️
- engine: The
ViewConsumable.consumablesFromElement()
is removed and replaced with theview.Element#_getConsumables()
internal method. You should useViewConsumable.createFrom()
to create consumables if needed. - engine: The
ViewElementConsumables
now accepts and outputs only normalized data. TheViewConsumable
still accepts normalized or non-normalized input. - engine: The
Matcher#match()
andMatcher#matchAll()
output is now normalized. TheMatchResult#match
now contains normalized data compatible with changes in theViewConsumable
.
- engine: Export the
SchemaContext
class from package. Closes #18003. (commit) - html-support: Added support for the
<hr>
element. Closes #12973. (commit) - html-support: Add the
EmptyBlock
plugin that prevents adding
to output data. (commit)
- collaboration-core: User initials will now be generated based on the words that start with letters, ensuring that only valid alphabetic characters are used in the initials.
- comments: Annotations will no longer be lost during real-time collaboration when a user removes and immediately reverts (undo) content containing comment markers.
- comments: The editor will no longer crash when one user removes content containing a comment that another user is editing.
- engine: The link
[rel]
attribute will now allow mixing manual link decorators for the same attribute, as it will be now handled as a token list. Closes #13985, Closes #6436. (commit) - mention: Mention should not be wrapped with an additional
<span>
when GHS is enabled. Closes #15329. (commit) - ui: Fixed an issue where the first selected color was applied instead of the second selected color when using the font color picker for the first time after loading the page. Closes #17069. (commit)
- typing: Removing a nested editable does not remove an entire widget when the selection is placed at the beginning of that element. (commit)
- clipboard: Export the
viewToPlainText()
function. Closes #17950. (commit) - collaboration-core: Introduced a new configuration option:
config.users.getInitialsCallback
. It allows providing a custom callback function for user initials generation. - emoji: Improved emoji support by expanding the range of versions compatible with users' devices. Closes #18014. (commit)
- emoji: Icons representing categories in the grid come from the same Unicode version to avoid rendering the non-supported ones. (commit)
- emoji: Introduced the
emoji.useCustomFont
option to disable the filtering mechanism. Closes #18029. (commit) - engine: The whitespaces around a block filler (
) are ignored while loading editor data. (commit)
Check out the Versioning policy guide for more information.
Released packages (summary)
Minor releases (contain minor breaking changes):
- @ckeditor/ckeditor5-engine: v44.2.1 => v44.3.0
Releases containing new features:
- @ckeditor/ckeditor5-html-support: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-list: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-table: v44.2.1 => v44.3.0
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-ai: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-alignment: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-autoformat: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-autosave: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-basic-styles: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-block-quote: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-bookmark: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-build-balloon: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-build-balloon-block: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-build-classic: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-build-decoupled-document: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-build-inline: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-build-multi-root: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-case-change: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-ckbox: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-ckfinder: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-clipboard: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-cloud-services: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-code-block: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-collaboration-core: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-comments: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-core: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-document-outline: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-easy-image: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-editor-balloon: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-editor-classic: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-editor-decoupled: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-editor-inline: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-editor-multi-root: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-emoji: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-enter: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-essentials: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-export-pdf: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-export-word: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-find-and-replace: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-font: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-format-painter: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-heading: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-highlight: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-horizontal-line: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-html-embed: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-image: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-import-word: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-indent: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-language: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-link: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-list-multi-level: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-markdown-gfm: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-media-embed: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-mention: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-merge-fields: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-minimap: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-operations-compressor: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-page-break: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-pagination: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-paragraph: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-paste-from-office: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-paste-from-office-enhanced: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-real-time-collaboration: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-remove-format: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-restricted-editing: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-revision-history: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-select-all: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-show-blocks: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-slash-command: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-source-editing: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-source-editing-enhanced: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-special-characters: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-style: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-template: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-theme-lark: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-track-changes: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-typing: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-ui: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-undo: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-upload: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-uploadcare: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-utils: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-watchdog: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-widget: v44.2.1 => v44.3.0
- @ckeditor/ckeditor5-word-count: v44.2.1 => v44.3.0
- ckeditor5-collaboration: v44.2.1 => v44.3.0
- ckeditor5-premium-features: v44.2.1 => v44.3.0
44.2.1 (February 20, 2025)
We are happy to announce the release of CKEditor 5 v44.2.1.
During a recent internal audit, we identified a cross-site scripting (XSS) vulnerability in the CKEditor 5 real-time collaboration package (CVE-2025-25299
). This vulnerability can lead to unauthorized JavaScript code execution and affects user markers, which represent users' positions within the document.
This vulnerability affects only installations with real-time collaborative editing enabled.
You can read more details in the relevant security advisory and contact us if you have more questions.
- comments: Fixed a few scenarios for which creating a new comment thread was impossible (for example, when a selection was made on multiple table cells). This was a regression introduced in v44.2.0.
- real-time-collaboration: Improved displaying usernames in the user marker.
Check out the Versioning policy guide for more information.
Released packages (summary)
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-ai: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-alignment: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-autoformat: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-autosave: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-basic-styles: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-block-quote: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-bookmark: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-build-balloon: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-build-balloon-block: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-build-classic: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-build-decoupled-document: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-build-inline: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-build-multi-root: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-case-change: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-ckbox: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-ckfinder: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-clipboard: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-cloud-services: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-code-block: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-collaboration-core: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-comments: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-core: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-document-outline: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-easy-image: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-editor-balloon: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-editor-classic: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-editor-decoupled: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-editor-inline: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-editor-multi-root: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-emoji: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-engine: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-enter: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-essentials: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-export-pdf: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-export-word: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-find-and-replace: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-font: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-format-painter: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-heading: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-highlight: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-horizontal-line: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-html-embed: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-html-support: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-image: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-import-word: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-indent: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-language: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-link: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-list: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-list-multi-level: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-markdown-gfm: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-media-embed: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-mention: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-merge-fields: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-minimap: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-operations-compressor: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-page-break: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-pagination: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-paragraph: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-paste-from-office: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-paste-from-office-enhanced: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-real-time-collaboration: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-remove-format: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-restricted-editing: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-revision-history: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-select-all: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-show-blocks: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-slash-command: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-source-editing: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-source-editing-enhanced: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-special-characters: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-style: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-table: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-template: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-theme-lark: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-track-changes: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-typing: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-ui: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-undo: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-upload: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-uploadcare: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-utils: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-watchdog: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-widget: v44.2.0 => v44.2.1
- @ckeditor/ckeditor5-word-count: v44.2.0 => v44.2.1
- ckeditor5-collaboration: v44.2.0 => v44.2.1
- ckeditor5-premium-features: v44.2.0 => v44.2.1
44.2.0 (February 12, 2025)
We are happy to announce the release of CKEditor 5 v44.2.0.
Introducing new premium feature: Enhanced Source Code Editing. It displays the source code in a dialog and is compatible with all editor types. It offers syntax highlighting, code completion, code folding, and other advanced functionalities. Additionally, it supports both HTML and Markdown formats.
We have integrated the Uploadcare image manager service, enabling you to upload and edit images to their cloud environment. You can upload files from various sources, including local devices, social media, or online drives ensuring rapid uploads. The integration takes care of efficient media delivery with responsive images mechanism, making sure your users will save bandwidth and have faster website loading. You can also optimize images with the built-in image editor which offers a range of features, such as cropping, rotating, flipping, photo filters and more. All this directly from the editor, try it out!
Image merge fields are a new type of merge fields, dedicated for image placeholders. They maintain all standard image interactions, like styling, resizing or captions (in which you can use merge fields too!) At the same time, they keep all merge fields functionalities, like data previews or document export integration. In the document data, image merge fields are represented like other images, however their src
attribute is set to a respective merge field, for example, src="{{CompanyLogo}}"
, making them easy to post-process!
We have added the preview mode that displays a document with all suggestions accepted. Accessible from the track changes dropdown, this modal preview helps check the final content without extensive markers.
They are here! 🎉 🥳 🎊 Insert emojis effortlessly in the editor by typing :
or through a user-friendly emoji picker. This feature enhances the richness of your content by allowing quick access to a wide range of emojis.
Here comes the final batch of the planned performance improvements in the editor loading speed area, that we worked on through a couple of past releases.
- A new caching mechanism in
Mapper
now handles model-to-view mappings, substantially improving performance for loading and saving data. - Images with specified height and width automatically use
[loading="lazy"]
in the editing area, optimizing the loading time (read more on MDN). This attribute is only applied during editing to enhance the loading efficiency of images, and it does not reflect in the final data output.
We are greatly satisfied with the improved editor loading times. At the same time, we acknowledge some other problematic areas, and we will keep delivering more performance-related improvements in the future.
MINOR BREAKING CHANGES ℹ️
- engine:
Mapper#registerViewToModelLength()
is now deprecated and will be removed in one of the upcoming releases. This method is useful only in obscure and complex converters, where model element, or a group of model elements, are represented very differently in the view. We believe that every feature using a custom view-to-model length callback can be rewritten in a way that this mechanism is no longer necessary. Note: if this method is used, the caching mechanism forMapper
will be turned off which may degrade performance when handling big documents. Note: this method is used by the deprecated legacy lists feature. As a result, you will not experience the performance improvements if you are still using the deprecated legacy lists feature. - image: Starting this release, images that have
[height]
and[width]
attributes set will automatically receive the[loading="lazy"]
attribute in the editing area. This happens only for the content loaded into the editor, the data output produced by the editor remains the same. The reason for this change is to improve user experience in documents that may contain hundreds of images. - list: The
lower-alpha
andupper-alpha
list styles are now upcasted tolower-latin
andupper-latin
styles. - merge-fields: The
MergeFieldsEditing#getLabel()
method will now returnnull
instead of the merge field id if the merge field definition was not found or it did not contain thelabel
property. - basic-styles: Elements which contains the
[style]
attribute withword-wrap: break-word
will not be converted to<code>
. See #17789.
- ai: Comment threads will now be preserved when AI Assistant processes selected content with comments. This can be disabled through the
ai.aiAssistant.preserveComments
flag. Note, that the actual result depends on the response provided by the AI model (AI model has to keep the comments markup in the response). Additionally, the copy-paste comments functionality must be enabled (configured bycomments.copyMarkers
). - ai: The
ai.aiAssistant.removeCommands
configuration now allows removing entire command groups. - ckbox: It is now allowed to specify which files chosen from CKBox are downloadable. Closes #15928. (commit)
- clipboard: Added the ability to detect paste events originating from the editor. Closes #15935. (commit)
- clipboard: Passed information to the downcast converter when clipboard pipeline is used to allow for customization. Closes #17745. (commit)
- clipboard: The
viewToPlainText()
helper will now parse the viewRawElement
instances. Closes #17746. (commit) - emoji: Created the Emoji feature. Closes #17361. (commit)
- image: Added a possibility to break the current block by
InsertImageCommand
with thebreakBlock
flag. Closes #17742. (commit) - list: Allowed to specify which list style types are shown in list type selector dropdown. Closes #17176. (commit)
- list: Added support for the
lower-alpha
andupper-alpha
list type highlighting in the list style properties buttons. Closes #17424. (commit) - mention: Allowed the mention marker to be longer than 1 character. Closes #17744. (commit)
- merge-fields: Introduced the image merge fields.
- merge-fields: Added the
[data-merge-field-name]
attribute in the editing pipeline. - merge-fields: Use the actual merge field value when they are copied from the editor in preview mode other than
$labels
. - source-editing-enhanced: Introduced the Enhanced Source Code Editing feature.
- table: Improve aria attributes in the table and cell align toolbars. Closes #17722. (commit)
- track-changes: Introduced the final document preview for track changes. It allows to display the document with all suggestions accepted in the modal.
- ui: The
.ck-with-instant-tooltip
class may now be used to display the tooltip without the delay. Closes #17743. (commit) - upload: Added support for passing a callback to the
SimpleUploadConfig#headers
property. Closes #15693. (commit) - uploadcare: Introduced the Uploadcare integration.
- utils: Added a
collectStylesheets()
helper function to retrieve style sheets from the provided URLs. (commit)
- ai: The content generated by the AI Assistant will now be correctly inserted into tables when both "Replace" and "Insert below" actions are used.
- basic-styles: The
Code
feature should not convert element with theword-wrap: break-word
style into the<code>
tag. Closes #17789. (commit) - cloud-services: No longer keep refreshing token if the
cloudServices.tokenUrl
method failed in the initialization of the plugin. Closes #17531. (commit) - comments: Unlinked comment threads created before the editor initialization are now correctly handled and displayed in the comments archive. This error was experienced in asynchronous integrations which are using the
Context
mechanism. - comments: Do not allow editing content source via the source mode in the comments-only mode.
- comments: Introduced the name field tooltip in comments UI.
- editor-classic: Export
ClassicEditorUIView
from package. (commit) - editor-inline: No longer crash while destroying the editor when the editable was manually detached before destroying. Closes #16561. (commit)
- editor-multi-root: No longer crash while destroying the editor when the editable was manually detached before destroying. Closes #16561. (commit)
- image: The insert image via URL dialog can now be submitted by pressing the Enter key. Closes #16902. (commit)
- link: Trailing punctuation is no longer included in an autolinked URL. Closes #14497. (commit)
- list: The list style buttons should show proper list type after clicking list for the first time. (commit)
- list-multi-level: Multi-level lists should work when typing in Japanese.
- merge-fields: Do not automatically convert the merge-fields-like text containing disallowed characters.
- merge-fields: Properly handle block merge fields mixed with text during data upcast and pasting.
- revision-history: The Revision history feature sidebar header height now matches the height of the editor toolbar.
- revision-history: The Revision history feature loading overlay now overlaps images correctly.
- table: Prevent a table corruption when setting editor data with
<th>
cells followingcolspan
rows. Closes #17556, #17404. (commit) - track-changes: Introduced the name field tooltip in suggestions UI.
- typing: Fixed not working two-step caret movement on iOS devices. Closes #17171. (commit)
- ui: Tooltip will no longer show after quickly hovering and moving the mouse away before the tooltip shows. Closes #16949. (commit)
- ui: Destroying another editor instance while a modal is open will no longer unlock page scroll. Closes #17585. (commit)
- utils: Extended
getEnvKeystrokeText()
with option to use it in the context of specified environment which allows to generate keystrokes text for different OS than the host one. (commit) - Treat types as production dependencies. Fixes #17213. (commit)
- Unify TypeScript declaration files. Fixes #17575 and #17533. (commit)
- ai: Exported the
AIAssistantUI
class and theAIAssistantConfig
,CommandDefinition
andGroupDefinition
types. - clipboard: Exported the
ViewDocumentPasteEvent
type from the@ckeditor/ckeditor5-clipboard
package. (commit) - comments: Exported the
AddCommentThreadEventData
type. - comments: Activating an annotation now scrolls to the target if it is out of view.
- comments: Fixed the wrong
filter()
callback signature inAnnotationsUIs#activate()
. - engine: Introduced dynamic caching in
Mapper
to improve view-to-model mapping performance, and as a result improve editor data load and data save performance. Closes #17623. (commit) - engine: A new parameter
data
was added for thechange:children
event fired byViewElement
andViewDocumentFragment
when their children change. Thedata
parameter is an object with theindex
property, which says at which index the change happened. Related to #17623. (commit) - engine:
Mapper#registerViewToModelLength()
is now deprecated and will be removed in one of upcoming releases. Note: if this method is used, the caching mechanism forMapper
will be turned off which may degrade performance when handling big documents. Note: this method is used by the deprecated legacy lists feature. See #17623. (commit) - engine: Export
SchemaCompiledItemDefinition
type. Closes #17783. (commit) - engine: Improve performance of the placeholders. (commit)
- engine: Do not store non-document operation with batches. This improves memory efficiency for huge documents. Closes #17678. (commit)
- engine: Improve performance of
Selection#getSelectedBlocks
when selection contains block elements with many blocks inside (such as table). Closes #17629. (commit) - font: Export
ColorSelectorDropdownView
type. Closes #17783. (commit) - image: The
[loading="lazy"]
attribute will be automatically added in editing view to images with theheight
andwidth
attributes set to improve loading performance. (commit) - list: Skip already visited list elements during reconversion and post fixing for better performance. Fixes #17625. (commit)
- merge-fields: The
MergeFieldsEditing#refreshMergeFields()
method is now public and available for external use. - merge-fields: Remove the default values preview mode if there is none or the merge fields has a default value configured.
- merge-fields: Display ellipsis if the merge field name does not fit the dropdown.
- pagination: Do not wait for images with
[width]
and[height]
attributes. - pagination: Do not wait for loading images that have
[width]
and[height]
attributes set when calculating pages. - real-time-collaboration: Export the
Sessions
class. - real-time-collaboration: Changed how errors related to real-time collaboration are handled. Previously, the original error was always logged on the console, and a
realtimecollaborationclient-
error was thrown without information related to the original error. Now, the original error is not logged anymore. Instead, therealtimecollaborationclient-
error includes thedata.originalError
property with the original error message. This way it is possible to save error details through a custom error logging mechanism. Note, that without any custom mechanism, therealtimecollaborationclient-
error will still be unhandled and logged to the console. - real-time-collaboration: The editor now switches to read-only mode if the real-time collaboration client crashes, ensuring that the user cannot further edit the document and no data is accidentally lost.
- ui: Added Enhanced Source Code Editing as a default menu bar item, making it visible in the menu bar when the plugin is present in the editor. (commit)
- ui: Extended the dialog API to support custom keystroke handler options, allowing to override priorities of the keystroke callback and filter keystrokes based on arbitrary criteria. (commit)
- ui: The
ImageInsertUI#registerIntegration
method now supports handling an array of views for a specific integration type. This allows, for example, registering anassetManager
integration with multiple sources likeFacebook
andInstagram
, where each source has its own dedicated button. (commit) - ui: Exported the
DocumentColorCollection
class. Closes #17783. (commit) - utils: Extended key codes with the
End
andHome
keys, enabling the use and display of shortcuts containing these keys in the UI. (commit) - utils: Exported the
add()
function. Closes #17783. (commit)
Check out the Versioning policy guide for more information.
Released packages (summary)
New packages:
- @ckeditor/ckeditor5-emoji: v44.2.0
- @ckeditor/ckeditor5-source-editing-enhanced: v44.2.0
- @ckeditor/ckeditor5-uploadcare: v44.2.0
Minor releases (contain minor breaking changes):
- @ckeditor/ckeditor5-engine: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-image: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-list: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-merge-fields: v44.1.0 => v44.2.0
Releases containing new features:
- @ckeditor/ckeditor5-ckbox: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-clipboard: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-code-block: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-core: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-mention: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-paste-from-office: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-source-editing: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-special-characters: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-table: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-ui: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-upload: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-utils: v44.1.0 => v44.2.0
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-ai: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-alignment: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-autoformat: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-autosave: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-basic-styles: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-block-quote: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-bookmark: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-build-balloon: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-build-balloon-block: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-build-classic: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-build-decoupled-document: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-build-inline: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-build-multi-root: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-case-change: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-ckfinder: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-cloud-services: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-collaboration-core: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-comments: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-document-outline: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-easy-image: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-editor-balloon: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-editor-classic: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-editor-decoupled: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-editor-inline: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-editor-multi-root: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-enter: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-essentials: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-export-pdf: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-export-word: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-find-and-replace: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-font: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-format-painter: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-heading: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-highlight: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-horizontal-line: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-html-embed: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-html-support: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-import-word: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-indent: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-language: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-link: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-list-multi-level: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-markdown-gfm: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-media-embed: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-minimap: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-operations-compressor: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-page-break: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-pagination: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-paragraph: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-paste-from-office-enhanced: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-real-time-collaboration: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-remove-format: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-restricted-editing: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-revision-history: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-select-all: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-show-blocks: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-slash-command: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-style: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-template: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-theme-lark: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-track-changes: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-typing: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-undo: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-watchdog: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-widget: v44.1.0 => v44.2.0
- @ckeditor/ckeditor5-word-count: v44.1.0 => v44.2.0
- ckeditor5-collaboration: v44.1.0 => v44.2.0
- ckeditor5-premium-features: v44.1.0 => v44.2.0
To see all releases, visit the release page.