Document: customElementRegistry property

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

The customElementRegistry read-only property of the Document interface returns the CustomElementRegistry object associated with this document, or null if one has not been set.

For documents associated with a Window (such as the main document of a page), this is the global CustomElementRegistry that is also accessible through the window.customElements property. Documents created programmatically (for example, via DOMImplementation.createHTMLDocument()) have a null custom element registry by default.

This property is also available on ShadowRoot objects via the same customElementRegistry property name.

Value

A CustomElementRegistry object, or null.

Examples

Accessing a document's custom element registry

This example shows that the main document's customElementRegistry is the same global registry available through window.customElements, while documents created programmatically via DOMImplementation.createHTMLDocument() have a null registry by default.

js
// The main document's registry is the global one:
console.log(document.customElementRegistry === window.customElements); // true (for Window-associated documents)

// Documents created programmatically have a null registry:
const newDoc = document.implementation.createHTMLDocument("New document");
console.log(newDoc.customElementRegistry); // null

Specifications

Specification
DOM
# dom-documentorshadowroot-customelementregistry

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
customElementRegistry
Chrome – Full support
Chrome 146 (Release date: 2026-03-10)
footnote Full support
Edge – Full support
Edge 146 (Release date: 2026-03-13)
footnote Full support
Firefox – No support
Firefox 150 (Release date: 2026-04-21)
footnote , disabled
disabled From version 150 users must explicitly set the dom.scoped-custom-element-registries.enabled preference to true. To change preferences in Firefox, visit about:config.
footnote See bug 2018900
Opera – Full support
Opera 130 (Release date: 2026-04-08)
footnote Full support
Safari – Full support
Safari 26 (Release date: 2025-09-15)
footnote Full support
Chrome Android – Full support
Chrome Android 146 (Release date: 2026-03-10)
footnote Full support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – Full support
Opera Android 97 (Release date: 2026-04-16)
footnote Full support
Safari on iOS – Full support
Safari on iOS 26 (Release date: 2025-09-15)
footnote Full support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – Full support
WebView Android 146 (Release date: 2026-03-10)
footnote Full support
WebView on iOS – Full support
WebView on iOS 26 (Release date: 2025-09-15)
footnote Full support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.
User must explicitly enable this feature.

See also