Detalhes do pacote

ckeditor5

ckeditor4.4mSEE LICENSE IN LICENSE.md46.0.0

A set of ready-to-use rich text editors created with a powerful framework. Made with real-time collaborative editing in mind.

ckeditor, ckeditor5, ckeditor 5, wysiwyg

readme (leia-me)

CKEditor 5 Tweet

npm version Coverage Status CircleCI TypeScript Support

Join newsletter Follow Twitter

CKEditor 5 is a modern JavaScript rich-text editor with MVC architecture, custom data model, and virtual DOM, written from scratch in TypeScript with excellent support for modern bundlers. It provides every type of WYSIWYG editing solution imaginable with extensive collaboration support. From editors similar to Google Docs and Medium to Slack or Twitter-like applications, all is possible within a single editing framework. As a market leader, it is constantly expanded and updated.

A composition of screenshots presenting various features of CKEditor 5 rich text editor

Table of contents

Quick start

Refer to the Quick Start guide to learn more about CKEditor 5 installation.

CKEditor 5 Builder

The easiest way to start using CKEditor 5 with all the features you need is to prepare a customized setup with the CKEditor 5 Builder. All you need to do is choose the preferred editor type as a base, add all the required plugins, and download the ready-to-use package.

TypeScript support

CKEditor 5 is a TypeScript project. Starting from v37.0.0, it offers native type definitions. Check out our dedicated guide to read more about TypeScript support.

CKEditor 5 advanced installation

For more advanced users or those who need to integrate CKEditor 5 with their applications, we prepared integrations with popular JavaScript frameworks:

CKEditor 5 Framework

CKEditor 5 is also a framework for creating custom-made rich text editing solutions.

To find out how to start building your editor from scratch go to the CKEditor 5 Framework overview section of the CKEditor 5 documentation.

Documentation and FAQ

Extensive documentation dedicated to all things CKEditor 5-related is available. You will find basic guides that will help you kick off your project, advanced deep-dive tutorials to tailor the editor to your specific needs, and help sections with solutions and answers to any of your possible questions. To find out more refer to the following CKEditor 5 documentation sections:

For FAQ please go to the CKEditor Ecosystem help center. For a high-level overview of the project see the CKEditor Ecosystem website.

Releases

Follow the CKEditor 5 changelog for release details and check out the CKEditor 5 release blog posts on the CKSource blog for important release highlights and additional information.

Editing and collaboration features

The CKEditor 5 Framework offers access to a plethora of various plugins, supporting all kinds of editing features.

From collaborative editing support providing comments and tracking changes, through editing tools that let users control the content looks and structure such as tables, lists, and font styles, to accessibility helpers and multi-language support - CKEditor 5 is easily extensible and customizable. Special duty features like Markdown input and output and source editing, or export to PDF and Word provide solutions for users with diverse and specialized needs. Images and videos are easily supported and CKEditor 5 offers various upload and storage systems to manage these.

The number of options and the ease of customization and adding new ones make the editing experience even better for any environment and professional background.

Refer to the CKEditor 5 Features documentation for details.

Create a free account and test full potential

If you want to check full CKEditor 5 capabilities, including premium features, sign up for a free non-commitment 14-day trial.

Contributing and project organization

Ideas and discussions

The development repository of CKEditor 5 is located at https://github.com/ckeditor/ckeditor5. This is the best place for bringing opinions and contributions. Letting the core team know if they are going in the right or wrong direction is great feedback and will be much appreciated!

Development

CKEditor 5 is a modular, multi-package, monorepo project. It consists of several packages that create the editing framework, based on which the feature packages are implemented.

The ckeditor5 repository is the place that centralizes the development of CKEditor 5. It bundles different packages into a single place, adding the necessary helper tools for the development workflow, like the builder and the test runner. Basic information on how to set up the development environment can be found in the documentation.

See the official contributors' guide to learn how to contribute your code to the project.

Reporting issues and feature requests

Report issues in the ckeditor5 repository. Read more in the Getting support section of the CKEditor 5 documentation.

License

Licensed under a dual-license model, this software is available under:

For more information, see: https://ckeditor.com/legal/ckeditor-licensing-options.

changelog (log de mudanças)

Changelog

46.0.0 (July 9, 2025)

We are happy to announce the release of CKEditor 5 v46.0.0.

Release highlights

[!IMPORTANT]
This is a major release with significant amount of changes that may affect your CKEditor 5 integration. We strongly encourage you to read the entire update guide to understand all the changes. Pay special attention to:

Line Height (⭐)

The new Line Height feature allows you to adjust the vertical spacing between lines of text, improving readability and visual harmony in your documents. This premium feature lets you set consistent line spacing across paragraphs and text blocks to enhance document accessibility and maintain visual hierarchy in your content.

Remove Format improvements

Unneeded styles on block elements, such as tables and images, and General HTML Support nodes and attributes are finally eliminated when you hit the remove format button. The feature now cleans what it should, leaving the document structure untouched.

List markers styling

Working with styled lists becomes more intuitive as list markers (bullets and numbers) now automatically inherit text styling properties such as font size adjustments, text color changes, and font weight modifications (bold, italic).

This improvement makes it easier to create visually consistent and professional-looking lists without additional configuration. This improvement also supports Multi-level lists.

Important! This behavior is enabled by default, which means you may experience content change when you load the content to the editor 's new version (for the better in our opinion). But if this is not something you expect, you can opt out.

Markdown processor dependency refresh

The Markdown feature dependencies have been modernized with a switch to the unified ecosystem, replacing the previous marked / turndown implementation. This change brings more consistent and symmetrical HTML ↔ Markdown conversion. By adopting remark and rehype from the same family of tools, we have created a more reliable and maintainable implementation that will better serve your document processing needs.

Manual token refreshing

We have added the config.cloudServices.autoRefresh configuration property to disable the automatic token refresh mechanism. When it 's set to false, the token must be refreshed manually. This property opens up the ability to implement custom token handling if a certain use case requires this.

