# Question about DOMOutputSpec type definition

**URL:** <https://discuss.prosemirror.net/t/question-about-domoutputspec-type-definition/9028>\
**Category:** Uncategorized\
**Created:** [June 11, 2026, 4:20pm UTC](https://discuss.prosemirror.net/t/question-about-domoutputspec-type-definition/9028 "2026-06-11T16:20:07Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![priceld](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/priceld/32/4757_2.png) [@priceld](https://discuss.prosemirror.net/u/priceld)\
**Post date:** [June 11, 2026, 4:20pm UTC](https://discuss.prosemirror.net/t/question-about-domoutputspec-type-definition/9028/1 "2026-06-11T16:20:07Z")

</div>

The type definition for `DOMOutputSpec` was changed recently in [`bb834ae103`](https://code.haverbeke.berlin/prosemirror/prosemirror-model/commit/bb834ae1036caabc86db89f42d96870548da70e3). Specifically:

```diff
-export type DOMOutputSpec = DOMNode | {dom: DOMNode, contentDOM?: HTMLElement} | readonly [string, ...any[]]
+export type DOMOutputSpec = HTMLElement | {dom: HTMLElement, contentDOM?: HTMLElement} | readonly [string, ...any[]]

```

Would it be possible (or desirable) to use `Element` rather than `HTMLElement`? `Element` is a superset of `HTMLElement` and also includes things like `SVGElement` and `MathMLElement`.

My particular use case is for a node that is trying to render mathml. [Here](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgZQMYAsCmICGcC+cAZlBCHAERikDO2wUpUAtCBACaYA2FA3AFD9UEAHY14NDNjwBeOCMwB3FFNwAKBPzjyOmGgC5EW7XAD0puAHkQwGDGAiA5nBxcuOzjTgx0OeIogAVy52OECaQNcuAE84ACNMOChMAEdAhkx2ADoc421cH0NNExNHUkCwQwoHLgdMCgAaPJMausMYKEDMJpLtPw6DRDgAN1cuorhOIhxgmCqKAgIe3vM4ABVosEwAUUZoOCxk+MxUGboXETgAA22ubEwRGCu4YC9kmECoBXYGnXgrgASawAsgAZW73R5XZraGAQAAilmBhjUIl0AEo4DIAHxGXomYRieDsCCoLHyJRwRHAgAKOCgdCganRWTA9LoADFSCBkB0HI41DDemjOFl+gysqMuF1lvjtBQYJgAB4wUzoGAgHhC7TogRypKYD5fSakrJxDjRLJEBjiCEgB4wADC6GAITgAH53SbUGaLXrevhZUtjIH+PhdYJVgBVGg4RyJGyOdVwLgQCAAazgNDIhpdThTwHTmH0QlE4jgypw4DuwL86HJ0IAPAV0Nj+M2SDhUG3tM2RNiAIyN0wgfvGZs0FKwHsmPvYgBMw9HM6Xk+n7ZHne7G5bbauAkJ5ZFiTkkiwuCyx7UFBbjSGUvGFaVVbANbrBF1QA) is a stripped down example of what I am doing.

Prior to the type change, this worked fine, but now there’s a TypeError. It seems to me like `Element` might be the more correct type in this case, but I will defer to those who know the ins-and-outs of such a change.

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![marijn](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/marijn/32/15_2.png) [@marijn](https://discuss.prosemirror.net/u/marijn)\
**Post date:** [June 15, 2026, 1:17pm UTC](https://discuss.prosemirror.net/t/question-about-domoutputspec-type-definition/9028/2 "2026-06-15T13:17:42Z")

</div>

Yes, you’re actually right, it wouldn’t hurt to allow any `Element` there. This patch makes that adjustment:

> **[Widen DOMOutputSpec to allow non-HTML elements · 124061ed1e](https://code.haverbeke.berlin/prosemirror/prosemirror-model/commit/124061ed1e0d17ceeeb5637fc4f494498cd02634)**
>
> FIX: Allow non-HTML elements in \`DOMOutputSpec\`.
> 
> See https://discuss.prosemirror.net/t/question-about-domoutputspec-type-definition/9028

---

<div class="post-metadata">

**Author:** ![priceld](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/priceld/32/4757_2.png) [@priceld](https://discuss.prosemirror.net/u/priceld)\
**Post date:** [June 15, 2026, 1:35pm UTC](https://discuss.prosemirror.net/t/question-about-domoutputspec-type-definition/9028/3 "2026-06-15T13:35:22Z")

</div>

Awesome! Thank you!
