> ## 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.

# startCamera()

> Acquires camera and microphone access before joining a call.

`startCamera(properties?)`

Acquires local camera and microphone access as part of the pre-join flow, without entering a call. Useful for building a "hair check" or lobby screen where participants can preview and configure their devices before joining.

Accepts the same [`DailyCallOptions`](/reference/react-native/types/daily-call-options) object as the factory methods. `url` is not required.

<Warning>
  Do not call `startCamera()` after `join()`. Use [`setLocalVideo()`](/reference/react-native/instance-methods/set-local-video) or [`setLocalAudio()`](/reference/react-native/instance-methods/set-local-audio) to control devices mid-call.
</Warning>

`join()` calls `startCamera()` internally — if you don't need pre-join device access, `join()` alone is sufficient.

## Parameters

<ParamField body="properties" type="DailyCallOptions">
  Call configuration options. See [`DailyCallOptions`](/reference/react-native/types/daily-call-options) for the full list of available fields.
</ParamField>

## Return value

Returns a `Promise<DailyDeviceInfos>` with the active camera, mic, and speaker. See [`getInputDevices()`](/reference/react-native/instance-methods/get-input-devices) for the full shape.

## Example

```javascript theme={null}
const call = Daily.createCallObject();

// Preview devices before joining
await call.startCamera({ url: 'https://your-domain.daily.co/room-name' });

const { local } = call.participants();
const audioTrack = local.tracks.audio.track;
const videoTrack = local.tracks.video.track;

// Later, join the call when ready
await call.join();
```

## See also

<CardGroup>
  <Card title="Types" icon="t" iconType="solid">
    * [DailyCallOptions](/reference/react-native/types/daily-call-options)
  </Card>

  <Card title="Methods" icon="code" iconType="solid">
    * [join()](/reference/react-native/instance-methods/join)
    * [setLocalAudio()](/reference/react-native/instance-methods/set-local-audio)
    * [setLocalVideo()](/reference/react-native/instance-methods/set-local-video)
  </Card>

  <Card title="Events" icon="bolt" iconType="solid">
    * [started-camera](/reference/react-native/events/settings-events#started-camera)
    * [participant-updated](/reference/react-native/events/participant-events#participant-updated)
    * [track-started](/reference/react-native/events/media-events#track-started)
  </Card>

  <Card title="Guides" icon="book-open" iconType="solid">
    * [Audio and video](/docs/daily-js/guides/audio-video)
    * [Tracks and media](/docs/daily-js/concepts/tracks)
  </Card>
</CardGroup>