Comment threads improvements

New thread command changes

We have also introduced improvements to the addCommandThread command, which now supports creating comment threads on specified ranges. Additionally, it allows for creating a comment thread with an initial comment with the provided comment content.

Minor breaking change The AddCommandThreadCommand#isEnabled property is no longer false when the current document selection is empty, as the command now allows for creating comment threads on custom ranges. If you previously used this property (for example, to provide a custom UI element), you should now use the observable AddCommentThreadCommand#hasContent property instead.

Comments and suggestions annotations

We have introduced dedicated methods for an easier way to get specific annotations related to a comment or a suggestion and vice versa.

Unified exports and renames in the editor API

After the big New Installation Method release (v42.0.0+), some developers upgrading from v41-x to v42-x were greeted by the does not provide an export named ... error. We addressed issues immediately as they were reported, but we knew it required a deeper are more comprehensive approach long-term.

With this release, we introduced a new, clear set of rules about internal imports, and also added re-exports if they were missing, changed the names of items to be more descriptive and avoid collisions, took care of internal methods that were already exported but not tagged, and cleaned up @deprecated code that was stale for some time.

If your build throws errors after the update, search and replace the old names with the new ones from the update guide. We have not changed the behavior of these APIs, just the names.

Last but not least, this release put us on the clean and straight path towards the deprecation of old installation methods. Please let us know if you have any questions on GitHub or support channels.

Opinionated default content styles and CSS renames

To improve the out-of-the-box experience and accessibility, we are introducing opinionated defaults for content styling. From this version, we ship a small defaults layer applied to .ck-content. These content styles are easily replaceable via CSS variable override. You may have already styled those things with more specific selectors.

While working on this initiative, we decided to standardize the CSS naming, too. All older variables that applied to the content styles now share the consistent --ck-content-* prefix. Read about the details in the update guide.

MAJOR BREAKING CHANGES ℹ️

  • ai: The AI Assistant now uses the more advanced gpt-4o model by default, replacing the previous gpt-3.5-turbo. This update improves response quality and overall capabilities. Additionally, the default limit set by max_tokens parameter has been removed, allowing for better and more detailed responses. If you relied on the previous default settings and wish to continue using them, be sure to explicitly define the editor configuration entry ai.openAi.requestParameters to { model: 'gpt-3.5-turbo', max_tokens: 2000, stream: true }.
  • document-outline: Content area CSS variables have been renamed to use the --ck-content-* prefix for better consistency in the Table of Contents feature. This requires action if you have overridden the variables. See the update guide for details.
  • list: Removed vertical spacing in list items by resetting margins for <p> elements that are the child of a <li> element.
  • table: Removed vertical spacing in table cells by collapsing margins of

    elements that are the only child of a <td> or <th> element.

  • The editor now enforces default browser styles for text content in both the editing view and rendered output. This change may affect existing styling and layout, so any custom CSS overrides should be reviewed. See #18710 for details. The following CSS variables and their default values are now applied:
    • --ck-content-font-family: Helvetica, Arial, Tahoma, Verdana, sans-serif
    • --ck-content-font-size: medium
    • --ck-content-font-color: #000 (HEX instead of hsl() to ensure compatibility with email clients)
    • --ck-content-line-height: 1.5
    • --ck-content-word-break: break-word
  • The default styles for comment annotations have changed to provide better consistency with the editor UI. A new set of CSS variables is now used to control the appearance of the comment content and input fields. These changes may affect the current appearance of comments in your integration, so please review them after updating. The following CSS variables are now applied:

    • --ck-comment-content-font-family
    • --ck-comment-content-font-size
    • --ck-comment-content-font-color (default changed from hsl(0, 0%, 0%) to hsl(0, 0%, 20%))

    These variables default to values derived from the editor 's UI styles, and they may differ from your current settings. Customize these variables as needed to match your desired appearance.

  • Content area CSS variables have been renamed to use the --ck-content-* prefix for better consistency in the Highlight, Image, List, and Table features. This requires action if you have overridden the variables. See the update guide for details.
  • Table-related CSS variables with improper *-selector-* naming have been renamed to use *-table-* for better clarity. This requires action if you have overridden the variables. See the update guide for details.

MINOR BREAKING CHANGES ℹ️

  • comments: The AddCommandThreadCommand#isEnabled property is no longer false when the current document selection is empty, as the command now allows for creating comment threads on custom ranges. If you previously used this property (for example, to provide a custom UI element), you should now use the observable AddCommentThreadCommand#hasContent property instead.
  • core: Removed the deprecated DataApiMixin function and DataApi interface. Their functionality is the part of the Editor class.
  • engine: Removed Batch#type deprecated property.
  • list: Removed DocumentList, DocumentListProperties and TodoDocumentList plugins. They were aliases for plugins List, ListProperties and DocumentList respectively.
  • markdown-gfm: Migrated from marked and turndown to remark and rehype for improved extensibility and alignment with the modern Markdown ecosystem.
  • markdown-gfm: Enabled the autolinking feature in Markdown when loading Markdown content into the editor.
  • ui: Removed the deprecated buttonView property from buttons created with FileDialogViewMixin. Use the button object itself.
  • utils: Removed the deprecated mix function.
  • utils: Removed the deprecated Locale#language property. Use Locale#uiLanguage instead.

