> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# updateReceiveSettings()

> Updates which simulcast quality layer to receive for each remote participant's video tracks.

`updateReceiveSettings(receiveSettings)`

<Badge color="red">{"✗"} Prebuilt</Badge> <Badge color="green">{"✓"} Custom</Badge>

Updates how you receive video tracks from remote participants — specifically, the maximum simulcast layer to decode for each participant's `video` and `screenVideo` tracks. Higher layers correspond to higher quality.

Settings can be applied per-participant, to all current participants at once via `'*'`, or to `base` — a set of defaults inherited by all participants who don't have explicit settings applied.

<Note>
  Simulcast layer settings only apply in [SFU mode](/docs/guides/architecture-and-monitoring/intro-to-video-arch#the-architecture-of-a-room-p2p-vs-sfu-calls). Desktop clients support 3 layers (0–2); mobile clients support 2 layers (0–1). Requesting a higher layer than is available is allowed — you'll receive the highest available.
</Note>

## Parameters

<ParamField body="receiveSettings" type="DailyReceiveSettingsUpdates" required>
  An object whose keys identify which participants to update, and whose values are the settings to apply.

  <Expandable title="Key options" defaultOpen="true">
    <ParamField body="[sessionId]" type="DailySingleParticipantReceiveSettingsUpdates | 'inherit'">
      Settings for a specific participant. Pass `'inherit'` to reset them to the `base` defaults.
    </ParamField>

    <ParamField body="base" type="DailySingleParticipantReceiveSettingsUpdates">
      Default settings inherited by all participants who don't have explicit settings. Applies to current and future participants. Set this at join time via the [`receiveSettings` call property](/reference/daily-js/types/daily-call-options#param-receive-settings) to configure defaults before anyone joins.
    </ParamField>

    <ParamField body="*" type="DailySingleParticipantReceiveSettingsUpdates">
      Shorthand to apply the same settings to all participants currently connected to you. Unlike `base`, `'*'` has no effect before joining and does not apply to future participants.
    </ParamField>
  </Expandable>

  Each value (other than `'inherit'`) is a `DailySingleParticipantReceiveSettingsUpdates` object:

  <Expandable title="DailySingleParticipantReceiveSettingsUpdates fields" defaultOpen="true">
    <ParamField body="video" type="{ layer?: number | 'inherit' } | 'inherit'">
      Receive settings for the participant's camera track. `layer` selects the simulcast layer (default: `2`). Pass `'inherit'` to reset to the `base` value.
    </ParamField>

    <ParamField body="screenVideo" type="{ layer?: number | 'inherit' } | 'inherit'">
      Receive settings for the participant's screen share track. Screen video has one layer by default; additional layers require configuration via [`updateSendSettings()`](/reference/daily-js/instance-methods/update-send-settings).
    </ParamField>
  </Expandable>
</ParamField>

## Return value

Returns `Promise<DailyReceiveSettings>` that resolves with the full updated receive settings for all participants.

## Examples

```javascript theme={null}
// Set a low-quality default for all participants at join time
call.join({
  url,
  receiveSettings: {
    base: { video: { layer: 0 } },
  },
});
```

```javascript theme={null}
// After joining: lower quality for everyone, promote the active speaker
await call.updateReceiveSettings({
  '*': { video: { layer: 0 } },
  [activeSpeakerSessionId]: { video: { layer: 2 } },
});
```

```javascript theme={null}
// Reset a participant to inherit from base
await call.updateReceiveSettings({
  [sessionId]: 'inherit',
});
```

```javascript theme={null}
// Reset a single track for a participant while leaving others unchanged
await call.updateReceiveSettings({
  [sessionId]: { video: 'inherit' },
});
```

## See also

<CardGroup>
  <Card title="Types" icon="t" iconType="solid">
    * [DailyCallOptions: receiveSettings](/reference/daily-js/types/daily-call-options#param-receive-settings)
  </Card>

  <Card title="Methods" icon="code" iconType="solid">
    * [getReceiveSettings()](/reference/daily-js/instance-methods/get-receive-settings)
    * [updateSendSettings()](/reference/daily-js/instance-methods/update-send-settings)
  </Card>

  <Card title="Events" icon="bolt" iconType="solid">
    * [receive-settings-updated](/reference/daily-js/events/settings-events#receive-settings-updated)
  </Card>

  <Card title="Guides" icon="book-open" iconType="solid">
    * [Receive-side video quality](/docs/guides/scaling-calls/best-practices-to-scale-large-experiences#adjust-receive-side-video-quality)
  </Card>
</CardGroup>
