We are happy to announce the release of CKEditor 5 v42.0.0.
Release highlights
New installation methods
We are excited to announce the latest release of CKEditor 5, bringing major improvements to simplify the installation and setup process. After extensive research and gathering feedback, we have improved the setup methods to enhance the developer experience and align with modern standards.
The most prominent changes:
- All plugins and core features are now available from the unified
ckeditor5andckeditor5-premium-featurespackages, reducing dependency management complexity. - Our packages became bundler-agnostic. You can use whatever bundler you want (such as Vite or esbuild), to integrate CKEditor 5.
- CSS files are now distributed separately from JavaScript, allowing for parallel downloading, easier customization, and improved performance.
- All the new distribution methods (available via npm, CDN, and ZIP downloads) allow dynamic plugin registration making it easy to add or remove plugins dynamically.
The old installation methods are still supported, but we put them on the deprecation path. Read more about this in our migration guides.
New Builder
Along with the new release, we present you the brand new CKEditor 5 Builder.
The new Builder allows you to start with one of the predefined presets, customize it by adding and removing features, and observe the changes live in an editor preview (and play with the editor!). Once you are happy with your custom setup, you get ready-to-use code snippets for React, Angular, Vue, and VanillaJS setups for both npm and CDN distributions.
Updated documentation
We rewrote large parts of the documentation to complete the picture and ensure consistency across the ecosystem. The entire Getting started section was redesigned to focus on the new installation methods and to better guide the integrator through the ecosystem.
If you need clarification or a more in-depth explanation, please let us know.
Migration paths
Finally, detailed migration guides can be found in our documentation. These guides provide step-by-step instructions and examples to help you seamlessly transition to the new installation methods:
- Predefined builds migration guide.
- Custom builds migration guide.
- DLLs migration guide.
- Migration guide for custom plugins published as libraries.
We value your input, so please share your experiences, ask questions, and provide feedback to help us refine these changes. Join us in this exciting new chapter for CKEditor 5 and let’s make the developer experience as smooth and enjoyable as possible.
Removal of superbuild and predefined builds from the CDN
We have stopped publishing the superbuild and predefined builds to our CDN. Predefined builds can still be accessed as an npm package. If you want to keep using our CDN with new versions of the editor, we recommend migrating to the new installation methods.
Other updates
We are excited to announce a major update to our premium Export to Word feature, delivering significantly improved quality with multiple enhancements and bug fixes. This release also brings a substantial reduction in the conversion time. Export to Word v2 is an opt-in feature right now, and to use it you need to slightly change the editor’s configuration. Detailed information can be found in the documentation.
MINOR BREAKING CHANGES ℹ️
- image: The
Insert image via URLUI component form has been moved to a modal dialog instead of being available directly in the insert image dropdown. - image: Increased specificity of the
.image-style-block-align-[right/left],.image-style-align-[right/left], and.image-style-sideCSS classes by adding the.imageclass. See #16317. - media-embed: The media embed feature now uses a modal dialog (instead of a toolbar dropdown) for inserting media.
- pagination: If you have custom CSS styles that override the default styling of the
Paginationelements, they might stop working after this change. The reason is that a stricter CSS selector withck-pagination-loadedis now used to hide or show these elements.
Features
- engine:
Schemanow supports disallowing items. Introduced theSchemaItemDefinition#disallowIn,SchemaItemDefinition#disallowChildrenandSchemaItemDefinition#disallowAttributesproperties. Closes #15835. (commit) - engine: Introduced the
DiffItemInsert#action,DiffItemInsert#beforeandDiffItemRemove#actionproperties which give more information about the change that happened in the model. Refer to the API documentation to learn more. Closes #15800. (commit) - export-word: Added support for Export to Word API v2.
- image: Added menu bar integration for the insert image component. The
menuBar:insertImagecomponent is by default added to the "Insert" menu and replaces current buttons related to image insertion. Closes #16445. (commit) - list-multi-level: Added the menu bar integration for multi-level lists. The
menuBar:multiLevelListcomponent is by default added in the "Format" menu. - media-embed: Added menu bar integration to media embed. The "Media" button is now available in the "Insert" menu. (commit)
- watchdog: Export the
EditorCreatorFunctionandWatchdogConfigtypes from the main index file. (commit)
Bug fixes
- ai: The
h1tags will no longer be normalized toh2tags in the AI Assistant response if the editor hash1tags enabled in its content. - ckbox: The image toolbar stays attached to the image after closing CKBox. Closes #16153. (commit)
- ckeditor5-premium-features: Use the new
@ckeditor/ckeditor-cloud-services-collaborationbuild targetinges2022when creating a browser build ofckeditor5-premium-features. - comments: Prevent crashes in narrow and wide sidebars when the
EditorAnnotationsplugin is not loaded. - engine: Preserve repeated spaces in text that is contained within an element that renders (repeated) white space. Closes #16124. (commit)
- export-word: Collaboration features should work with Export Word v2 API.
- image: Buttons inside the
insertImagedropdown will no longer have an unnecessary tooltip. (commit) - image: Increased specificity of the
.image-style-block-align-[right/left],.image-style-align-[right/left], and.image-style-sideCSS classes by adding the.imageclass. Closes #16317. (commit) - link: Set
inputmode=urlto a link balloon form input. Closes #16389. (commit) - list-multi-level: The toolbar button should be
onwhen the multi-level list is selected. This refers to the single button, not the split button. See #16345. - pagination: The
PageBreakandPaginationplugin styles no longer conflict. Closes #16506. - real-time-collaboration: Long user names should render correctly in the collapsed presence list when the
config.presenceList.onClickconfiguration is set. - track-changes: Fixed the
commentsrepository-duplicated-comment-thread-iderror thrown after callingTrackChangesData#getDataWithAcceptedSuggestions()andTrackChangesData#getDataWithDiscardedSuggestions(). - track-changes: Fixed the editor crash in a scenario involving real-time collaboration and undo, when a suggestion was created twice on the same row.
- ui: Fixed incorrect position of the block toolbar tooltip handle. Closes #16365. (commit)
- ui: Prevented an editor error in a situation where tooltip was unpinned after it was already removed. This happened when the "Unlink" button was pressed while the tooltip was shown. (commit)
- ui: The
TooltipManagertooltips should immediately show up when triggered by user focus for better responsiveness and accessibility. (commit) - Add
declareto dynamically populated class fields. Closes #16386. (commit)
Other changes
- ai: Slightly improved the quality of the AI Assistant responses when the editor selection is empty.
- ckeditor5: Moved the
@ckeditor/ckeditor5-build-*packages todevDependenciesto reduce the installation size of theckeditor5package. Related to #16360. (commit) - ckeditor5: Renamed
index.jstockeditor5.jsin the new installation method builds. (commit) - ckeditor5: Added the
main,module,typesandexportsfields to thepackage.jsonfile. Closes #16257. (commit) - ckeditor5: Renamed files in the browser build to
ckeditor5. (commit) - ckeditor5-premium-features: Renamed the
index.jsfile tockeditor5-premium-features.jsin new installation method builds. - core: The
EditorWatchdog,ContextWatchdog, andContextclasses are now exposed as static fields of theEditorclass. Closes #13852. (commit) - engine: Export
XmlDataProcessorfrom the main index. (commit) - engine: Export the
ViewDocumentBlurEventandViewDocumentFocusEventtypes from the main index. (commit) - image: The following new components are now available: the
insertImageViaUrltoolbar button and themenuBar:insertImageViaUrlmenu bar button. (commit) - image: The
Insert image via URLform has been moved to a modal dialog instead of being available directly in the insert image dropdown. (commit) - markdown-gfm: Rewrote
html2markdownandmarkdown2htmlto classes to improve tree-shaking. Related to #16292. (commit) - markdown-gfm: Upgraded
turndownto version7.2.0. Closes #16371. (commit) - media-embed: The media embed feature now uses a modal dialog (instead of toolbar dropdown) for inserting media. (commit)
- operations-compressor: Improved the build size by making the
compiledmessages.jsfile tree-shakeable. - theme-lark: Added a separator (border) between the menu bar and the toolbar for the classic editor. (commit)
- theme-lark: Toolbar separators are now shorter. (commit)
- track-changes: Removed the deprecated
TrackChangesEditing#_descriptionFactoryproperty. UsedescriptionFactoryinstead. The old property was deprecated in thev41.4.0release. - widget: Added information to the accessibility help dialog about a keyboard shortcut that moves focus from a nested editable back to the widget. (commit)
- Improved tree-shaking by prefixing mixin calls with a
/* #__PURE__ */magic comment. See #16292. (commit) - Updated translations. (commit, commit, commit)
Released packages
Check out the Versioning policy guide for more information.
Minor releases (contain minor breaking changes):
Releases containing new features:
Other releases:
Released packages (summary)