Features

  • cloud-services: Added the config.cloudServices.autoRefresh configuration property that allows disabling the automatic token refresh mechanism. When set to false, the token must be refreshed manually, enabling custom token handling. (commit)
  • comments: Extended the options argument passed to the AddCommentThreadCommand#execute() method. The command now supports creating comment threads on specified ranges. Additionally, it allows for creating a comment thread with an initial comment, using the provided comment content.
  • html-support: Added the integration with the remove format command for block elements. Closes #13983. (commit)
  • image: Image style and resized size can now be removed by the remove format command. See #13983. (commit)
  • line-height: Introduced the Line height feature that lets you adjust the vertical spacing between lines of text. Closes ckeditor/ckeditor5#11360.
  • list: Introduced list item marker formatting for consistently styled content (supports Bold, Italic, Font Size, Font Family, and Font Color). Closes #18537. (commit)
  • list-multi-level: Introduced list item marker formatting for consistently styled content (supports Bold, Italic, Font Size, Font Family, and Font Color).
  • table: Table properties and cell properties can now be removed by the remove format command. See #13983. (commit)

Bug fixes

  • autoformat: Block autoformat should restore the allowed selection attributes. Closes #17365. (commit)
  • clipboard: Added z-index to the clipboard drop target line. Closes #18380. (commit)
  • code-block: The feature-related HTML classes should not leak to the General HTML Support feature. See #13983. (commit)
  • comments: Activating a comment marker nested inside another marker will no longer result in an error.
  • engine: StylesMap should properly remove styles while accessing them by border-left property. See #13983. (commit)
  • font: The font dropdown correctly reflects the applied font, even if the font-style CSS property includes excessive spaces. Closes #18558. (commit)
  • html-support: The custom link styling is now removed with the remove format command. Closes #15318. (commit)
  • list: No longer merge separate lists pasted from Microsoft Office into a single list. Closes #18015. (commit)
  • list: Improved rendering of the

    element when it is an only child of a list item (<li>) or a table cell (<td> or <th>). Closes #17440. (commit)

  • list: Improved the paragraphs' spacing in lists and tables. Closes: #11347. (commit)
  • merge-fields: The Merge Fields feature no longer throws an error when processing image elements without the [src] attribute in specific cases.
  • page-break: The feature-related HTML classes should not leak to the General HTML Support feature. See #13983. (commit)
  • table: Improved rendering of the

    element when it is an only child of a list item (<li>) or a table cell (<td> or <th>). Closes #17440. (commit)

  • table: Improved the paragraphs' spacing in lists and tables. Closes: #11347. (commit)
  • track-changes: Fixed an error thrown when the discardAllSuggestions command or TrackChangesData plugin were used, if there was an element with split suggestion, and the second part of the element had an attribute or rename suggestion.
  • undo: The Undo feature incorrectly restored content in scenario when a block quote (or other similar container) was unwrapped, then its former first or last element were merged, and then undo was used to restore block quote. Closes #18740, #18415. (commit)

Other changes

  • ai: Improve tree-shaking of external dependencies by marking the package as side-effect-free.
  • ai: The default config for the AI Assistant has changed. The feature now uses gpt-4o model by default and does not set max_tokens parameter.
  • comments: The AddCommandThreadCommand#isEnabled property is no longer false when the current document selection is empty, as the command now allows for creating comment threads on custom ranges.
  • comments: Added a public API to get an annotation for a comment thread using CommentsRepository#getAnnotationForCommentThread() and to get a comment thread for an annotation using CommentsRepository#getCommentThreadForAnnotation().
  • comments: Implemented --ck-comment-content-font-family, --ck-comment-content-font-size and --ck-comment-content-font-color CSS variables to standardize font family, size and color styling in comments content. These variables apply to both the submitted comment content and the comment input field.
  • core: Implemented the --ck-content-font-family, --ck-content-font-size and --ck-content-font-color CSS variables to standardize font family, size, and color styling in CKEditor 5 content. Closes #18710. (commit)
  • core: Implemented the --ck-content-line-height CSS variable to standardize line-height styling in CKEditor 5 content. See #18710. (commit)
  • document-outline: Align Table of Contents content area CSS variables to the --ck-content-* prefix.
  • engine: The atributeToAtribute() and elementToAtribute() upcast helpers should not consume anything if a conversion callback returns undefined value. See #18575. (commit)
  • highlight: Align content area CSS variables to the --ck-content-* prefix. Closes #18735. (commit)
  • image: Align content area CSS variables to the --ck-content-* prefix. Closes #18735. (commit)
  • list: Align content area CSS variables to the --ck-content-* prefix. Closes #18735. (commit)
  • list: The [data-list-item-id] attribute is now added on <li> elements in editor data to improve integration between lists feature and other editor features. Closes #18407. (commit)
  • markdown-gfm: Migrate to remark / rehype packages. Closes #18684. (commit)
  • table: Align content area CSS variables to the --ck-content-* prefix. Closes #18735. (commit)
  • table: Fix the table's CSS variables, which had -selector- string in their name. (commit)
  • table: The legacy HTML table attributes are now normalized to editor features (width, height, bgcolor). Closes #18575. (commit)
  • theme: Align content area CSS variables to the --ck-content-* prefix. Closes #18735. (commit)
  • track-changes: The TrackChangesEditing#recordAttributeChanges() method has been made public to support custom integrations that require direct attribute modifications via the writer. Previously, attribute suggestions could only be generated through command execution, limiting flexibility for script-based scenarios.
  • track-changes: Added a public API to get an annotation for a suggestion using TrackChangesUI#getAnnotationForSuggestion() and to get a suggestion for an annotation using TrackChangesUI#getSuggestionForAnnotation().
  • ui: CssTransitionDisablerMixin should allow late initialization. Closes #18626. (commit)
  • utils: The error re-throw mechanism should not provide an invalid documentation link. Closes #18176. (commit)
  • Commands are now exported as a value instead of a type. Closes #18588. (commit)
  • Updated several dependencies used in CKEditor 5 packages:
    • ui: color-convert, color-parse
    • uploadcare: @uploadcare/file-uploader, @uploadcare/upload-client
    • ai: @aws-sdk/client-bedrock-runtime
    • source-editing-enhanced: @codemirror/commands
    • Multiple packages: es-toolkit, luxon.

Released packages

Check out the Versioning policy guide for more information.

