Undo and other text editing facilities aren't completely nonfunctional, they just become broken and unpredictable. For example, these steps:
1. Load http://facebook.github.io/draft-js/ 2. Click in the text box 3. Type 'hello' on the keyboard 4. Using the mouse, choose Edit -> Undo
The text box will show "h" instead of being empty. Do you see this too?
Note that cmd-Z won't reproduce this since the page tries to handle that itself to work around these bugs.
The Editing Task Force is working on opening necessary APIs so editor implementors could integrate with all the native features. I wrote an article about the effort [3]. It's a bit outdated now, but explains what are the goals.
[1] https://github.com/w3c/editing/issues
[2] https://github.com/w3c/editing/issues/79
[3] https://medium.com/content-uneditable/fixing-contenteditable...
Anyway this approach is the only good one if you don't want to produce crappy HTML that will end up on your site. TinyMCE and the rest are obsolete, and editors like DraftJS or mobiledoc-kit are the only viable solutions until browsers offer a new, not broken alternative to content-editable.