9th developer preview of CKEditor 5 available

CKEditor 5 v0.9.0 blogpost image

We would like to let you know that the 9th developer preview of CKEditor 5 has just been tagged as version v0.9.0.

Features introduced in the 9th preview nearly cleared the roadmap to 1.0.0 alpha. To reach this milestone we only need to focus on MS Edge support, file upload and stability. The last bit will certainly take us most of the time, although, our recent tests show that the editor became stable even during longer use.

Also, I'd like to thank the entire team for the amazing performance because in just one month we closed 118 tickets. This is our record so far - thanks, guys!

Check the updated sample and read further to learn more about the progress.

Nested lists

CKEditor 5 nested lists preview

We introduced flat lists in the 3rd developer preview but we didn't manage to finish support for nested lists back then. The unfinished feature was causing many stability issues so we're happy to announce that nested lists are now fully supported and really stable.

CKEditor 5 nested lists combo breaker PR

Besides that, the pull request which introduced the nested lists support closed 11 tickets at once, which is our new record! :)

Block quotes

Another big feature added in this iteration is the block quotes. It's not particularly big itself, but it was the first feature to use move, wrap and unwrap deltas extensively. These are the most tricky types of operations that the engine needs to support and they caused us a bit of a headache to stabilize.

The other important aspect of this feature was its integration with Enter and Backspace keys. Fortunately, no surprises here – the architecture proved to work:

CKEditor 5 block quotes preview

The experience we got when working on the block quote feature and the very related lists feature convinced us that we'll need to change a bit the way how conversion works. Currently, the engine converts changes applied to the model immediately when they are applied and in the order in which they are applied. However, some atomic operations introduce a temporal, invalid state of the model because from a semantical perspective they need to be accompanied by other operations to create a kind of database transactions. Therefore, we'll need to work on a mechanism which will delay the conversion until a transaction has finished and which will convert the atomic operations in the right order.

Image caption placeholder

As we mentioned in the last release notes we introduced image captions but in terms of UX they were missing the placeholder text. Not anymore! :)

CKEditor 5 image caption placeholder preview

Also, we made the placeholder behavior reusable and plan to allow setting placeholders also for entire editors.

Inline editor

This is the second editor implementation (implementations are also called creators) after the classic editor. The inline editor follows its CKEditor 4's ancestor.

CKEditor 5 inline editor preview

Fortunately, unlike in CKEditor 4 where we were limited by the architecture, we can (and will) add many more editor implementations. You can also create your own implementations by gluing together building blocks provided by the CKEditor 5 Framework. You could, for example, create an editor with React-based UI or an editor with 10 root editables.

Heading feature improvements

The heading feature got a couple of functional and UX improvements.

CKEditor 5 heading improvements preview

First editor build

CKEditor 5 builds are pre-configured, ready-to-use editor bundles. The first one we wanted to introduce is the classic build which uses the classic editor and the standard set of features (the same as you can see in the demo).

Using a build is the easiest way to integrate a specific editor with your website. It doesn't require any additional tools unless you want to significantly change the configuration of the build.

For more details see the usage instructions.


As in every release, we spent a good time fixing issues. It's the first release which we weren't able to crash within a couple of minutes which is a good sign. Also, from a project perspective, the most important thing is to not have regressions (recurring bugs), which are the most irritating kind of issues (for both – developers and users). In our case, the extensive test suite (nearly 6000 test cases) and a strict approach to testing (each bug fix, every change, must be accompanied with tests) saved us from regressions, even though we're constantly refactoring the code.

Our focus will now move more towards the UX/UI related parts of the editor which, at the moment, are in a bit worse shape than the engine. On the editing layer, we plan to work on the MS Edge support and continue improving the IME support.


We updated the basic CKEditor 5 sample that you can play with. Check out the developer preview of CKEditor 5 (version 0.9.0) on the CKEditor 5 GitHub.io page.


For the detailed list of changes go to ckeditor5@v0.9.0 where you can check each package's changelogs.