Skip to content

livekit-client fails to import when RTCPeerConnection.prototype.addEventListener is read-only #1806

@ankithedau

Description

@ankithedau

Describe the bug

What I'm expecting

The library should import successfully and handle environments where RTCPeerConnection.prototype.addEventListener is read-only or non-configurable. The library should check if properties are writable before attempting to modify them, or use an alternative approach.

What happens instead

The library fails to import/load with the following error:

TypeError: Cannot assign to read only property 'addEventListener' of object '#<RTCPeerConnection>'

The error occurs during module initialization when importing the library:

import { Room } from 'livekit-client'; // Fails here

Reproduction

Reproduction

  1. Embed the livekit-client library in an environment where RTCPeerConnection APIs are frozen/read-only (e.g., Wix website)
  2. Attempt to import the library:
    import { Room } from 'livekit-client';
  3. The import fails immediately with the TypeError

Note: This occurs in environments like Wix where WebRTC APIs are frozen for security reasons. The error happens during module initialization, before any API calls are made.

Logs

TypeError: Cannot assign to read only property 'addEventListener' of object '#<RTCPeerConnection>'
    at [livekit-client module initialization code]
    at async import('livekit-client')


The error occurs synchronously during the module import, preventing the library from loading at all.

System Info

- **OS**: Any (issue is environment-specific, not OS-specific)
- **Browser**: Any modern browser (Chrome, Firefox, Safari, Edge)
- **Environment**: Wix embedded widget environment (RTCPeerConnection APIs are frozen)
- **livekit-client version**: 2.17.0

**Note**: This issue is not browser-specific but environment-specific. It occurs in any environment where `RTCPeerConnection.prototype.addEventListener` is read-only or non-configurable.

Severity

blocking all usage of LiveKit

Additional Information

This issue prevents the library from being used in:

  • Wix websites (embedded widgets)
  • Security-restricted environments where WebRTC APIs are frozen
  • Some enterprise browser configurations

The library attempts to modify RTCPeerConnection.prototype.addEventListener during module initialization, which fails when the property is read-only or non-configurable. The library should handle this gracefully by checking property descriptors before modification or using an alternative approach that doesn't require modifying the prototype.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions