
Product
Introducing Tier 1 Reachability: Precision CVE Triage for Enterprise Teams
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
@webcomponents/shadydom
Advanced tools
ShadyDOM provides a shim for ShadowDOM V1. It is less correct but less intrusive and faster than the ShadowDOM Polyfill.
Usage of the shim is transparent when attachShadow
is unavailable. Elements are
patched as needed to report ShadowDOM correct dom information. Only dom tree
accessors and mutation api is maintained. Some dom api
(for example MutationObservers) is not shimmed.
To force ShadyDOM to be used even when native ShadowDOM is available, set
the ShadyDOM = {force: true}
in a script prior to loading the polyfill.
<div id="host"></div>
<script>
host.attachShadow({mode: 'open'});
host.shadowRoot.appendChild(document.createElement('a'));
</script>
For building and testing, first run
npm install
npm run build
To test, run npm test
ShadyDOM distribution is asynchronous for performance reasons. This means that
the composed dom will be available 1 microtask after the dom mutation occurs.
For testing, ShadyDOM.flush
may be called to force syncronous composition.
ShadowDOM compatible styling is not provided with the ShadyDOM shim. To shim ShadowDOM styling, use the shadycss shim.
On very old versions of Chrome and Safari, in rare cases ShadyDOM.patch(node)
must be called to properly set textContent
or innerHTML
. On these browsers,
element property accessors like firstChild
and textContent
cannot be
modified on the element prototype and instances must be patched. This is
automated but there are some cases that are not handled.
This should only be an issue when setting textContent
or innerHTML
on a
node inside a shadowRoot adds or removes a <slot>
element.
In this case, the shadowRoot will not render correctly. To workaround this,
call ShadyDOM.patch(node)
prior to setting textContent
or innerHTML
.
The APIs Document.querySelectorAll
, Element.querySelectorAll
, Node.childNodes
,
and ParentNode.children
each return an Array
instead of a NodeList
or HTMLCollection
.
FAQs
Shadow DOM polyfill
We found that @webcomponents/shadydom demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Security News
The MCP Steering Committee has launched the official MCP Registry in preview, a central hub for discovering and publishing MCP servers.