Releases: ckeditor/ckeditor5
v46.0.1
We are happy to announce the release of CKEditor 5 v46.0.1.
Release highlights
Complete documentation redesign is here
We have prepared a new theme for our documentation to enhance its quality. The new look improves readability and addresses several accessibility issues for a better experience. The redesigned navigation bar gives more useful access to various sections of the documentation, making it easier to reference guides for all our products. Improved table of contents makes browsing and finding guides easier, paired with updated search functionality. Check out the new experience yourself!
The pagination plugin just got better
This release introduces a significant pagination update, along with numerous fixes. Page breaks are now calculated taking into account the content styles, bookmark markers, and with better tolerance calculation. Pagination now also finds the correct breakpoint for large tables of contents and images taller than the page.
Table handling with pagination and export to PDF
The pagination and export to PDF features now better support tables containing one or more paragraphs. Cell margins are now correctly applied in exported tables, which improves the precision of pagination rendering.
Bug fixes
- export-word, list-multi-level, real-time-collaboration, revision-history, track-changes: Fixed a bug that caused TypeScript to report compilation errors in
.d.ts
files (e.g.Module has no exported member
) when adding theckeditor5-premium-features
dependency to a project that installs CKEditor 5. The issue was caused by TypeScript compilation problems in theckeditor5-premium-features
package and affected users who didn't have"skipLibCheck": true
set in theirtsconfig.json
. - export-pdf, pagination: The pagination and export to PDF features now better support tables containing one or more paragraphs. Cell margins are now correctly applied in exported tables, which improves the precision of pagination rendering.
- comments, track-changes: Annotations will now be hidden in the sidebar when the target element is not a valid DOM element, preventing sidebar flickering and the appearance of orphaned annotations.
- comments: Resolved comment thread highlight will now be properly removed from the editing area when the comments archive is closed while the editor is in read-only mode.
- comments: Fixed
CommentsEditing
being exported as type instead of value. - html-support: Fixed following plugins being exported as types instead of values:
CodeBlockElementSupport
,CustomElementSupport
,ListElementSupport
,DualContentModelElementSupport
,HeadingElementSupport
,ImageElementSupport
,MediaEmbedElementSupport
,ScriptElementSupport
,StyleElementSupport
,TableElementSupport
,HorizontalLineElementSupport
. Closes #18855. - list: Fix the vertical spacing of a single paragraph in the list item with a nested list. Closes #18831.
- pagination: Pagination correctly handles content styles like
.ck-content > :first-child
. - pagination: Pagination lines do not change position depending on user selection.
- pagination: Pagination correctly finds page breaks on a large table of contents.
- pagination: The pagination line is correctly positioned when there is a bookmark element at the start of the block.
- pagination: Pagination can find page breaks on images taller than a page height.
- paste-from-office: Clean the
width: 0
attribute when tables are pasted from Word. - revision-history: Fixed
RevisionViewerIntegration
being exported as type instead of value. - table: Tables should not be stretched to full page width when printed.
- table: The table caption should not be scrambled when the document is printed. Closes #18903.
- track-changes: Fixed multiple cases where suggestion markers were created on incorrect ranges, causing sidebar flickering.
- track-changes: Fixed
TrackChangesUI
missing an export. - utils: Fixed the
Identifier 'global' has already been declared.
error being thrown in some environments due to the global variable name in the@ckeditor/ckeditor5-utils
package. Closes #18856.
Other changes
- collaboration-core: Make
CollaborationUserColor#id
a public readonly property. - emoji: Improve the initialization performance of the Emoji feature by optimizing the
EmojiUtils#isEmojiSupported()
method. Closes #18822. - export-pdf: Added width constraint for content exported to PDF.
- image: Image caption should be printed on the same page as the image.
- pagination: Pagination uses
0.5mm
tolerance while calculating line breaks.
Released packages
Check out the Versioning policy guide for more information.
Released packages (summary)
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-ai: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-alignment: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-autoformat: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-autosave: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-basic-styles: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-block-quote: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-bookmark: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-case-change: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-ckbox: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-ckfinder: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-clipboard: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-cloud-services: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-code-block: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-collaboration-core: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-comments: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-core: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-document-outline: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-easy-image: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-editor-balloon: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-editor-classic: v46.0.0 => v46.0.1
- @ckeditor/ckeditor5-editor-decoupled: v46.0.0 => v46.0.1
- [@ckeditor/ckeditor5-editor-inline...
v46.0.0
We are happy to announce the release of CKEditor 5 v46.0.0.
Release highlights
Important
This is a major release with significant amount of changes that may affect your CKEditor 5 integration. We strongly encourage you to read the entire update guide to understand all the changes.
Pay special attention to:
- Unified exports and renames in the editor API: Many import/export names have changed
- Introduction of the default content styles: New default styling that may affect your content appearance
These changes are designed to improve the long-term stability and maintainability of CKEditor 5, but they require careful attention during the upgrade process.
Line Height (β)
The new Line Height feature allows you to adjust the vertical spacing between lines of text, improving readability and visual harmony in your documents. This premium feature lets you set consistent line spacing across paragraphs and text blocks to enhance document accessibility and maintain visual hierarchy in your content.
Remove Format improvements
Unneeded styles on block elements, such as tables and images, and General HTML Support nodes and attributes are finally eliminated when you hit the remove format button. The feature now cleans what it should, leaving the document structure untouched.
List markers styling
Working with styled lists becomes more intuitive as list markers (bullets and numbers) now automatically inherit text styling properties such as font size adjustments, text color changes, and font weight modifications (bold, italic).
This improvement makes it easier to create visually consistent and professional-looking lists without additional configuration. This improvement also supports Multi-level lists.
Important! This behavior is enabled by default, which means you may experience content change when you load the content to the editor 's new version (for the better in our opinion). But if this is not something you expect, you can opt out.
Markdown processor dependency refresh
The Markdown feature dependencies have been modernized with a switch to the unified
ecosystem, replacing the previous marked
/ turndown
implementation. This change brings more consistent and symmetrical HTML β Markdown conversion. By adopting remark
and rehype
from the same family of tools, we have created a more reliable and maintainable implementation that will better serve your document processing needs.
Manual token refreshing
We have added the config.cloudServices.autoRefresh
configuration property to disable the automatic token refresh mechanism. When it 's set to false
, the token must be refreshed manually. This property opens up the ability to implement custom token handling if a certain use case requires this.
Comment threads improvements
New thread command changes
We have also introduced improvements to the addCommandThread
command, which now supports creating comment threads on specified ranges. Additionally, it allows for creating a comment thread with an initial comment with the provided comment content.
Minor breaking change
The AddCommandThreadCommand#isEnabled
property is no longer false
when the current document selection is empty, as the command now allows for creating comment threads on custom ranges. If you previously used this property (for example, to provide a custom UI element), you should now use the observable AddCommentThreadCommand#hasContent
property instead.
Comments and suggestions annotations
We have introduced dedicated methods for an easier way to get specific annotations related to a comment or a suggestion and vice versa.
Unified exports and renames in the editor API
After the big New Installation Method release (v42.0.0+), some developers upgrading from v41-x to v42-x were greeted by the does not provide an export named ...
error. We addressed issues immediately as they were reported, but we knew it required a deeper are more comprehensive approach long-term.
With this release, we introduced a new, clear set of rules about internal imports, and also added re-exports if they were missing, changed the names of items to be more descriptive and avoid collisions, took care of internal methods that were already exported but not tagged, and cleaned up @deprecated
code that was stale for some time.
If your build throws errors after the update, search and replace the old names with the new ones from the update guide. We have not changed the behavior of these APIs, just the names.
Last but not least, this release put us on the clean and straight path towards the deprecation of old installation methods. Please let us know if you have any questions on GitHub or support channels.
Opinionated default content styles and CSS renames
To improve the out-of-the-box experience and accessibility, we are introducing opinionated defaults for content styling. From this version, we ship a small defaults layer applied to .ck-content
. These content styles are easily replaceable via CSS variable override. You may have already styled those things with more specific selectors.
While working on this initiative, we decided to standardize the CSS naming, too. All older variables that applied to the content styles now share the consistent --ck-content-*
prefix. Read about the details in the update guide.
MAJOR BREAKING CHANGES βΉοΈ
-
ai: The AI Assistant now uses the more advanced
gpt-4o
model by default, replacing the previousgpt-3.5-turbo
. This update improves response quality and overall capabilities. Additionally, the default limit set bymax_tokens
parameter has been removed, allowing for better and more detailed responses. If you relied on the previous default settings and wish to continue using them, be sure to explicitly define the editor configuration entryai.openAi.requestParameters
to{ model: 'gpt-3.5-turbo', max_tokens: 2000, stream: true }
. -
document-outline: Content area CSS variables have been renamed to use the --ck-content-* prefix for better consistency in the Table of Contents feature. This requires action if you have overridden the variables. See the update guide for details.
-
list: Removed vertical spacing in list items by resetting margins for
<p>
elements that are the child of a<li>
element. -
table: Removed vertical spacing in table cells by collapsing margins of
elements that are the only child of a
<td>
or<th>
element. -
The editor now enforces default browser styles for text content in both the editing view and rendered output. This change may affect existing styling and layout, so any custom CSS overrides should be reviewed. See #18710 for details. The following CSS variables and their default values are now applied:
--ck-content-font-family
:Helvetica, Arial, Tahoma, Verdana, sans-serif
--ck-content-font-size
:medium
--ck-content-font-color
:#000
(HEX instead ofhsl()
to ensure compatibility with email clients)--ck-content-line-height
:1.5
--ck-content-word-break
:break-word
-
The default styles for comment annotations have changed to provide better consistency with the editor UI. A new set of CSS variables is now used to control the appearance of the comment content and input fields. These changes may affect the current appearance of comments in your integration, so please review them after updating. The following CSS variables are now applied:
--ck-comment-content-font-family
--ck-comment-content-font-size
--ck-comment-content-font-color
(default changed fromhsl(0, 0%, 0%)
tohsl(0, 0%, 20%)
)
These variables default to values derived from the editor 's UI styles, and they may differ from your current settings. Customize these variables as needed to match your desired appearance.
-
Content area CSS variables have been renamed to use the
--ck-content-*
prefix for better consistency in the Highlight, Image, List, and Table features. This requires action if you have overridden the variables. See the update guide for details. -
Table-related CSS variables with improper
*-selector-*
naming have been renamed to use*-table-*
for better clarity. This requires action if you have overridden the variables. See the update guide for details.
MINOR BREAKING CHANGES [βΉοΈ](https://cked...
v45.2.1
We are happy to announce the release of CKEditor 5 v45.2.1.
Release highlights
This hotfix release brings fixes for certain regressions in the field of text selection (with balloon toolbars enabled), multi-level lists, and pagination.
Bug fixes
- engine: Fixed editor crash that happened in a specific scenario, when editing heavily formatted text, text with multiple comments, or text with comments and formatting. Closes #18727. (commit)
- engine: Fixed incorrect cache invalidation in
Mapper
, which could lead to crashes when editing heavily formatted content or when using complex features like multi-level lists. Closes #18678. (commit) - engine: Fixed editor crash that happened when typing over a table content with the balloon toolbar enabled. Closes #18648. (commit)
- list-multi-level: Fixed editor crash that happened when editing deeply nested multi-level lists. Closes #18678. (commit)
- table: Improved calculation of pagination page-breaks on documents with long tables. Closes #18600. (commit)
- typing: Typing over multiple selected blocks next to a code block or a block quote should not crash the editor. Closes #18722. (commit)
Released packages
Check out the Versioning policy guide for more information.
Released packages (summary)
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-ai: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-alignment: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-autoformat: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-autosave: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-basic-styles: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-block-quote: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-bookmark: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-case-change: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-ckbox: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-ckfinder: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-clipboard: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-cloud-services: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-code-block: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-collaboration-core: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-comments: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-core: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-document-outline: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-easy-image: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-editor-balloon: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-editor-classic: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-editor-decoupled: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-editor-inline: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-editor-multi-root: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-email: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-emoji: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-engine: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-enter: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-essentials: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-export-inline-styles: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-export-pdf: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-export-word: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-find-and-replace: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-font: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-format-painter: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-fullscreen: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-heading: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-highlight: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-horizontal-line: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-html-embed: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-html-support: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-icons: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-image: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-import-word: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-indent: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-language: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-link: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-list: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-list-multi-level: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-markdown-gfm: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-media-embed: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-mention: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-merge-fields: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-minimap: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-operations-compressor: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-page-break: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-pagination: v45.2.0 => v45.2.1
- @ckeditor/ckeditor5-paragraph: v45.2.0 => v45.2.1
- ...
v45.2.0
We are happy to announce the release of CKEditor 5 v45.2.0.
Release highlights
CKEditor 5 v45.2.0 offers the following improvements and bug fixes.
- We fixed the copy-paste scenario in the read-only mode.
- Tables pasted from Office, especially with borderless layouts, should preserve styling in the editor similar to the ones in the source file.
- Improved the adoption of the fullscreen feature on smaller screens and includes subtle visual tweaks.
MINOR BREAKING CHANGES βΉοΈ
- source-editing: The
formatHtml()
helper function is extracted to the@ckeditor/ckeditor5-utils
package. See #18480.
Features
- fullscreen: Empty sidebars will no longer lock empty space around the editable in fullscreen mode. Closes #18474. (commit)
Bug fixes
- engine: The editor should not crash while using Mac text replacement in the Track changes mode. (commit)
- engine: Copying content in read-only mode should use the current document selection. Closes #18514. (commit)
- engine: The editor should not crash after clearing content with a widget selected. Closes #18123, #18458. (commit)
- pagination: Chrome no longer incorrectly pushes content to the next page when rendering documents consisting mainly of paragraphs with soft line breaks. Closes #7316.
- paste-from-office: Unset table borders no longer fall back to default table styles. Closes #16931, #10655, #18540. (commit)
- real-time-collaboration: Fixed a crash that occurred when a user selected table cells containing only non-textual elements, such as images.
- revision-history: Fixed a crash in the revision history viewer that occurred when navigating revision changes, if the previewed revision was restored by one user but included suggestions originally made by other users.
- source-editing: Single line pre-block should not cause loss of indentation on later lines in source mode. Closes #18360. (commit)
- source-editing: Empty lines in code blocks should not be removed in source editing mode. See #18480. (commit)
- source-editing-enhanced: Single line pre-block should not cause loss of indentation on later lines in source mode. Closes #18360. (commit)
- source-editing-enhanced: Empty lines in code blocks should not be removed in source editing mode. See #18480. (commit)
- table: Should apply the proper
[width]
attribute when it is used both on<table>
and<figure>
elements. Closes #18469. (commit) - track-changes: Fixed crashes that could occur in real-time collaboration when a user splits suggestions rapidly in a short time frame.
Other changes
- paste-from-office: Normalized pasted table length units (dimensions and border widths). (commit)
- The development environment requires Node v22 due to migrating to the latest ESLint (v9) version. See #18475. (commit)
Released packages
Check out the Versioning policy guide for more information.
Released packages (summary)
Minor releases (contain minor breaking changes):
- @ckeditor/ckeditor5-source-editing: v45.1.0 => v45.2.0
Releases containing new features:
- @ckeditor/ckeditor5-fullscreen: v45.1.0 => v45.2.0
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-ai: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-alignment: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-autoformat: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-autosave: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-basic-styles: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-block-quote: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-bookmark: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-case-change: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-ckbox: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-ckfinder: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-clipboard: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-cloud-services: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-code-block: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-collaboration-core: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-comments: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-core: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-document-outline: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-easy-image: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-editor-balloon: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-editor-classic: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-editor-decoupled: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-editor-inline: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-editor-multi-root: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-email: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-emoji: v45.1.0 => v45.2.0
- @ckeditor/ckeditor5-engine: v45.1.0 => v45.2.0
- [@ckeditor/ckeditor5-enter](https...
v45.1.0
We are happy to announce the release of CKEditor 5 v45.1.0.
Release highlights
Typing Improvements
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.
Track Changes Enhancements
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.
Miscellaneous improvements
- 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.
Features
-
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!
Bug fixes
-
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 vie...
v45.0.0
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.
Release highlights
Email editing enhancements
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.
The fullscreen feature
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.
Improved linking experience
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.
New installation methods improvements: icons replacement
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.
β οΈ Deprecations in old installation methods: stage 1 completed
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.
DISTRIBUTION CHANGES
- All packages and CDN source code now target ES2022 as the ECMAScript version.
Features
- 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](https://github.com/...
v44.3.0
We are happy to announce the release of CKEditor 5 v44.3.0.
Release Highlights
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
.
Features
- 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)
Bug fixes
- 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)
Other changes
- 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)
Released packages
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...
v44.2.1
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.
Bug fixes
- 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.
Other changes
- real-time-collaboration: Improved displaying usernames in the user marker.
Released packages
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](https://www.npmjs.com/package/@ckeditor/ckeditor5-restricte...
v44.2.0
We are happy to announce the release of CKEditor 5 v44.2.0.
Release Highlights
π₯οΈ Enhanced Source Code Editing (β)
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.
π€ Uploadcare and image optimizer (β)
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 (β)
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!
π Track Changes Preview (β)
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.
π Emoji support
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.
β‘ Performance improvements: Part 4
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.
Features
- 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...
v44.1.0
We are pleased to announce the latest CKEditor 5 release, focusing on performance enhancements and key bug fixes to improve your editing and collaboration experience.
Release Highlights
β‘ Performance enhancements: Part 3
This release introduces another set of performance related improvements, focused on faster editor initialization for huge documents. The initialization time was lowered by further 15% to 45%, depending on the tested sample.
The combined improvements introduced in recent releases amount to around 65%-80% lower loading time in total, which means the editor will load 3-5x faster. As the gain is not linear, bigger documents see even better improvement (more than 10x faster).
Moreover, all these improvements positively impact document save time (editor.getData()
), which should help with autosave issues, among others.
We still actively work in this area, so you may expect even more editor load and save efficiency improvements in the upcoming releases.
π¨ Bug Fixes and improvements
- Comments enhancements:
- Data export options: We introduced the
showCommentHighlights
option ineditor.getData()
, that changes the comment marker conversion, allowing for styling comments in the output. Perfect for showing what was commented in Export to PDF, for example. - Inline mode improvements: We addressed a problem where comment annotations in inline mode did not close properly when clicking elsewhere in the content.
- Thread management: We resolved an issue where creating a new thread was not interrupted when the corresponding marker was removed from the content, ensuring better stability during collaborative editing.
- Data export options: We introduced the
- Revision History update:
- Restore functionality: We disabled the ability to restore the current (edited, not saved) revision, as it represents current content, so there is nothing to restore. At the same time, using it led to some non-obvious behaviors.
- Image handling: We resolved an issue where images in the uploading state could be deleted when dragged and dropped within the editor. Keep dragging, even when it is not there π.
π Happy holidays!
As the holiday season approaches, we extend our warmest wishes to our community and users. Thank you for your continued support, and we look forward to bringing you further enhancements and exciting features in the coming year.
MINOR BREAKING CHANGES βΉοΈ
- utils:
spliceArray
now modifies the target array and does not accept a fourth (count
) argument.
Features
- comments: Introduced the
showCommentHighlights
option ineditor.getData()
method that changes the comment marker conversion and allows styling the comments in the output.
Bug fixes
- comments: Resolved an issue where creating a new thread was not interrupted when the corresponding marker was removed from the content, for example, by another user in real-time collaboration.
- comments: When adding a comment in inline mode, the comment annotation will now close properly if you click elsewhere in the content.
- find-and-replace: It should be possible to search within content of inline widgets. Closes #11162. (commit)
- image: Copying and pasting images in the uploading state is now possible. Closes #16967. (commit)
- ui: Surrounding spaces are no longer added to colors produced by hex inputs. Closes #17386. (commit)
Other changes
- Introduced multiple general performance improvements in the
@ckeditor/ckeditor5-engine
,@ckeditor/ckeditor5-list
, and@ckeditor/ckeditor5-utils
packages, leading to 15%-45% lower editor loading time. Closes #17641. - link: Exported the
ensureSafeUrl()
function from the@ckeditor/ckeditor5-link
package. (commit) - revision-history: Disabled the ability to restore a currently edited (not saved) revision.
- ui: Icons (
IconView
) are no longer individually accessible by assistive technologies, improving overall accessibility. Closes #17554. (commit) - utils: Change the implementation of
spliceArray()
to modify the target array for better performance. (commit)
Released packages
Check out the Versioning policy guide for more information.
Released packages (summary)
Minor releases (contain minor breaking changes):
- @ckeditor/ckeditor5-utils: v44.0.0 => v44.1.0
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-ai: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-alignment: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-autoformat: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-autosave: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-basic-styles: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-block-quote: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-bookmark: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-build-balloon: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-build-balloon-block: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-build-classic: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-build-decoupled-document: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-build-inline: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-build-multi-root: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-case-change: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-ckbox: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-ckfinder: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-clipboard: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-cloud-services: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-code-block: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-collaboration-core: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-comments: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-core: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-document-outline: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-easy-image: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-editor-balloon: v44.0.0 => v44.1.0
- @ckeditor/ckeditor5-editor-classic: v44.0.0 => v44.1.0
- [@ckeditor/ckeditor5-editor-decoupled](https://www.npmjs.com/package/@ckedito...