---
title: useRequestPermissions
description: >-
  The useRequestPermissions hook provides a function to request native device
  permissions from the user.
source_url:
  html: 'https://shopify.dev/docs/api/shop-minis/hooks/util/userequestpermissions'
  md: 'https://shopify.dev/docs/api/shop-minis/hooks/util/userequestpermissions.md'
---

# useRequestPermissions

The `useRequestPermissions` hook provides a function to request native device permissions from the user. It handles both app-level and system-level permission requests, showing appropriate dialogs and managing permission state. Supported permissions include camera, microphone, and device motion access.

**Note:**

Before using this hook, add the required permissions to your Mini's manifest file: `"permissions": ["CAMERA"]`.

## use​Request​Permissions()

### Returns

* **UseRequestPermissionsReturns**

### UseRequestPermissionsReturns

* requestPermission

  Request native permissions from the user

  ```ts
  (params: RequestPermissionParams) => Promise<RequestPermissionResponse>
  ```

### RequestPermissionParams

* permission

  ```ts
  MiniPermission
  ```

### MiniPermission

```ts
'CAMERA' | 'MICROPHONE' | 'MOTION'
```

### RequestPermissionResponse

* errorMessage

  ```ts
  string
  ```

* granted

  ```ts
  boolean
  ```

Examples

### Examples

* ####

  ##### tsx

  ```tsx
  import {useRequestPermissions, Button} from '@shopify/shop-minis-react'

  export default function MyComponent() {
    const {requestPermission} = useRequestPermissions()

    const handleCameraPermission = async () => {
      try {
        const response = await requestPermission({permission: 'CAMERA'})

        if (response.granted) {
          console.log('Camera permission granted')
          // You can now proceed with camera functionality
        } else {
          console.log('Camera permission denied:', response.errorMessage)
          // Handle the denial gracefully
          // For example: show alternative UI or functionality
        }
      } catch (error) {
        console.error('Failed to request camera permission:', error)
        // Handle unexpected errors
      }
    }

    return (
      <div>
        <Button onClick={handleCameraPermission}>
          Request Camera Permission
        </Button>
      </div>
    )
  }
  ```

***
