> This page is for Browser SDK, version v4 (default).
> For other versions, use one of these documentation indexes:
> - v4 (default): https://signalwire.com/docs/browser-sdk/v4/llms.txt
> - v3: https://signalwire.com/docs/browser-sdk/v3/llms.txt
> - v2: https://signalwire.com/docs/browser-sdk/v2/llms.txt

> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes.

# MediaTrackError

> Thrown when a media track operation fails.

Raised when a peer-connection track operation fails — most commonly when the SDK tries to `addTrack`, `replaceTrack`, or remove a track during device switching, muting, or screen-share handoff. The `operation` and `kind` properties locate the failure; `originalError` carries the underlying `DOMException` from the WebRTC stack.

## **Extends**

* `Error`

## **Constructors**

### Constructor

```ts
new MediaTrackError(operation, kind, originalError): MediaTrackError
```

### Parameters

**`operation`** `string` — required

Track operation that failed (e.g. `addTrack`, `replaceTrack`).

---

**`kind`** `string` — required

Kind of media track involved (`audio` or `video`).

---

**`originalError`** `unknown` — required

Underlying error raised by the WebRTC stack.

---

## **Properties**

**`kind`** `string` — required

Kind of media track involved (`audio` or `video`).

---

**`operation`** `string` — required

Track operation that failed (e.g. `addTrack`, `replaceTrack`).

---

**`originalError`** `unknown` — required

Underlying error raised by the WebRTC stack.

---

## **Examples**

```ts
import { MediaTrackError } from '@signalwire/js';

call.errors$.subscribe((err) => {
  if (err instanceof MediaTrackError) {
    console.error(`media track ${err.kind} ${err.operation} failed:`, err.originalError);
  }
});
```