<summary>Released packages (summary)</summary> New packages: @ckeditor/ckeditor5-line-height: v46.0.0 Major releases (contain major breaking changes): @ckeditor/ckeditor5-ai: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-list: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-table: v45.2.1 => v46.0.0 Minor releases (contain minor breaking changes): @ckeditor/ckeditor5-comments: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-markdown-gfm: v45.2.1 => v46.0.0 Releases containing new features: @ckeditor/ckeditor5-autoformat: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-cloud-services: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-code-block: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-engine: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-font: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-html-support: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-image: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-page-break: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-paste-from-office: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-remove-format: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-source-editing: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-upload: v45.2.1 => v46.0.0 Other releases: @ckeditor/ckeditor5-adapter-ckfinder: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-alignment: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-autosave: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-basic-styles: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-block-quote: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-bookmark: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-case-change: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-ckbox: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-ckfinder: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-clipboard: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-collaboration-core: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-core: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-document-outline: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-easy-image: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-editor-balloon: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-editor-classic: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-editor-decoupled: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-editor-inline: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-editor-multi-root: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-email: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-emoji: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-enter: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-essentials: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-export-inline-styles: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-export-pdf: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-export-word: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-find-and-replace: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-format-painter: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-fullscreen: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-heading: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-highlight: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-horizontal-line: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-html-embed: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-icons: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-import-word: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-indent: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-language: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-link: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-list-multi-level: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-media-embed: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-mention: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-merge-fields: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-minimap: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-operations-compressor: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-pagination: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-paragraph: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-paste-from-office-enhanced: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-real-time-collaboration: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-restricted-editing: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-revision-history: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-select-all: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-show-blocks: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-slash-command: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-source-editing-enhanced: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-special-characters: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-style: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-template: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-theme-lark: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-track-changes: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-typing: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-ui: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-undo: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-uploadcare: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-utils: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-watchdog: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-widget: v45.2.1 => v46.0.0 @ckeditor/ckeditor5-word-count: v45.2.1 => v46.0.0 ckeditor5-collaboration: v45.2.1 => v46.0.0 * ckeditor5-premium-features: v45.2.1 => v46.0.0

45.2.1 (June 24, 2025)

We are happy to announce the release of CKEditor 5 v45.2.1.

Release highlights

This hotfix release brings fixes for certain regressions in the field of text selection (with balloon toolbars enabled), multi-level lists, and pagination.

Bug fixes

  • engine: Fixed editor crash that happened in a specific scenario, when editing heavily formatted text, text with multiple comments, or text with comments and formatting. Closes #18727. (commit)
  • engine: Fixed incorrect cache invalidation in Mapper, which could lead to crashes when editing heavily formatted content or when using complex features like multi-level lists. Closes #18678. (commit)
  • engine: Fixed editor crash that happened when typing over a table content with the balloon toolbar enabled. Closes #18648. (commit)
  • list-multi-level: Fixed editor crash that happened when editing deeply nested multi-level lists. Closes #18678. (commit)
  • table: Improved calculation of pagination page-breaks on documents with long tables. Closes #18600. (commit)
  • typing: Typing over multiple selected blocks next to a code block or a block quote should not crash the editor. Closes #18722. (commit)

Released packages

Check out the Versioning policy guide for more information.

<summary>Released packages (summary)</summary> Other releases: @ckeditor/ckeditor5-adapter-ckfinder: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-ai: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-alignment: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-autoformat: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-autosave: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-basic-styles: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-block-quote: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-bookmark: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-case-change: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-ckbox: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-ckfinder: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-clipboard: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-cloud-services: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-code-block: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-collaboration-core: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-comments: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-core: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-document-outline: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-easy-image: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-editor-balloon: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-editor-classic: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-editor-decoupled: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-editor-inline: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-editor-multi-root: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-email: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-emoji: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-engine: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-enter: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-essentials: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-export-inline-styles: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-export-pdf: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-export-word: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-find-and-replace: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-font: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-format-painter: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-fullscreen: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-heading: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-highlight: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-horizontal-line: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-html-embed: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-html-support: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-icons: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-image: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-import-word: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-indent: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-language: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-link: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-list: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-list-multi-level: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-markdown-gfm: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-media-embed: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-mention: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-merge-fields: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-minimap: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-operations-compressor: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-page-break: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-pagination: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-paragraph: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-paste-from-office: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-paste-from-office-enhanced: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-real-time-collaboration: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-remove-format: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-restricted-editing: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-revision-history: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-select-all: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-show-blocks: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-slash-command: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-source-editing: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-source-editing-enhanced: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-special-characters: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-style: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-table: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-template: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-theme-lark: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-track-changes: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-typing: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-ui: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-undo: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-upload: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-uploadcare: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-utils: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-watchdog: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-widget: v45.2.0 => v45.2.1 @ckeditor/ckeditor5-word-count: v45.2.0 => v45.2.1 ckeditor5-collaboration: v45.2.0 => v45.2.1 ckeditor5-premium-features: v45.2.0 => v45.2.1

45.2.0 (June 4, 2025)

We are happy to announce the release of CKEditor 5 v45.2.0.

Release highlights

CKEditor 5 v45.2.0 offers the following improvements and bug fixes.

  • We fixed the copy-paste scenario in the read-only mode.
  • Tables pasted from Office, especially with borderless layouts, should preserve styling in the editor similar to the ones in the source file.
  • Improved the adoption of the fullscreen feature on smaller screens and includes subtle visual tweaks.

MINOR BREAKING CHANGES ℹ️

  • source-editing: The formatHtml() helper function is extracted to the @ckeditor/ckeditor5-utils package. See #18480.

Features

  • fullscreen: Empty sidebars will no longer lock empty space around the editable in fullscreen mode. Closes #18474. (commit)

