CKEditor 5 v48.1.0 Release Highlights: CKEditor AI Chat Improvements and AI in Multi-root Setups

We are not slowing down with CKEditor AI updates and new features. CKEditor 5 v48.1.0 includes enhancements to AI Chat as well as an experimental update to use CKEditor AI in multi-root and multiple editor setups. In addition, the release packs numerous improvements and fixes.

AI Chat 

AI Chat now handles unformatted editor content more reliably. When asked to apply edits such as adding a heading or converting text to lists, AI Chat produces cleaner and more predictable results. This decreases the need for follow-up prompts to fix structure and formatting.

The AI Chat feed also has two rendering changes in this release:

  • Suggested content now appears in full once ready rather than streaming word-by-word, reducing visual noise while the user is reviewing proposed edits.

  • Plain assistant text responses continue to stream, but at a faster pace.

CKEditor AI for multi-root and multiple editor setups

We strive to make CKEditor capable of handling complex use cases – to the point where edge cases are no longer truly edge cases. One such case is the multi-root editor and multiple editor context support.

A multi-root editor is a single editor instance with multiple independent editable regions, for example, a title, a description, and a body. A multiple editor setup is different: it includes several separate editor instances organized into one shared environment using the Context class. Context was initially introduced so that collaboration features such as the presence list could be initialized once and shared across editors, rather than separately for each editor.

As of v48.1.0, CKEditor AI features can be tested across both the multiple editors sharing Context and multi-root setups:

  • AI Review and AI Translate run across all roots in a multi-root editor and across all editors sharing a Context. Suggestions and translations are applied to the correct root or editor and do not bleed across boundaries. Both are compatible with real-time collaboration.

  • AI Chat reads content from all roots and editing areas, uses the label and description of each root to understand its role, and applies suggestions to the correct destination based on the user’s prompt. Conversation history is kept separate for each editor in a Context.

This is an early, experimental release: We do not recommend using it in production just yet, and you can expect fixes and further improvements in upcoming releases. That said, we are eager to hear early feedback from real integrations, so if you work with multi-root or multiple editor setups, please do share yours.

Other updates

This release also includes several improvements and fixes. Minor breaking changes are documented in the full changelog.

  • Marker boundary elements now render in model order when two markers meet at the same position, which affects comments, suggestions, mentions, find and replace, and restricted editing.

  • Inline formatting is now retained after pressing Shift+Enter twice or after deleting all text inside a block and continuing to type.

  • Source editing now supports native undo and redo keystrokes in the source editing textarea.

  • The editor now handles alignment attributes on <td> elements wrapping nested tables or images, improving compatibility with Outlook and other sources using td[align] for block layout.

  • Tables now preserve alignment and inline styles after email export transformation, improving rendering in Outlook, Gmail, and other major email clients.

Please note that CKEditor 5 v47 remains the LTS release. If you are an LTS customer, stay on this version. The v47.x maintenance phase, which will be covering security fixes and compatibility updates for the next 2.5 years, comes into effect soon in April 2026 and will be available exclusively for CKEditor Long-term Support Edition customers.

CKEditor 5 v48.1.1 release

Additionally, a follow-up v48.1.1 release is out. The release addresses a vulnerability identified in the protobuf.js package, used within the @ckeditor/ckeditor5-operations-compressor package for real-time collaboration, as well as minor bug fixes.

Learn more about previous CKEditor 5 versions

Related posts

Subscribe to our newsletter

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

contact_confirmation
policy
eventId

Input email to subscribe to newsletter

Subscription failed

Thanks for subscribing!

HiddenGatedContent.

(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) });