Contribute to this guide

CKEditor 5 changelog

This is the CKEditor 5 changelog guide. Here you will find information about the most important changes introduced in the release, new features, and bug fixes.

Information about both major and minor breaking changes is available, too, if the release introduces them. You can read more about breaking changes in CKEditor 5 in the Versioning policy guide.

You can find more information about each release in the blog posts linked at the start of each entry.

This guide provides the changelog information for the 3 latest releases of CKEditor 5. For older releases, refer to the release notes on GitHub.

# CKEditor 5 44.1.0 release

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 in editor.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.
  • 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 in editor.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

# CKEditor 5 44.0.0 release

# Release Highlights

We are excited to introduce CKEditor 5 v44.0.0, a release packed with high impact updates designed to enhance your editing experience and simplify access to our premium offers. Here’s what’s new:

# 🚀 Self-service plans: Simplified access to premium features

We are introducing flexible self-service plans that put you in control with full transparency. Now, you can:

💡 Important for current users:

If you are upgrading to v44.0.0+, ensure a smooth transition by updating your license keys in the editor, as we implemented a new format of the key. To get the new key, visit the Customer Portal. You can also refer to our license key and activation guide for help with logging in to the portal.

📣 The open-source licensing remains unchanged. However, config.licenseKey is now a required property in the editor configuration. Use 'GPL' for installations under the GPL terms. Read more in the update guide.

# 🔖 Bookmarks: Organize your content with ease

Say hello to Bookmarks, a long-awaited feature that simplifies content navigation within the editor. With this release, you can:

  • Add anchors as reference points within text.
  • Link to the newly created bookmarks in the editor to navigate to specific locations within complex documents, such as contracts or technical manuals.

📍 Future updates to Bookmarks and the linking experience are planned for the upcoming releases. Follow progress and share your feedback on GitHub.

# ⚡ Performance improvements: Faster table rendering

The current release includes another stride towards improving the performance aspect of the editor, this time focusing on how tables are handled in the content. Implemented optimizations have made table rendering 3x faster, with the average load time of a document with a very long, complex tables dropping from around 4.5 seconds to just 1.5 seconds.

# MAJOR BREAKING CHANGES

  • config.licenseKey is now a required property in the editor configuration. Use 'GPL' for installations under the GPL terms. See #17317.

# Features

# Bug fixes

  • clipboard: An in-text drop of an inline object with elements inside should be possible. Closes #16101. (commit)
  • cloud-services: Handle refresh token when editor destroyed during token fetching. Closes #17462. (commit)
  • editor-classic: Excluded modal windows from the Classic Editor’s integration between dialogs and the sticky toolbar. Closes #17339. (commit)
  • engine: List markers should be visible after changing the list type from multi-level to numbered. Closes #17488. (commit)
  • find-and-replace: Find and replace no longer randomly jumps to the first found item after the replace operation. Closes #16648. (commit)
  • list: Inserting or dropping a paragraph after the end of a list should not convert the paragraph to a list item. Closes #17224. (commit)
  • pagination: The pagination line should be rendered properly on tables. Closes ckeditor/ckeditor5#17158.
  • restricted-editing: Remove existing restricted editing markers when setting new data to prevent marker resurrection. Closes #9646, #16721. (commit)
  • theme-lark: Letter descenders should not be clipped in the top-level menu bar categories. Closes #17422. (commit)
  • track-changes: Export the AttributeData, FormatData and Description typings from package.
  • ui: The menu or dropdown panels will no longer be placed in an incorrect position when a optimal position cannot be found. Closes #17220. (commit)
  • ui: The dialog plugin should not handle Esc key press when default-prevented by the guest view. Closes #17343. (commit)
  • upload: Editor should no longer crash when executing undo while an image is still being uploaded. (commit)
  • utils: Use binary search in insertToPriorityArray() for better performance when handling big tables. (commit)
  • utils: No longer scroll to the top of the document if pasted element is larger than scrollable editable. Closes #17079. (commit)

# Other changes

  • collaboration-core: The types of publicly exported plugins will now be correctly resolved when accessed using editor.plugins.get.

  • comments: The types of publicly exported plugins will now be correctly resolved when accessed using editor.plugins.get.

  • real-time-collaboration: Editor will be switched to read-only mode when an unrecoverable error will be returned by Cloud Services server during real-time editing.

  • real-time-collaboration: The types of publicly exported plugins will now be correctly resolved when accessed using editor.plugins.get.

  • revision-history: The types of publicly exported plugins will now be correctly resolved when accessed using editor.plugins.get.

  • track-changes: The types of publicly exported plugins will now be correctly resolved when accessed using editor.plugins.get.

  • track-changes: The descriptionFactory property will now be accessible publicly.

  • track-changes: Suggestions of the same type that are not directly next to each other will no longer be represented as one suggestion in the UI.

  • ui: Improved the performance of the BodyCollection DOM wrapper lookup by replacing document.querySelector() with a static element reference. (commit)

    Huge thanks to Ben Demboski for this contribution!

  • Changes related to the introduction of self-service channel for CKEditor 5 Premium Features. See #17317. (commit)

  • Updated translations. (commit)

# CKEditor 5 43.3.1 release

We are happy to announce the release of CKEditor 5 v43.3.1.

# Release highlights

We had to revert a change introduced in v43.3.0 related to the icons export in one of our packages. This was due to unforeseen TypeScript issues in some setups.

# Bug fixes

  • link: Reverted a change related to adding icons re-export. See #17358. (commit)

# Other changes