WorkerDOM
An in-progress implementation of the DOM API intended to run within a Web Worker.
Purpose: Move complexity of intermediate work related to DOM mutations to a background thread, sending only the necessary manipulations to a foreground thread.
Use Cases:
- Embedded content from a third party living side by side with first party code.
- Mitigation of expensive rendering for content not requiring syncronous updates to user actions.
- Retaining main thread availablity for high priority updates by async updating elsewhere in a document.
Installation
npm install @ampproject/worker-dom
Usage
Include the WorkerDOM main thread code within your document directly or via a bundler.
Upgrade a specific section of the document to be driven by a worker.
Note: The nomodule format exposes the global MainThread
whereas the module format allows one to directly import the upgradeElement
method.
Running Debug Demos
After installing the library locally, you can try out the debug demos with the following.
npm run debug
"Safe" mode
WorkerDOM has a special output variant that includes safety features e.g. HTML sanitization and a web worker sandbox. This variant is distributed under the ".safe" suffix for main and worker thread binaries:
index.safe.mjs
index.safe.js
worker.safe.mjs
worker.safe.js
Security disclosures
The AMP Project accepts responsible security disclosures through the Google Application Security program.
Code of conduct
The AMP Project strives for a positive and growing project community that provides a safe environment for everyone. All members, committers and volunteers in the community are required to act according to the code of conduct.
License
worker-dom is licensed under the Apache License, Version 2.0.