Update to CKEditor 5 v44.x
When updating your CKEditor 5 installation, ensure all the packages are the same version to avoid errors.
You may try removing the package-lock.json
or yarn.lock
files (if applicable) and reinstalling all packages before rebuilding the editor. For best results, make sure you use the most recent package versions.
# Update to CKEditor 5 v 44.3.0
Released on March 5, 2025. (See full release notes)
# Fixed 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.
# New EmptyBlock
plugin
Starting this release, a new EmptyBlock
plugin prevents adding
to the output data of blocks, works similarly to the fillEmptyBlocks
configuration in CKEditor 4.
# Enhanced support for the <hr>
element
We have enhanced support for the <hr>
element in the General HTML Support plugin. Now, the attributes of the <hr>
element are properly preserved if configuration allows it.
# Enhanced emoji support
We enhanced emoji support for better compatibility with users’ devices.
# Minor breaking changes in this release
- 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
.
# Update to CKEditor 5 v 44.2.1
Released on February 20, 2025. (See full release notes)
# Vulnerability removed
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.
# Update to CKEditor 5 v 44.2.0
Released on February 12, 2025. (See full release notes)
# Enhanced Source Code Editing
Introducing new premium feature with current release: the enhanced source code editing. It displays the source code in a dialog and is compatible with all editor types. It also 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, offering our users yet another way to upload and edit images in 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 can be done directly from the editor. Try it out!
# Image Merge Fields
The 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 track changes 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
With the new feature you can 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
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 in this release
- 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 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.
# Update to CKEditor 5 v44.1.0
Released on December 16, 2024 (See full release notes).
# Minor breaking changes in this release
- utils:
spliceArray
now modifies the target array and does not accept a fourth (count
) argument.
# Update to CKEditor 5 v44.0.0
Released on December 2, 2024 (See full release notes).
For the entire list of changes introduced in version 44.0.0, see the release notes for CKEditor 5 v44.0.0.
Below are the most important changes that require your attention when upgrading to CKEditor 5 v44.0.0.
# Required license key configuration
Version 44.0.0 introduced a change in the license configuration. The config.licenseKey
is now a required property in the editor configuration. Whether you are using CKEditor 5 commercially or under open-source terms, you will need to specify this property in your configuration.
ClassicEditor
.create( document.querySelector( '#editor' ), {
licenseKey: '<YOUR_LICENSE_KEY>' // Or 'GPL'.
// ... Other configuration options ...
} )
.then( /* ... */ )
.catch( /* ... */ );
- Commercial licenses: When upgrading to version 44.0.0 or later, users with a commercial license must update their license key to the new format. To update your license key, log in to the Customer Portal and copy the key associated with your subscription into your editor’s configuration.
- Open-source installations:
-
Self-hosted (npm/ZIP) installations: If you are self-hosting CKEditor 5 under the GPL 2+ terms or as a part of our Open Source support project, you need to set
config.licenseKey
to'GPL'
in your configuration. -
Cloud (CDN) installations: For cloud-distributed CKEditor 5 served via our CDN, you must obtain a license key from the Customer Portal. Create a free account and add the provided license key to your editor configuration.
During the 14-day trial (automatically activated upon sign-up), you can explore all Premium Features. After the trial ends, usage metering and editor load limits specific to your chosen plan will apply. Learn more about available plans and usage-based billing.
-
Read more in our guides about license keys and usage-based billing.
# New license key format
A new license key format has been introduced. Previous license keys will no longer work after updating the editor to version 44.0.0 and above.
We also changed the way the development license key works. To prevent it from accidental usage on production it is limited only to development domains, shows informational label, and has operational limit. Read more about the details.
Acquiring new keys:
- Access the Customer Portal: Log in to the Customer Portal to obtain your new license key.
- Update configuration: Replace the old license key in your editor configuration with the new key.
For more information or assistance, please refer to our documentation or contact our support team.
# Self-service plans and new Customer Portal
The new self-service plans make accessing CKEditor Premium Features easier than ever. You can now choose the plan that best suits your needs and get started quickly with commitment-free trials.
Plans are managed through a new, dedicated Customer Portal, where you can access license keys, track usage, manage billing, and submit support requests-all from one place.
Learn more about the different plans available or start your 14-day free trial.
# Major breaking changes in this release
config.licenseKey
is now a required property in the editor configuration. Use'GPL'
for installations under the GPL terms. See #17317.
Every day, we work hard to keep our documentation complete. Have you spotted outdated information? Is something missing? Please report it via our issue tracker.
With the release of version 42.0.0, we have rewritten much of our documentation to reflect the new import paths and features. We appreciate your feedback to help us ensure its accuracy and completeness.