Bug fixes

  • engine: The editor should not crash while using Mac text replacement in the Track changes mode. (commit)
  • engine: Copying content in read-only mode should use the current document selection. Closes #18514. (commit)
  • engine: The editor should not crash after clearing content with a widget selected. Closes #18123, #18458. (commit)
  • pagination: Chrome no longer incorrectly pushes content to the next page when rendering documents consisting mainly of paragraphs with soft line breaks. Closes #7316.
  • paste-from-office: Unset table borders no longer fall back to default table styles. Closes #16931, #10655, #18540. (commit)
  • real-time-collaboration: Fixed a crash that occurred when a user selected table cells containing only non-textual elements, such as images.
  • revision-history: Fixed a crash in the revision history viewer that occurred when navigating revision changes, if the previewed revision was restored by one user but included suggestions originally made by other users.
  • source-editing: Single line pre-block should not cause loss of indentation on later lines in source mode. Closes #18360. (commit)
  • source-editing: Empty lines in code blocks should not be removed in source editing mode. See #18480. (commit)
  • source-editing-enhanced: Single line pre-block should not cause loss of indentation on later lines in source mode. Closes #18360. (commit)
  • source-editing-enhanced: Empty lines in code blocks should not be removed in source editing mode. See #18480. (commit)
  • table: Should apply the proper [width] attribute when it is used both on <table> and <figure> elements. Closes #18469. (commit)
  • track-changes: Fixed crashes that could occur in real-time collaboration when a user splits suggestions rapidly in a short time frame.

Other changes

  • paste-from-office: Normalized pasted table length units (dimensions and border widths). (commit)
  • The development environment requires Node v22 due to migrating to the latest ESLint (v9) version. See #18475. (commit)

Released packages

Check out the Versioning policy guide for more information.

<summary>Released packages (summary)</summary> Minor releases (contain minor breaking changes): @ckeditor/ckeditor5-source-editing: v45.1.0 => v45.2.0 Releases containing new features: @ckeditor/ckeditor5-fullscreen: v45.1.0 => v45.2.0 Other releases: @ckeditor/ckeditor5-adapter-ckfinder: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-ai: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-alignment: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-autoformat: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-autosave: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-basic-styles: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-block-quote: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-bookmark: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-case-change: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-ckbox: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-ckfinder: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-clipboard: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-cloud-services: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-code-block: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-collaboration-core: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-comments: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-core: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-document-outline: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-easy-image: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-editor-balloon: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-editor-classic: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-editor-decoupled: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-editor-inline: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-editor-multi-root: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-email: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-emoji: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-engine: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-enter: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-essentials: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-export-inline-styles: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-export-pdf: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-export-word: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-find-and-replace: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-font: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-format-painter: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-heading: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-highlight: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-horizontal-line: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-html-embed: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-html-support: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-icons: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-image: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-import-word: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-indent: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-language: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-link: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-list: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-list-multi-level: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-markdown-gfm: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-media-embed: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-mention: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-merge-fields: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-minimap: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-operations-compressor: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-page-break: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-pagination: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-paragraph: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-paste-from-office: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-paste-from-office-enhanced: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-real-time-collaboration: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-remove-format: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-restricted-editing: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-revision-history: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-select-all: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-show-blocks: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-slash-command: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-source-editing-enhanced: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-special-characters: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-style: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-table: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-template: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-theme-lark: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-track-changes: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-typing: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-ui: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-undo: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-upload: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-uploadcare: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-utils: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-watchdog: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-widget: v45.1.0 => v45.2.0 @ckeditor/ckeditor5-word-count: v45.1.0 => v45.2.0 ckeditor5-collaboration: v45.1.0 => v45.2.0 ckeditor5-premium-features: v45.1.0 => v45.2.0

45.1.0 (May 14, 2025)

We are happy to announce the release of CKEditor 5 v45.1.0.

Release highlights

Typing Improvements

The typing behavior has been improved for plain text typing. This adjustment allows the web browser to handle text insertion before the editor processes it, enhancing typing reliability across various scenarios, especially on Safari and iOS devices. Issues related to track changes, autocorrect, automatic text replacement, and other input methods have been addressed.

Track Changes Enhancements

A new method to start a "tracking session" has been introduced, preventing automatic merging of adjacent suggestions. This allows for more precise control over individual changes, catering to workflows that require selective acceptance of edits.

Miscellaneous improvements

  • Sticky toolbars and balloons are now better aligned with the visual viewport on iOS and Safari, ensuring correct positioning when zooming.
  • The fullscreen plugin has been improved to maintain scroll position when exiting fullscreen, avoiding unexpected jumps on smooth-scrolling pages. Layout consistency has been refined by adjusting margins and editable width. Errors related to the Content minimap plugin in fullscreen mode have also been resolved.
  • Introduced a fix which ensures that the data-author-id and data-suggestion attributes are preserved in non-block suggestions when retrieving data with showSuggestionHighlights: true.
  • We improved the algorithm for images detection in the Paste from Office feature, in scenarios of mixed local and online images from Microsoft Word. Paste no longer causes some images not to appear.

MINOR BREAKING CHANGES ℹ️

  • The default behavior of the beforeinput DOM events is no longer prevented in plain text typing scenarios. Now, the engine waits for DOM mutations and applies changes to the model afterward. This should not affect most integrations however, it may affect custom modifications to text insertion into the editor.

Features

