github ckeditor/ckeditor5 v42.0.0

latest releases: v43.3.1, v43.3.0, v41.3.2...
4 months ago

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 and ckeditor5-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:

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 with ck-pagination-loaded is now used to hide or show these elements.

Features

  • engine: Schema now supports disallowing items. Introduced the SchemaItemDefinition#disallowIn, SchemaItemDefinition#disallowChildren and SchemaItemDefinition#disallowAttributes properties. Closes #15835. (commit)
  • engine: Introduced the DiffItemInsert#action, DiffItemInsert#before and DiffItemRemove#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 and WatchdogConfig types from the main index file. (commit)

Bug fixes

  • ai: The h1 tags will no longer be normalized to h2 tags in the AI Assistant response if the editor has h1 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 targeting es2022 when creating a browser build of ckeditor5-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 and Pagination 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 calling TrackChangesData#getDataWithAcceptedSuggestions() and TrackChangesData#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 to devDependencies to reduce the installation size of the ckeditor5 package. Related to #16360. (commit)
  • ckeditor5: Renamed index.js to ckeditor5.js in the new installation method builds. (commit)
  • ckeditor5: Added the main, module, types and exports fields to the package.json file. Closes #16257. (commit)
  • ckeditor5: Renamed files in the browser build to ckeditor5. (commit)
  • ckeditor5-premium-features: Renamed the index.js file to ckeditor5-premium-features.js in new installation method builds.
  • core: The EditorWatchdog, ContextWatchdog, and Context classes are now exposed as static fields of the Editor class. Closes #13852. (commit)
  • engine: Export XmlDataProcessor from the main index. (commit)
  • engine: Export the ViewDocumentBlurEvent and ViewDocumentFocusEvent types from the main index. (commit)
  • image: The following new components are now available: the insertImageViaUrl toolbar button and the menuBar: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 and markdown2html to classes to improve tree-shaking. Related to #16292. (commit)
  • markdown-gfm: Upgraded turndown to version 7.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. Use descriptionFactory instead. The old property was deprecated in the v41.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.

Released packages (summary)

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

Don't miss a new ckeditor5 release

NewReleases is sending notifications on new releases.