The mode property of the ShadowRoot specifies its mode — either open or closed. This defines whether or not the shadow root's internal features are accessible from JavaScript.

When the mode of a shadow root is "closed", the shadow root’s implementation internals are inaccessible and unchangeable from JavaScript—in the same way the implementation internals of, for example, the <video> element are inaccessible and unchangeable from JavaScript.


var mode = shadowRoot.mode


A value defined in the ShadowRootMode enum — either open or closed.


let customElem = document.querySelector('my-shadow-dom-element');
let shadow = customElem.shadowRoot;

// Another way to check whether the shadow root is open; it will return null if not
if(shadow) {
  // If it is open, close it to stop people stealing our secrets!
  shadow.mode = 'closed';


Specification Status Comment
The definition of 'ShadowRoot.mode' in that specification.
Living Standard

Browser compatibility

BCD tables only load in the browser