Bug fixes

  • comments: Fixed a crash happening for some asynchronous collaboration integrations, when the TrackChangesData plugin was used while there was a resolved comment thread in the document's initial data.
  • email: Fixed incorrect documentation links in the email configuration helper.
  • fullscreen: Minor styling improvements. Closes #18470. (commit)
  • fullscreen: Changed the method use to recognize the editor type in fullscreen. Closes #18395. (commit)
  • fullscreen: Fixed restoring scroll position after leaving fullscreen mode for containers with scroll-behavior: smooth. Closes #18378. (commit)
  • html-support: Removing formatting from empty HTML no longer crashes the editor. Closes #18089. (commit)
  • html-support: Pasting an empty HTML element no longer crashes the editor. Closes #18100. (commit)
  • image: Consume the .image_resize class and the [aspect-ratio] style during the upcast of the images. Closes #18287. (commit)
  • link: Fixed a bug where the editor would crash or do nothing when pressing the enter key in newline-suppressed scenarios (such as limit elements). Closes #15862. (commit)

    Thanks @jonscheiding!

  • minimap: The plugin no longer throws errors when entering the fullscreen mode. Closes #18472. (commit)
  • paste-from-office: Mixed local and online images from Microsoft Word paste no longer cause some images to disappear. Closes #18180. (commit)
  • source-editing-enhanced: When the Enhanced Source Editing dialog is open, all editor commands are now disabled to prevent accidental content edits and unintended UI interactions.
  • table: Table selector regarding margins should not override the style created during integrations. Closes #18428. (commit)
  • track-changes: Fixed insertion suggestion not restored on undo after it was rejected. This affected specific suggestions which included pressing the enter key. Closes #18449. (commit)
  • track-changes: Fixed a crash happening for some asynchronous collaboration integrations, when TrackChangesData plugin was used while there was a resolved comment thread in the document's initial data.
  • track-changes: An empty element was incorrectly left when an insertion suggestion that ended on "enter key press" was discarded. Also fixed the same error in a case where a similar deletion suggestion was accepted. Related to https://github.com/ckeditor/ckeditor5/issues/18448.
  • track-changes: Added missing [data-suggestion] and [data-author-id] attributes to all suggestion types in editing and data pipelines.
  • typing: Typing in track changes mode no longer reverses typed letters in Safari. (commit)
  • typing: The Mac VoiceOver now reads typed characters when typing. Closes #15436. (commit)
  • typing: Mac text replacement shortcuts will now correctly replace text in Safari. Closes #13428. (commit)
  • typing: The list items and headings at the beginning of the editable area can be changed to a plain paragraph on backspace keypress. Closes #18356. (commit)
  • ui: Ensure the table properties form is fully visible within the viewport. Closes #16133. (commit)
  • ui: Optimized performance of dropdowns when opening with many items. Closes #18094. (commit)
  • The sticky toolbar and inline editor toolbar should maintain their visual position relative to the editing area, no matter the visual viewport scale or scroll in Safari on desktop and mobile devices. The contextual balloon position should be aware of the part of the top viewport offset visible in the visual viewport on Safari on desktop and mobile. Closes #7718. (commit)

Other changes

  • core: Non-production license notifications should only be displayed once per page load. Closes #18179. (commit)
  • engine: Introduced the doNotFixSelection option for model.deleteContent() which can be used to force making deletion exactly on the provided selection. Closes #18448. (commit)
  • track-changes: Fixed an incorrect French translation in the Track changes feature.
  • typing: Improved typing performance in large documents. (commit)

Released packages

Check out the Versioning policy guide for more information.

<summary>Released packages (summary)</summary> Releases containing new features: @ckeditor/ckeditor5-clipboard: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-code-block: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-utils: v45.0.0 => v45.1.0 Other releases: @ckeditor/ckeditor5-adapter-ckfinder: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-ai: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-alignment: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-autoformat: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-autosave: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-basic-styles: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-block-quote: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-bookmark: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-case-change: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-ckbox: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-ckfinder: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-cloud-services: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-collaboration-core: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-comments: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-core: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-document-outline: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-easy-image: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-editor-balloon: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-editor-classic: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-editor-decoupled: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-editor-inline: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-editor-multi-root: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-email: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-emoji: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-engine: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-enter: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-essentials: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-export-inline-styles: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-export-pdf: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-export-word: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-find-and-replace: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-font: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-format-painter: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-fullscreen: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-heading: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-highlight: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-horizontal-line: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-html-embed: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-html-support: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-icons: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-image: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-import-word: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-indent: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-language: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-link: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-list: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-list-multi-level: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-markdown-gfm: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-media-embed: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-mention: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-merge-fields: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-minimap: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-operations-compressor: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-page-break: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-pagination: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-paragraph: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-paste-from-office: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-paste-from-office-enhanced: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-real-time-collaboration: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-remove-format: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-restricted-editing: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-revision-history: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-select-all: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-show-blocks: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-slash-command: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-source-editing: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-source-editing-enhanced: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-special-characters: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-style: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-table: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-template: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-theme-lark: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-track-changes: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-typing: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-ui: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-undo: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-upload: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-uploadcare: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-watchdog: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-widget: v45.0.0 => v45.1.0 @ckeditor/ckeditor5-word-count: v45.0.0 => v45.1.0 ckeditor5-collaboration: v45.0.0 => v45.1.0 ckeditor5-premium-features: v45.0.0 => v45.1.0

45.0.0 (April 7, 2025)

The CKEditor 5 v45.0.0 release brings powerful new features and improvements, making content creation smoother and more versatile. From enhanced email editing to a refined linking experience and a brand-new full-screen mode, this update is packed with valuable upgrades.

Release highlights

Email editing enhancements

We are making it easier to create and edit emails directly in CKEditor 5 with several enhancements. This release introduces the following new features:

  • Export with Inline Styles (⭐) provides the ability to export email content with automatically inlined styles, ensuring compatibility and proper rendering across different email clients.
  • Email Configuration Helper (⭐) is a new configuration helper plugin that provides guidance for integrators to correctly set up an email-friendly editor while avoiding common pitfalls.
  • Layout tables: are a new type of tables that has been introduced to simplify the creation of structured email designs, offering better control over layout, alignment and spacing.

Apart from these new features, this update also brings various fixes and improvements related to table behavior, enhanced HTML support, and better handling of complex email structures. These refinements help ensure a more seamless email editing experience, reducing inconsistencies and improving compatibility with external email clients.

The fullscreen feature

