unstale

npm / wavesurfer.js

wavesurfer.js

What changed in wavesurfer.js 8, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-28.

3 new APIs and options2 performance3 behavior and defaults10 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.9 on npm

wavesurfer.js 818 changes

New APIs and options 3

  • Regions can opt out of label stacking with avoidOverlapping.

    8.0.3release notes

  • The Spectrogram plugin adds setOptions to change options without re-creating the plugin.

    8.0.3release notes

  • Adds the Praat-style dynamic compression option to Spectrogram.

    8.0.1release notes

Performance 2

  • Region visibility is checked in one pass per scroll, zoom or resize.

    8.0.3release notes

  • Timeline notches are measured in a single layout pass instead of one pass per notch.

    8.0.3release notes

Behavior and default changes 3

  • The renderer views the audio under each canvas instead of copying it.

    8.0.3release notes

  • A top timeline gets its own space above the waveform.

    8.0.3release notes

  • Reverts the default mediaRecorderTimeslice value to undefined.

    8.0.1release notes

Fixes and other changes 10

  • Auto-center smoothing stays up with the cursor when updates are slower than 60 a second.

    8.0.3release notes

  • An explicit noverlap value of 0 is honored as no overlap.

    8.0.3release notes

  • Labels of regions scrolled into view are stacked in one pass.

    8.0.3release notes

  • One consistent scroll event is emitted per scroll.

    8.0.3release notes

  • Windowed segments are recomputed once zoomed more than 2…

    8.0.3release notes

  • Digital silence is judged before pre-emphasis when calculating autoGain.

    8.0.2release notes

  • The continuous waveform is aligned with elapsed time.

    8.0.2release notes

  • Drawing and dragging remain stable when zoomed.

    8.0.2release notes

  • Fetching falls back to arrayBuffer() when response.blob() fails.

    8.0.2release notes

  • The waveform continuously auto-scrolls while the playhead is dragged near the container edge.

    8.0.2release notes