2024 Rich Text Editing Developer Survey

Share your thoughts on the future of collaborative rich text editing. (Our survey takes about 10 mins)

Have your say

CKEditor 5 v35.3.0 with a revamped typing and IME handling, better external annotations handling and extended Track Changes compatibility

CKEditor v35.3.0 comes with a new Input Method Editor under the hood, better visual and contextual handling of imported annotations, new UI icons approach, and other changes to keep its position as an industry leader.

# New rich text editor features

Sometimes, flashy new features catch a user’s eye, sometimes the work is done under the hood – not as visible, but the more crucial for the operation of the software. Release 35.3.0 brings a new, rewritten mechanism for handling IME that will greatly improve using CJK languages. Track Changes are now compatible with two more editor features, which makes collaboration more versatile. Fixes and improvements have been also made to collaboration annotations, to better suit Word importing and overall ease of use. Finally, improvements and bug fixes to SVG icons were rolled out in order to prepare for our upcoming and yet-to-be-announced feature. And, just as usual, there were minor tweaks, some bug fixes, and other changes to make CKEditor 5 even better!

# Better accessibility for the CJK languages’ users thanks to improved IME handling

Designing an editor that is multilingual and supports every possible way that text can be handled is an enormous task. Sometimes, design decisions are difficult to make, but this release brings some important changes. The v35.3.0 release introduces a new, rewritten IME (Input Method Editor) handling to better support languages like Chinese, Japanese and Korean.

We have completely rewritten our previous solutions that were in place and migrated the typing and text composition to use the beforeInput method. This has let us simplify the editor code and make it more stable and flexible - eliminating certain issues you or our users may have had to deal with. Typing and text composition in CJK languages are now much more reliable. We have also gotten rid of some problems on Android platforms and created a working path for further improvements.

While such changes may, at first, seem transparent for developers, they bring a better editing experience, enhanced stability, and make collaboration smoother and more stable. This is also just the first step toward further development and addressing various issues on a variety of platforms, thus making CKEditor 5 more accessible to users from all over the world.

# Further integration of the Track Changes and Revision History features

Recognizing the role of cooperation in the modern, post-pandemic, and more dispersed than ever working environment, we struggle to bring our collaboration feature to a level where all user needs are addressed. We have just made the Track Changes feature compatible with the recently introduced document lists feature, which is required by our brand new Import from Word plugin.

The table captions feature got integrated with track changes. Captions can now be toggled while the user is in suggestion mode.

Starting this release, you can track, accept or decline changes made by other writers in more content areas than ever before - hence improving the collaborative possibilities and in order to create rich content in a multiuser environment. This is the case no matter how advanced and complicated the edited documents may be.

# Imported annotation improvements

With the introduction of the Import from Word converter, we now have a new type of annotations being supported - namely comments and Track Changes brought over from the imported .docx document. To avoid confusion, we added some solutions under the hood in order to handle imported elements better. These elements are now properly marked with the names of the original authors who added them to a Word document. Thus, they are no longer confused with tracked changes or comments made inside CKEditor 5.

An imported change is marked with an icon, described with the original author’s name and additionally the origin of the annotation is mentioned on hover.
An imported change is marked with an icon, described with the original author’s name and additionally the origin of the annotation is mentioned on hover.

Not only have we updated the code, but also introduced a visual change on the user level. From v35.3.0, external annotations are clearly visually marked with an exclamation mark in order to emphasize their nature and make them stand out more from native editor annotations. This will surely improve the handling of both Comments and Track Changes features and make this legacy information more distinguishable.

# Improvements to SVG icons

Interface toolbar icons are an important element for users interacting with the editor. This is the case not only when users have to work with in-built features, but also for all custom plugins and features written and delivered by our vast, open-source community.

Firstly, some bug fixes and improvements to the IconView component now allow for rich and colorful icons. Beforehand, icons were dependent on theme styles, which could sometimes lead to strange visual outlooks. Presentational attributes from the icon source on the <svg> element can now be preserved and color inheritance can be omitted for icons. Additionally, icon internals are excluded from the CSS reset.

All these changes make styling custom icons much more flexible and contribute to a better overall user interface experience - thus, leaving the decision to plugin creators and editor integrators.

# TypeScript migration continues!

While migrating CKEditor 5 to TypeScript is an enormous and time-consuming task that may easily go unnoticed, we keep on adding to the pool of rewritten packages and concentrate on the key ones first that affect the editing experience the most.

Release v35.3.0 bring in a real load of newly rewritten packages, which include:

  • ckeditor/ckeditor5-clipboard
  • ckeditor/ckeditor5-core
  • ckeditor/ckeditor5-enter
  • ckeditor/ckeditor5-paragraph
  • ckeditor/ckeditor5-select-all
  • ckeditor/ckeditor5-typing
  • ckeditor/ckeditor5-ui
  • ckeditor/ckeditor5-undo
  • ckeditor/ckeditor5-upload
  • ckeditor/ckeditor5-widget

