Summary
postMessage can transfer ArrayBuffer ownership zero-copy — sender neutered after transfer. Structured clone duplicates for non-transferables. Workers + transfer for large binary without copy cost. Detached buffer access throws — coordinate lifecycle.
Code example
const buffer = new ArrayBuffer(1024 * 1024);
worker.postMessage({ buffer }, [buffer]);
// buffer.byteLength === 0 in sender after transfer
Key points
postMessagecan transfer ArrayBuffer ownership zero-copy — sender neutered after transfer.- Structured clone duplicates for non-transferables.
- Workers + transfer for large binary without copy cost.
- Detached buffer access throws — coordinate lifecycle.