CKEditor 5 v19.0.0 with table enhancements, improved performance and select all feature

We are happy to announce the release of CKEditor 5 v19.0.0 that introduces further enhancements for the table feature, improved font family and size support as well as the new select all feature. In addition to that, we focused on improving the editor performance. Last but not least, we moved from multirepo to monorepo infrastructure. Read on for more details about these and other improvements!
# New rich text editor features
In this iteration, we continued our work on the table feature, including some further improvements for table selection. In addition to this, we are happy to also deliver the new select all feature.
As always, we are looking forward to your feedback and are thankful for any comments, recommendations, and bug reports that you are sharing with us.
Go through the list below to learn more about the new rich text editor features and make sure to check out the demos and documentation that accompany them.
# Table improvements
Support for tabular data is a crucial feature for any advanced rich text editor. We have recently put a lot of effort into refining this feature and this release contains many improvements for working with tables in CKEditor 5 WYSIWYG editor.
First of all, the improved keyboard handling with support for up and down arrows as well as the Tab and Shift+Tab keystroke will allow you to navigate the table cells more easily.
Since in this iteration we focused on extending selection support in CKEditor 5, we have decided to introduce the possibility to select an entire table row or column. You can now choose the “Select row” or “Select column” option directly in the table row and column dropdowns.
Thanks to these and other changes around aspects such as merging and splitting cells, handling of cells spanning to multiple rows or columns and UI enhancements, creating and editing complex tables in CKEditor 5 should be much better than before.

You can test it and learn how to install this feature in the Table feature guide. All table improvements discussed, including the custom table selection, are enabled by default in all builds containing the table feature.
# Select all feature
The select all feature allows you to select the entire content of the WYSIWYG editor using the dedicated toolbar button or the Ctrl/⌘+A keyboard shortcut.
Note that when editing an image caption, the selection will only expand to the boundaries of the caption.

You can test it and learn how to install this feature in the Select all feature guide. It is enabled by default in all builds.
# Improvements
Besides the new rich text editor features, we have also prepared many improvements. Here are the most important ones.
# Improved font family and size support
By default, all font-family
and font-size
values that are not explicitly specified in the feature configuration are stripped. While this setup is helpful when you want to keep your content clean and consistent even if it originates from a third-party application or website, in some cases keeping the original font family or size could be intended.
Starting from this release you can enable support for all font names or sizes by using the config.fontFamily.supportAllValues
and config.fontSize.supportAllValues
values, respectively.
Note that thanks to these settings, font retention when pasting from Microsoft Word or Google Docs can be improved. If you want to preserve the original font family and size that comes from third-party applications, you can enable these configurations.

You can test it and learn how to install this feature in the Font feature guide. You can also see it working in the Paste from Word or Paste from Google Docs demos.
# Improved localization possibilities
The user interface of CKEditor 5 and its features, just like all our products, can be localized. In general, we base the localization process around Transifex, a great service where translators can contribute their localizations and help make CKEditor 5 accessible to users all around the world in their native language. However, this also meant that up till now, we provided little support for the localization of third-party plugins. It was also not easy to fix incorrect or missing translations in an existing editor build.
Starting from this release, we have introduced the following improvements:
- We have opened the translation API for third-party plugins.
- It is now possible to provide missing translations and correct existing ones locally without worrying about future releases and rebuilding the editor.
- Last but not least, we introduced support for translating plural forms.
# Performance improvements
In the last two releases we shipped multiple improvements to the performance of the editor initialization. In this iteration we worked mostly on improving the data processing time. All the changes together reduced the time it takes to load content into the WYSIWYG editor and render it to the user by up to 50% in standard scenarios and 90% in some edge cases. The improvements also affect the undo and redo feature.
You can find the complete list of changes on GitHub.
# Documentation updates
Besides the documentation that accompanies the newly introduced features, we have also worked on some guides for developers integrating CKEditor 5 WYSIWYG editor with their projects:
- The Code style guide explains the configuration that we use when writing CKEditor 5 code.
- Deep dive into focus tracking is an advanced guide that explains how the CKEditor 5 engine manages focus and how the user interface tracks it. It also includes a practical analysis of a common focus navigation scenario in the editor.
# Other improvements
- Together with migrating to a monorepo we worked on improving the changelog format. From now on there will be one changelog combining all packages and a few more improvements.
- We fixed a crash when typing after a multi-byte emoji character.
- A side-effect of the previously mentioned select all feature is that now pressing Ctrl+A in the editor that starts or ends with a widget will work correctly.
- The selection will now end up after a pasted link. Previously, text typed after pasting a link would also be linked, which is not desired.
- Block toolbar will also group its items when there is not enough space in the viewport.
- It is now possible to set default values of manual link decorators.
# Migration to monorepo infrastructure
CKEditor 5 was initially bootstrapped in a multi-repo infrastructure. Every package was developed in its own repository, ensuring stronger separation and hence less monolithic tendencies. In addition to this, we wanted to use a similar setup to developers of third-party plugins, that, for obvious reasons, are developed in separate repositories. You can read more about the rationale in Why We Chose a Multirepo Architecture for CKEditor 5 and To multi-repo or not.
Over the years we developed a setup and tools like Mr. Git that allowed us to manage over 60 repositories. However, they were not able to mitigate some of the cost. Creating a new package, making pull requests to a couple of packages at once (which happens from time to time) was still a struggle. While solvable, we decided to focus on simplicity as our goals changed over time.
Right after the current release, we merged all repositories into one: https://github.com/ckeditor/ckeditor5 (the packages landed in the packages/
directory). It is a typical monorepo architecture now. We are currently updating the documentation and some tooling. We should be done within a week or two.
Goodbye multi-repo 👋
# Breaking changes
This release introduces some breaking changes. Make sure to check the changelog when upgrading to CKEditor 5 v19.0.0.
# What’s next?
We will continue working on new rich text editing features and improving the existing ones along the way. The next features on our radar are:
- Table selection - stage III. The goal is to further improve clipboard integration, which boils down to handling pasting in a better way.
- Introducing a way to reach inaccessible places in the content, such as before or after a widget (image, table, etc.).
- Follow-ups for migrating CKEditor 5 to monorepo.
Follow the iteration 32 roadmap for the news and to learn more.
# Download
CKEditor 5 builds can be downloaded from the CDN, npm or as zip packages. Read more in the Installation guide.
# License
CKEditor 5 is available under Open Source and Commercial licenses. Full details can be found on our license page.
# Reporting issues and contributing
You can report all issues for any of the CKEditor 5 packages in the CKEditor 5 repository. Read more in the Reporting issues guide.
# Support
The CKEditor 5 documentation is growing and always up to date. Community support is available through Stack Overflow. Read more in the Getting support guide.
Would you like to take advantage of all the new CKEditor 5 features and start using it on a daily basis? If your workflow is based around GitHub, you now can! Install the GitHub Writer browser extension for Chrome or Firefox — it will replace the default plain-text Markdown editor of GitHub with a WYSIWYG editor with Markdown support powered by CKEditor 5!