A long-requested feature has finally arrived with the introduction of full-screen editing for the classic and decoupled editor types. This new mode provides a focused writing experience by making the editor the centerpiece of the screen. The expanded screen space allows for better visibility of content in sidebars such as comments, suggestions, and document outlines, enhancing your overall workflow.

Improved linking experience

Linking in CKEditor 5 has been significantly upgraded with a redesigned user interface, making adding and editing links more intuitive. We added the possibility to add and edit the display text of a link. Users can now easily link to bookmarks within the document and select links from predefined lists (defined by the developer). These improvements make inserting and managing links faster and more flexible than ever before.

During this initiative, we also aligned visual and technical components of the editor. Each balloon got a header with the tile, we also unified the toolbar behavior and keystrokes of Link and Bookmarks with other widget 's toolbars like image and tables.

[!NOTE] The UI got updated in several places: main view, link properties (decorators), and also its technical implementation changed. Make sure to give special attention to the update if you did any customizations to the link interface.

New installation methods improvements: icons replacement

We are continuing to strengthen the new installation methods while phasing out older solutions. We added one of the key components you asked for: replacing our icons with your custom ones. It is now possible to replace the icons via the package 's override mechanism.

[!NOTE] To achieve a proper solution for icons replacement for the npm builds, we needed to introduce a breaking change. If you used our icons for any purposes, make sure to update their paths.

⚠️ Deprecations in old installation methods: stage 1 completed

We are progressing with deprecation according to our sunset plan. From this release, predefined builds ' packages, such as @ckeditor/ckeditor-build-classic, are now officially deprecated.

We also dropped support for Webpack 4 in both the old and new installation methods. All packages and CDN from this version are now distributed with ES2022 as the target ECMAScript version, providing better compatibility with modern JavaScript features and improved performance.

By the end of 2025, custom builds that rely on webpack and DLL builds will also be deprecated. Refer to our documentation and migration guides to ensure a smooth transition.

We are committed to making CKEditor 5 even better. Stay tuned for more improvements in upcoming releases! If you have any feedback, let us know — we are always listening.

Please refer to the update guide to learn more about these changes.

Happy editing!

MAJOR BREAKING CHANGES ℹ️

  • bookmark: The BookmarkUI#actionsView is no longer available. The bookmark feature is now using the WidgetToolbarRepository instead.
  • build-*: CKEditor 5 predefined builds are no longer available.
  • link: The LinkUI#actionsView is no longer available. The bookmark feature now uses the LinkUI#toolbarView (an instance of the ToolbarView class) instead of the custom LinkActionsView.

MINOR BREAKING CHANGES ℹ️

  • link: The createBookmarkCallbacks() helper is now replaced by the isScrollableToTarget() and scrollToTarget() helpers.
  • table: The FormRowView class was moved to the @ckeditor/ckeditor5-ui package.
  • table: The form.css component was moved to the @ckeditor/ckeditor5-theme-lark package.
  • All CKEditor 5 icons are now available in the @ckeditor/ckeditor5-icons package.

DISTRIBUTION CHANGES

  • All packages and CDN source code now target ES2022 as the ECMAScript version.

Features

  • email: Introduced a new package to validate the editor configuration for email compatibility. It helps prevent misconfigurations by enforcing best practices and future-proof rules. Added utilities for post-processing CSS, improving support across various email clients by adjusting styles for better rendering consistency.
  • export-inline-styles: Added a new package for exporting content with inline styles. Ensures CSS classes ([class]) and IDs ([id]) are inlined within elements, improving compatibility with email clients that strip external styles. It helps maintain consistent formatting across different email clients, reducing rendering issues.
  • fullscreen: Introduced the fullscreen mode feature. Closes #18026. (commit)
  • html-support: Introduced the ability to render the<style> elements from the <head> section of editor data content using the FullPage plugin. See #13482. (commit)
  • revision-history: Added a new property RevisionHistory#isRevisionViewerOpen that indicates whether the revision history is opened or not.
  • source-editing-enhanced: The one-dark theme is now built-in and available via config.sourceEditingEnhanced.theme by passing the 'dark' value. This change enables the use of the dark theme with the CDN installation method, which does not support external CodeMirror dependencies. Additionally, if you previously used the oneDark extension directly, you can now switch to theme: 'dark' for built-in support.
  • table: Introduced the layout tables feature to enable constructing grids with tables, for example for email editing. These tables are designed for layout purposes, and include the role="presentation" parameter for accessibility. Users can insert layout tables via the editor toolbar and switch between content and layout tables. The editing view now closely matches the rendered output. Closes #18132. (commit)
  • table: Added the ability to toggle between content tables and layout tables. Users can switch table types using a split button in the table properties UI. While captions and <th> elements may be lost, table structure remains intact. Closes #18131. (commit)
  • table: Dragging and dropping a table into another table no longer merges them. Instead, the dropped table is placed as a whole inside the target cell. Pasting tables remains unchanged. Closes #18126. (commit)
  • template: Inserting a template containing a table into another table no longer merges them. Instead, the template is placed as a whole inside the target cell. See #18126.
  • theme-lark: Introduced the form.css component . (commit)
  • ui: Added the MenuBarView#disable() and MenuBarView#enable() methods. They disable/enable all top-level menus in menu bar. Closes #17940. (commit)
  • ui: Added the ToolbarView#switchBehavior() method to switch toolbar behavior after the editor has been initialized. Closes #18159. (commit)
  • ui: Introduced the FormRowView class. (commit)
  • Moved all icons to the @ckeditor/ckeditor5-icons package. Related to #16546. (commit)
  • Added the @ckeditor/ckeditor5-icons package to the core DLL package. (commit)

