Update to CKEditor 5 v43.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 v43.1.0
Released on September 5, 2024.
For the entire list of changes introduced in version 43.1.0, see the release notes for CKEditor 5 v43.1.0.
Below are the most important changes that require your attention when upgrading to CKEditor 5 v43.1.0.
# Reverted recently introduced config.sanitizeHtml
In v43.0.0 we made a decision to move config.htmlEmbed.sanitizeHtml
to a top-level property config.sanitizeHtml
, so it could be used by multiple features (HTML embed, merge fields, and possibly other in future).
However, we realized that it was a wrong decision to expose such a sensitive property in a top-level configuration property. We are worried that integrators may be confused and incorrectly assume that this callback would sanitize the entire output from CKEditor. Therefore, we decided to revert that change, so the sanitization callback is related strictly with the features that use it.
Starting with v43.1.0, you should again use config.htmlEmbed.sanitizeHtml
and newly introduced config.mergeFields.sanitizeHtml
. The editor will throw an error if config.sanitizeHtml
is used.
Note: CKEditor 5, by default, prevents execution of scripts in the editor content, while the content is being edited inside the editor. However, there are features (such as General HTML support or HTML embed) that can be configured to make CKEditor 5 produce HTML output that contains executable scripts. Please remember, that CKEditor 5 is a frontend component working in a browser. As an integrator, it is your responsibility to sanitize the content before it is displayed on your website or on other potentially vulnerable medium.
# Table and cell border settings update
The tables’ user interface now clearly indicates the default border settings. It allows users to set “no borders” (None) for tables and cells without any additional configuration.
⚠️ In some cases this update may lead to data changes in the tables’ HTML markup when the editor loads them. However, visually nothing will change, and the experience will be the same.
# Update to CKEditor 5 v43.0.0
Released on August 7, 2024.
For the entire list of changes introduced in version 43.0.0, see the release notes for CKEditor 5 v43.0.0.
Below are the most important changes that require your attention when upgrading to CKEditor 5 v43.0.0.
# Export to Word v2 becomes the default
In CKEditor 5 v42.0.0, we introduced a new version of the Export to Word plugin that utilizes the updated converter (marked as V2). It was introduced in an opt-in manner. Starting with v43.0.0, the Export to Word V2 is the default configuration. This may require updates to the editor’s configuration if you use this plugin.
Example V1 configuration:
exportWord: {
tokenUrl: 'https://example.com/cs-token-endpoint',
fileName: 'my-file.docx',
converterOptions: {
format: 'A4',
margin_top: '20mm',
margin_bottom: '20mm',
margin_right: '12mm',
margin_left: '12mm'
}
}
The same migrated to V2:
exportWord: {
tokenUrl: 'https://example.com/cs-token-endpoint',
fileName: 'my-file.docx',
converterOptions: {
document: {
size: 'A4',
margin: {
top: '20mm',
bottom: '20mm',
right: '12mm',
left: '12mm'
}
}
}
}
You can find the full V2 configuration in the ExportWordConverterOptionsV2
API documentation.
# Other configuration changes
- We decided to switch the default
auto_pagination
option tofalse
. This option was only used with the pagination feature. When enabled, the breaks in the pagination force page breaks in the exported Word document. However, browser engines and Microsoft Word differ significantly in how they render page elements. Because of that we decided to turn this option off. If you still want to enforce breaks from pagination, change it in the configuration totrue
. - A new configuration option was added:
document.language
. It is set to the editor content language by default.
# Typing bug fixes
This release brings a couple of improvements to typing in the editor.
- Android IME: multiple issues related to duplicated characters, reverse writing effects, etc. (#13994, #14707, #13850, #13693, #14567, #11569).
- Safari: the reverse typing effect after the focus change (#14702).
These fixes do not require migration, but typing is a crucial area for the editor, and we want to call them out explicitly.
# Special characters user interface
The special characters UI has been changed from a dropdown to a dialog. This unifies the action between the menu bar and the toolbar. It also gives content creators quicker access to the always-on-top dialog when they insert a lot of symbols into the content.
# Update of global names in the UMD builds
We have decided to change the global names for the ckeditor5
and ckeditor5-premium-features
packages in the UMD builds to CKEDITOR
and CKEDITOR_PREMIUM_FEATURES
respectively.
# React and Vue integrations updates
We have released new major versions of the React and Vue integrations. In both of them, we have migrated to JavaScript modules (ESM) and rewritten large parts of their codebases to support the latest versions of these frameworks and to follow the latest recommendations for writing the components.
We strongly recommend that you read the release highlights to update to the latest versions:
# Updates to the Package Generator
In the last major release of CKEditor 5, we introduced new installation methods. Since then we have received a lot of feedback from you. Thanks to this, we identified several minor issues fixed in versions 42.0.1 and 42.0.2. While these fixes did not require any changes in the application, they do require some changes in the custom plugins created with the Package Generator.
You can skip this section if you have not read the Migrating custom plugins guide. However, if you have, follow the steps below to apply these fixes to your plugin.
-
Update all packages starting with
@ckeditor/ckeditor5-dev-
to version^42.0.0
. -
Open the
package.json
file and replace the content as follows:-
If your project is written in TypeScript, replace the
"types"
and"exports"
fields:"types": "dist/index.d.ts", "exports": { ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" }, "./*": "./dist/*", "./browser/*": null, "./package.json": "./package.json" }
-
If your project is written in plain JavaScript, replace the
“exports”
field:"exports": { ".": "./dist/index.js", "./*": "./dist/*", "./browser/*": null, "./package.json": "./package.json" }
-
-
Open the
scripts/build-dist.mjs
file and look for thename
object key in the secondbuild()
step. This value represents the global variable under which your plugin is available in the UMD build and should currently match the name of your package. UMD is an alternative build format that we provide for those who cannot use JavaScript modules in their applications. We encourage you to update this value toCKEDITOR_PLUGIN_X
, whereX
uniquely identifies your plugin. We recommend using only uppercase letters and underscores (_
).
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.