AudioWorklet
The part of the Web Audio API where you write your own audio processing in JavaScript or WebAssembly, run on the browser's audio thread rather than the main thread.
Its predecessor, ScriptProcessorNode, ran custom DSP on the main thread, so every heavy layout pass or garbage collection came out as crackles. AudioWorklet moves the code into a separate global scope on the audio thread: you subclass AudioWorkletProcessor and implement process(), which gets called with blocks of 128 samples. Talking to the page happens through a MessagePort.
Chrome shipped it in 2018, with Firefox and Safari following in 2020–2021. In practice nobody writes heavy DSP in JavaScript; they compile C++ or Rust to WebAssembly and let the processor call into it. At 48 kHz, 128 samples leaves about 2.7 milliseconds per block — miss that deadline and you'll hear it.