---
agentTools:
  projectIndex: https://viro-community.readme.io/llms.txt
---

# Permission Helpers

Two utility functions for handling AR-related permissions.

```typescript
import {
  requestRequiredPermissions,
  checkPermissions,
  ViroPermission,
} from "@reactvision/react-viro";
```

**`ViroPermission`** type: `"camera" | "microphone" | "storage" | "location"`

### `requestRequiredPermissions(permissions?)`

Prompts the user for the specified permissions. Pass a `ViroPermission[]` to request a subset, or call with no arguments to request all four.

```typescript
// Camera only
const { camera } = await requestRequiredPermissions(["camera"]);

// Camera + microphone
const { camera, microphone } = await requestRequiredPermissions(["camera", "microphone"]);

// All four at once
const result = await requestRequiredPermissions();
```

### `checkPermissions(permissions?)`

Reads current permission status without showing any system dialog. Useful for checking what is already granted before deciding whether to call `requestRequiredPermissions`.

```typescript
const { camera } = await checkPermissions(["camera"]);
if (!camera) {
  // Guide user to Settings or call requestRequiredPermissions
}
```

The resolved object contains only keys for the permissions that were requested. Each value is `boolean | undefined`.