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
ckeditor5
andckeditor5-premium-features
packages, 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 URL
UI 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-side
CSS classes by adding the.image
class. 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
Pagination
elements, they might stop working after this change. The reason is that a stricter CSS selector withck-pagination-loaded
is now used to hide or show these elements.
Features
- engine:
Schema
now supports disallowing items. Introduced theSchemaItemDefinition#disallowIn
,SchemaItemDefinition#disallowChildren
andSchemaItemDefinition#disallowAttributes
properties. Closes #15835. (commit) - engine: Introduced the
DiffItemInsert#action
,DiffItemInsert#before
andDiffItemRemove#action
properties 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:insertImage
component 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:multiLevelList
component 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
EditorCreatorFunction
andWatchdogConfig
types from the main index file. (commit)
Bug fixes
- ai: The
h1
tags will no longer be normalized toh2
tags in the AI Assistant response if the editor hash1
tags 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-collaboration
build targetinges2022
when creating a browser build ofckeditor5-premium-features
. - comments: Prevent crashes in narrow and wide sidebars when the
EditorAnnotations
plugin 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
insertImage
dropdown 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-side
CSS classes by adding the.image
class. Closes #16317. (commit) - link: Set
inputmode=url
to a link balloon form input. Closes #16389. (commit) - list-multi-level: The toolbar button should be
on
when the multi-level list is selected. This refers to the single button, not the split button. See #16345. - pagination: The
PageBreak
andPagination
plugin styles no longer conflict. Closes #16506. - real-time-collaboration: Long user names should render correctly in the collapsed presence list when the
config.presenceList.onClick
configuration is set. - track-changes: Fixed the
commentsrepository-duplicated-comment-thread-id
error 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
TooltipManager
tooltips should immediately show up when triggered by user focus for better responsiveness and accessibility. (commit) - Add
declare
to 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 todevDependencies
to reduce the installation size of theckeditor5
package. Related to #16360. (commit) - ckeditor5: Renamed
index.js
tockeditor5.js
in the new installation method builds. (commit) - ckeditor5: Added the
main
,module
,types
andexports
fields to thepackage.json
file. Closes #16257. (commit) - ckeditor5: Renamed files in the browser build to
ckeditor5
. (commit) - ckeditor5-premium-features: Renamed the
index.js
file tockeditor5-premium-features.js
in new installation method builds. - core: The
EditorWatchdog
,ContextWatchdog
, andContext
classes are now exposed as static fields of theEditor
class. Closes #13852. (commit) - engine: Export
XmlDataProcessor
from the main index. (commit) - engine: Export the
ViewDocumentBlurEvent
andViewDocumentFocusEvent
types from the main index. (commit) - image: The following new components are now available: the
insertImageViaUrl
toolbar button and themenuBar:insertImageViaUrl
menu bar button. (commit) - image: The
Insert image via URL
form has been moved to a modal dialog instead of being available directly in the insert image dropdown. (commit) - markdown-gfm: Rewrote
html2markdown
andmarkdown2html
to classes to improve tree-shaking. Related to #16292. (commit) - markdown-gfm: Upgraded
turndown
to 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.js
file 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#_descriptionFactory
property. UsedescriptionFactory
instead. The old property was deprecated in thev41.4.0
release. - 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)