LiveKit docs › Hooks › useTrackToggle

---

# useTrackToggle

The `useTrackToggle` hook is used to implement the `TrackToggle` component and returns state and functionality of the given track.

## Import

```typescript
import { useTrackToggle } from "@livekit/components-react";

```

## Usage

```tsx
const { buttonProps, enabled } = useTrackToggle(trackRef);
return <button {...buttonProps}>{enabled ? "disable" : "enable"}</button>;

```

## Properties

- **`{ source, onChange, initialState, captureOptions, publishOptions, onDeviceError, room, ...rest }.room`** _(Room)_ (optional): 

## Returns

```typescript
{
  toggle: ((forceState?: boolean) => Promise<void>) |
    ((
      forceState?: boolean,
      captureOptions?: import("@livekit/components-core").CaptureOptionsBySource<T> | undefined
    ) => Promise<boolean | undefined>);
  enabled: boolean;
  pending: boolean;
  track: import("livekit-client").LocalTrackPublication | undefined;
  buttonProps: React.ButtonHTMLAttributes<HTMLButtonElement>;
}

```

---

This document was rendered at 2026-06-07T11:32:07.556Z.
For the latest version of this document, see [https://docs.livekit.io/reference/components/react/hook/usetracktoggle.md](https://docs.livekit.io/reference/components/react/hook/usetracktoggle.md).

To explore all LiveKit documentation, see [llms.txt](https://docs.livekit.io/llms.txt).