Skip to content

Migration Guide: v4 to v5 ​

Version 5.0.0 removes deprecated APIs and improves type safety. This guide covers the breaking changes.

Breaking Changes ​

1. Removed removeAllListeners() ​

This method didn't work due to EventTarget API limitations. Use native removeEventListener instead.

Before (v4):

typescript
analyzer.on('bpm', handler);
analyzer.removeAllListeners(); // Did nothing!

After (v5):

typescript
const handler = (data) => console.log(data);
analyzer.on('bpm', handler);
analyzer.removeEventListener('bpm', handler);

2. Removed off() Method ​

The off() method was unreliable. Use native removeEventListener.

Before (v4):

typescript
analyzer.on('bpm', handler);
analyzer.off('bpm', handler);

After (v5):

typescript
analyzer.on('bpm', handler);
analyzer.removeEventListener('bpm', handler);

React example:

typescript
useEffect(() => {
  const handleBpm = (data) => console.log(data);
  analyzer.on('bpm', handleBpm);
  
  return () => {
    analyzer.removeEventListener('bpm', handleBpm);
    analyzer.disconnect();
  };
}, [analyzer]);

Quick Migration Checklist ​

  • Replace analyzer.removeAllListeners() with proper removeEventListener calls
  • Replace analyzer.off(event, handler) with analyzer.removeEventListener(event, handler)
  • Store handler references to enable cleanup

Additional Improvements ​

  • Type Safety: Return types now use readonly properties
  • Memory Leaks: Fixed Blob URL cleanup in AudioWorklet registration
  • Documentation: Updated all examples with proper cleanup patterns

Released under the Apache License 2.0