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

# React Native

> Prepare a React Native agent interface with a server-owned access boundary, permission handling, and device release checks.

Use this guide to prepare a React Native integration while the Threetone mobile session contract is pending. There is no verified Threetone React Native package or supported native session recipe to install from this guide.

## Prepare the application

<Steps>
  <Step title="Keep workspace access on the server">
    Identify which signed-in user may use which agent. Keep workspace API keys out of the application bundle, device logs, and client configuration. The application will need the released scoped session-access mechanism before it can connect.
  </Step>

  <Step title="Design permission states">
    For an Android voice interface, review the manifest and runtime handling for `RECORD_AUDIO`. React Native's [PermissionsAndroid](https://reactnative.dev/docs/permissionsandroid) distinguishes granted, denied, and never-ask-again results. Provide a useful recovery message for each denied state.

    On iOS, supply a clear [microphone usage description](https://developer.apple.com/documentation/bundleresources/information-property-list/nsmicrophoneusagedescription). Request access as part of an intentional voice action. Text-only interfaces should not request microphone access without a voice feature that needs it.
  </Step>

  <Step title="Define lifecycle ownership">
    Choose the screen or service that owns the session. Use [AppState](https://reactnative.dev/docs/appstate) to observe foreground and background changes, then follow the released transport's pause, end, or reconnect rules. Remove subscriptions when their owner unmounts.
  </Step>
</Steps>

## Device acceptance checks

Run these checks on physical iOS and Android devices once a supported transport is available.

| Scenario | Expected application behavior |
| - | - |
| Permission denied | Explain the limitation without repeatedly prompting or opening an unusable session. |
| Phone call or audio interruption | Show the interruption and follow the documented resume or end behavior. |
| Headset or speaker change | Keep the selected audio route understandable to the user. |
| Background, lock, or navigation | Release or retain resources only as the released mobile contract allows. |
| Network loss or expired access | Stop presenting the session as connected; offer a safe retry without replaying actions. |

Record the framework version, OS versions, native dependencies, and session contract used for the test. A browser demo inside a WebView does not establish native package support or background audio behavior.

Continue with [mobile deployment](/agents-platform/deploy/mobile/overview) and [current availability](/agents-platform/overview#current-availability).

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Which package should I install?" id="react-native-faq-package">Wait for an official package and versioned installation guide. No package name or installation command is established here.</Accordion>
  <Accordion title="Does AppState keep a conversation alive in the background?" id="react-native-faq-background">No. It reports application state. Background execution and audio require their own platform support and a verified transport lifecycle.</Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.