Bug fixes

  • ckbox: Resolved an issue where images from private categories were not appearing in the selector. Closes #18044. (commit)
  • emoji: Fixed the emoji panel not being visible while used in comments archive. Closes #17964. (commit)
  • engine: The selection should not move to another table row while switching heading rows. Closes #17962. (commit)
  • heading: Added the missing converterPriority type definition to HeadingOption interface. Closes #18182. (commit)
  • html-support: The floated tables are now loaded and showed as expected in the editor's view. Closes #18203. (commit)
  • link: The Autolink feature will now correctly autolink http://localhost and http://localhost:port. Closes #18185. (commit)
  • mention: Fixed the mention panel not being visible while used in comments archive. Closes #17964. (commit)
  • revision-history: Revisions will now correctly retain data for HTML embed widget, as well as <script> and <style> tags enabled by the General HTML Support feature. Before, when revision was saved, these elements were saved empty, and this lead to data loss when such revision was restored. Note, that this will not fix revisions that are already affected by this error.
  • revision-history: Fixed a crash when viewing a revision which had an HTML comment node in its data (reproducible with General HTML Support plugin).
  • revision-history: Fixed handling UIElements and RawElements by revision history (may concern third-party custom plugins).
  • revision-history: Fixed a crash when viewing a revision which had a collapsed marker in its data (may concern third-party custom plugins).
  • table: Removed [role="textbox"] from the <td>/` editables. Windows Narrator no longer reads table dimensions as 0 by 0. Closes #16923. (commit)
  • track-changes: The editor no longer crashes during initialization when the ShiftEnter plugin is removed.
  • ui: Do not open disabled menu bar menu items on arrow down press. Closes #17915. (commit)
  • ui: The ButtonView#icon property can now be set/reset after the button's first render. (commit)
  • table: Widgets UI elements should be visible when they are inside tables. Closes #18268.
  • table: Nested tables outline should not be cut of at the bottom during hovering. Closes #18262.
  • link: Link balloon no longer disappears when scrolling the page slightly on iOS. Closes #18022.

Other changes

  • bookmark: The Bookmark feature now uses the WidgetToolbarRepository instead of a custom ActionsView to display the bookmark toolbar in the contextual balloon. The new toolbar uses components registered in the ComponentFactory. (commit)
  • bookmark: Form styles and structure are now unified with use of ck-form and ck-form__row. (commit)
  • collaboration-core: Translations are now supported in the date formatter used by comments and suggestions, allowing for localizing dates.
  • engine: Added the read-only DomConverter#domDocument property. Closes #18146. (commit)
  • image: Image and custom resize form styles and structure now unified with use of ck-form and ck-form__row. (commit)
  • link: The link feature now uses the ToolbarView instead of a custom LinkActionsView to display the link toolbar in the contextual balloon. The new toolbar uses components registered in the ComponentFactory. (commit)
  • link: Form styles and structure are now unified with use of ck-form and ck-form__row. (commit)
  • real-time-collaboration: Added a more modern look to the presence list collapsed view (used when many users are connected to the document).
  • revision-history: The document outline will now be hidden when the revision history is opened.
  • source-editing: Document outline and annotations will now be hidden when editor is in source editing mode. Closes #17978. (commit)
  • table: Extracted the form.css to @ckeditor/ckeditor5-theme-lark package. (commit)
  • table: Extracted the FormRowView to @ckeditor/ckeditor5-ui package. (commit)
  • ui: The IconView now throws a meaningful error if the provided icon content is not a valid SVG. (commit)
  • widget: The WidgetToolbarRepository#register() now accepts a customized list of desired balloon positions. (commit)
  • Added the Belarusian language translations for CKEditor 5. Huge thanks to @karavanjo. (commit)
  • Upgraded the minimal version of Node.js to 20.0.0 due to the end of LTS. (commit)
  • Updated TypeScript target to es2022. Closes #17886. (commit)
  • Replaced lodash-es with es-toolkit. See #16395. (commit)
  • The @ckeditor/ckeditor5-build-* packages are no longer maintained. (commit)

Released packages

Check out the Versioning policy guide for more information.

<summary>Released packages (summary)</summary> New packages: @ckeditor/ckeditor5-email: v45.0.0 @ckeditor/ckeditor5-export-inline-styles: v45.0.0 @ckeditor/ckeditor5-fullscreen: v45.0.0 @ckeditor/ckeditor5-icons: v45.0.0 Major releases (contain major breaking changes): @ckeditor/ckeditor5-bookmark: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-link: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-table: v44.3.0 => v45.0.0 Releases containing new features: @ckeditor/ckeditor5-adapter-ckfinder: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-alignment: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-autoformat: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-autosave: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-basic-styles: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-block-quote: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-ckbox: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-ckfinder: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-clipboard: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-cloud-services: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-code-block: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-core: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-easy-image: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-editor-balloon: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-editor-classic: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-editor-decoupled: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-editor-inline: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-editor-multi-root: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-emoji: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-engine: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-enter: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-essentials: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-find-and-replace: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-font: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-heading: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-highlight: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-horizontal-line: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-html-embed: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-html-support: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-image: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-indent: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-language: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-list: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-markdown-gfm: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-media-embed: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-mention: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-minimap: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-page-break: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-paragraph: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-paste-from-office: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-remove-format: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-restricted-editing: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-select-all: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-show-blocks: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-source-editing: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-special-characters: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-style: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-theme-lark: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-typing: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-ui: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-undo: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-upload: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-utils: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-watchdog: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-widget: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-word-count: v44.3.0 => v45.0.0 Other releases: @ckeditor/ckeditor5-ai: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-case-change: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-collaboration-core: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-comments: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-document-outline: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-export-pdf: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-export-word: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-format-painter: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-import-word: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-list-multi-level: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-merge-fields: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-operations-compressor: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-pagination: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-paste-from-office-enhanced: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-real-time-collaboration: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-revision-history: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-slash-command: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-source-editing-enhanced: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-template: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-track-changes: v44.3.0 => v45.0.0 @ckeditor/ckeditor5-uploadcare: v44.3.0 => v45.0.0 ckeditor5-collaboration: v44.3.0 => v45.0.0 ckeditor5-premium-features: v44.3.0 => v45.0.0

To see all releases, visit the release page.