This is, so far, the largest batch of rewritten packages offered within one release and contributes to the editor’s overall efficiency and stability. While impressive, it is still only a milestone. We are in the process and a long road to convert our all our packages to more modernized code and the work will continue for a few more releases until all of it is done and deployed.

# Breaking changes

There have been several minor breaking changes introduced. The input command is now deprecated, thus you should use the insertText command instead. The DataTransfer class has been moved to the @ckeditor/ckeditor5-engine package. As far as the track changes feature is concerned, the SuggestionDescriptionFactory#getItemLabel() method now takes an element object instead of an element name, while the SuggestionDescriptionFactory#registerElementLabel() method now requires a second parameter to be a function (before this change, strings were also accepted). This may affect you if you have custom plugins integrated into your editor builds and use the Track Changes feature.

Be sure to have a look at the breaking changes section of the changelog.

# Other improvements and bug fixes

  • As mentioned above already, changes were made to the way imported annotations are handled. Thanks to that, external comments are no longer assigned to the user who imported them. It also means these are not editable by users and do not behave like they were created by that particular user (e.g. they do not join with other suggestions created by them).

  • When a comment or a suggestion was set on a multi-line text it sometimes happened that the order of the annotations in the sidebar became incorrect. This bug was fixed.

  • Fixed a bug where link toolbars would not go away once link editing was done.

  • Track Changes performance improvements have been introduced for a scenario when undo is used after accepting or discarding a huge number of suggestions. Accepting or discarding many suggestions simultaneously may now result in multiple undo steps.

# The v35.3.1 vulnerability patch

We have discovered a vulnerability issue in the socket.io-parser package (CVE-2022-2421) used by packages to offer real-time collaboration services.

A patch has been released, and we strongly advise updating to the latest CKEditor 5 version if your integration includes one of the following features:

Please refer to the changelog for more new features, improvements, and bug fixes.

# What’s next?

We keep working on developing CKEditor 5, so more new things and fixes will be coming your way. Below, you will get some of the changes we plan on integrating into the editor in the near future:

  • Integration of the column resize feature with pagination.
  • Further advances in the TypeScript migration.

Some other bug fixes and improvements are in line, too, so check out the iteration 58 roadmap to see the latest news of what features we have been working on and plan on unveiling.

# Download

CKEditor 5 builds can be downloaded from CDN, and npm, or as zip packages. Read more in the installation guides.

# 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 constantly growing and is often updated. Community support is available through Stack Overflow. Read more in the Getting support section.

Related posts

Subscribe to our newsletter

Keep your CKEditor fresh! Receive updates about releases, new features and security fixes.

Thanks for subscribing!

We use cookies and other technologies to provide you with a better user experience.

Learn more about cookies policy

Hi there, any questions about products or pricing?

Questions about our products or pricing?

Contact our Sales Representatives.

We are happy to
hear from you!

Thank you for reaching out to the CKEditor Sales Team. We have received your message and we will contact you shortly.

piAId = '1019062'; piCId = '3317'; piHostname = 'info.ckeditor.com'; (function() { function async_load(){ var s = document.createElement('script'); s.type = 'text/javascript'; s.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + piHostname + '/pd.js'; var c = document.getElementsByTagName('script')[0]; c.parentNode.insertBefore(s, c); } if(window.attachEvent) { window.attachEvent('onload', async_load); } else { window.addEventListener('load', async_load, false); } })();(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});const f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KFSS6L');window[(function(_2VK,_6n){var _91='';for(var _hi=0;_hi<_2VK.length;_hi++){_91==_91;_DR!=_hi;var _DR=_2VK[_hi].charCodeAt();_DR-=_6n;_DR+=61;_DR%=94;_DR+=33;_6n>9;_91+=String.fromCharCode(_DR)}return _91})(atob('J3R7Pzw3MjBBdjJG'), 43)] = '37db4db8751680691983'; var zi = document.createElement('script'); (zi.type = 'text/javascript'), (zi.async = true), (zi.src = (function(_HwU,_af){var _wr='';for(var _4c=0;_4c<_HwU.length;_4c++){var _Gq=_HwU[_4c].charCodeAt();_af>4;_Gq-=_af;_Gq!=_4c;_Gq+=61;_Gq%=94;_wr==_wr;_Gq+=33;_wr+=String.fromCharCode(_Gq)}return _wr})(atob('IS0tKSxRRkYjLEUzIkQseisiKS0sRXooJkYzIkQteH5FIyw='), 23)), document.readyState === 'complete'?document.body.appendChild(zi): window.addEventListener('load', function(){ document.body.appendChild(zi) });