(Biased React dev here.)<p>The key insight in Draft.js is that it&#x27;s incredibly difficult to keep your model in sync with the browser&#x27;s contenteditable behavior unless you intercept many of the behaviors and perform them entirely in the model, then change the DOM accordingly. Medium found the same thing when building their editor:<p><a href="https:&#x2F;&#x2F;medium.com&#x2F;medium-eng&#x2F;why-contenteditable-is-terrible-122d8a40e480" rel="nofollow">https:&#x2F;&#x2F;medium.com&#x2F;medium-eng&#x2F;why-contenteditable-is-terribl...</a><p>In order to build high-quality text editors, you need to be in control of what&#x27;s happening in the DOM. There&#x27;s obviously many ways to control the DOM. React is a solid base for this, as are many other libraries. Facebook uses React extensively so it made sense to use as a base for Draft to avoid needing to essentially rewrite React and to make it even easier to integrate with existing React apps. Of course, you can also use Draft easily inside a non-React app.<p>The entire Draft model is also separate code decoupled from the UI and you&#x27;re free to use the model and implement the views yourself if you&#x27;re allergic to React or aren&#x27;t targeting the DOM. The Facebook Groups app uses Draft&#x27;s model but implements custom views for it in React Native.