FWIW, i always use Codemirror as an agument against DSL-specific, locked in components. While declarative React components are &quot;reusable&quot; they&#x27;re only &quot;reusable [within React]&quot;.<p>Imperative components with APIs is where real reusability exists. Case in point: React can consume them but cannot create them for external  consumption.<p>EDIT: I hate to make this reply self-serving, but this is exactly why domvm [1] now exists. It promotes imperative components with declarative OR imperative view&#x2F;subview composition. It slots firmly in between Mithril and pure-vdom frameworks, removing structural enforcement and avoiding promotion of a specific MV* paradigm. It&#x27;s among the most performant vdom implementations to boot.<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;leeoniya&#x2F;domvm" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;leeoniya&#x2F;domvm</a>