You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/updating/update-to-46.md
+68-4Lines changed: 68 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,9 +20,61 @@ Released on xxx, 2025. ([See full release notes](https://github.com/ckeditor/cke
20
20
21
21
Below are the most important changes that require your attention when upgrading to CKEditor 5 v46.0.0.
22
22
23
-
### New internal export names
23
+
##Release highlights
24
24
25
-
As part of the transition to the New Installation Methods (NIM), we have standardized how public API elements are exposed in CKEditor 5 and related packages. It now uses a unified export policy via index.ts, with clearer, standardized public API names introducing some breaking changes. Find all the changes and the new exports introduced with NIM in this {@link updating/nim-migration/migrating-exports dedicated migration guide}.
25
+
CKEditor 5 v46.0.0 brings several major improvements and changes that enhance both the developer and end-user experience. This release includes significant API refinements, new features, and improvements to existing functionality.
26
+
27
+
### Line Height (⭐)
28
+
29
+
The new line height<!-- link --> 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.
30
+
31
+
### Remove Format improvements
32
+
33
+
Unneeded styles on block elements, such as tables and images, and General HTML Support nodes and attributes are finally eliminated when you hit the {@link features/remove-format remove format} button. The feature now cleans what it should, leaving the document structure untouched.
34
+
35
+
### List markers styling
36
+
37
+
Working with {@link features/lists#list-styles styled lists} becomes more intuitive as list markers (bullets and numbers) now automatically inherit text styling properties. When you apply formatting to list text, the markers will match:
38
+
39
+
* Font size adjustments,
40
+
* Text color changes,
41
+
* Font weight modifications (bold, italic).
42
+
43
+
This improvement makes it easier to create visually consistent and professional-looking lists without additional configuration. This improvement also supports {@link features/multi-level-lists multi-level lists}.
44
+
45
+
**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<!-- link -->.
46
+
47
+
### Markdown processor dependency refresh
48
+
49
+
The {@loink features/markdown 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.
50
+
51
+
### Manual token refreshing
52
+
53
+
We have added a configuration property: `config.cloudServices.autoRefresh` to disable the automatic token refresh mechanism. When it is set to `false`, the token must be refreshed manually.
54
+
55
+
This property opens up the ability to implement custom token handling if a certain use case requires this.
56
+
57
+
### Unified exports & renames
58
+
59
+
This release is also about tidying up the rough edges that showed up after the big New Installation Method release (v42.0.0+). In cases where many helpers or methods from the framework’s APIs were used, 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.
60
+
61
+
We spent the last several months discussing how to prepare the CKEditor 5 API layer for the years to come. This release is the result of the rules we are introducing from now on:
62
+
63
+
* Every public API must be exported via the package’s `index.ts`.
64
+
* Every internal API must be marked as such explicitly with `@internal`.
65
+
* Exported names should follow a descriptive and unique naming pattern aligned with their purpose and context.
66
+
* There should be no `export default` or `export * from` statements in source files.
67
+
68
+
This resulted in:
69
+
70
+
* Adding re-exports if they were missing.
71
+
* Changing the names of items to be more descriptive and avoid collisions.
72
+
* If there were internal methods that were already exported but not tagged, we decided to keep them exported but with the addition of the `_` prefix. This way we keep them available, but we would love to know how you are using them.
73
+
* Also, we decided to use this occasion to clean up the code from `@deprecated` code that was stale for several years.
74
+
75
+
At the same time, we have developed an internal tooling to make sure guardrails are set for the future.
76
+
77
+
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**.
26
78
27
79
<info-boxinfo>
28
80
Manually updating all these numerous imports could be time-consuming and error-prone. We recommend using the [tables with the changed import/export names](https://raw.githubusercontent.com/ckeditor/ckeditor5/refs/heads/master/docs/updating/nim-migration/migrating-exports.md) as context for tools such as Copilot, ChatGPT, or other LLM-based services that can automatically update all imports in your project.
@@ -47,7 +99,6 @@ To improve the out-of-the-box experience and accessibility, we are introducing o
47
99
font-size: var(--ck-content-font-size);
48
100
color: var(--ck-content-font-color);
49
101
line-height: var(--ck-content-line-height);
50
-
word-break: var(--ck-content-word-break);
51
102
}
52
103
```
53
104
@@ -95,7 +146,7 @@ Example:
95
146
}
96
147
```
97
148
98
-
### Table-related CSS variables renamed for better clarity
149
+
####Table-related CSS variables renamed for better clarity
99
150
100
151
Some table-related CSS variables had improper naming with `-selector-` in their names, which was confusing and inconsistent. These variables have been renamed to use `-table-` for better clarity and consistency.
101
152
@@ -119,6 +170,19 @@ Example:
119
170
}
120
171
```
121
172
173
+
### Comment threads improvements
174
+
175
+
We have 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.
176
+
177
+
#### Minor breaking change
178
+
179
+
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.
180
+
181
+
### Comments and suggestions annotations
182
+
183
+
We have introduced dedicated methods for an easier way to get specific annotations related to a comment or a suggestion and vice versa.
0 commit comments