# Low Bandwidth

Our servers can detect if you are on a low-bandwidth connection and will automatically adjust the video quality to ensure smooth playback.
However, sometimes even reduced quality may not be enough for a good experience, and our system may decide to opt the local user out from consuming some or all remote videos.
The video pause feature improves call quality by automatically turning off incoming video streams, resulting in an audio-only mode in response to deteriorating network conditions on the subscriber side.

In such cases, you will see an icon in the participant's label indicating that the video is being paused due to bandwidth constraints.

![Low bandwidth](@shared/assets/js/low-bandwidth.png)

## Low Bandwidth Optimization toggling

The Low Bandwidth optimization is **enabled** by default on an SDK level.
However, integrators can decide to opt out of this feature accordingly to their use case:

```ts
import { SfuModels } from "@stream-io/video-react-native-sd";

const call = client.call(type, id);
await call.disableClientCapabilities(
  SfuModels.ClientCapability.SUBSCRIBER_VIDEO_PAUSE,
);

// use call.enableClientCapabilities(...) to re-enable the feature

await call.join();
```

This signals to the backend that the client supports dynamic video pausing, allowing the system to optimize media delivery under limited network conditions.

## Observing Paused Tracks

The information about server-side paused tracks lives on the `participant.pausedTracks` property.
You can observe changes to this property to customize the UI further, such as showing a message or changing the participant's label.

```tsx
import {
  useCallStateHooks,
  SfuModels,
} from "@stream-io/video-react-native-sdk";

export const MyComponent = () => {
  const { useParticipants } = useCallStateHooks();
  const participants = useParticipants();

  const participantsWithPausedVideoTracks = participants.filter((p) =>
    p.pausedTracks?.includes(SfuModels.TrackType.VIDEO),
  );

  return (
    <>
      {participantsWithPausedVideoTracks.length > 0 && (
        <ShowPausedIncomingVideoNotification />
      )}
      <MyCalLayoutUI />
    </>
  );
};
```

---

This page was last updated at 2025-08-15T14:16:45.874Z.

For the most recent version of this documentation, visit [https://getstream.io/video/docs/react-native/ui-cookbook/low-bandwidth/](https://getstream.io/video/docs/react-native/ui-cookbook/low-bandwidth/).