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

# React Native

> Run the dev loop on an React Native project

## React Native (bare)

Bare React Native projects use full hot reload via Metro, similar to Expo but without deep links. JS/TS changes appear on the device within seconds. Press `[r]` only when native dependencies change.

For build and upload steps, see [React Native Build Guide](/builds/frameworks/react-native).

### How detection works

The CLI looks for `react-native` in `package.json` dependencies **without** `expo` also being present. If both `react-native` and `expo` exist, the Expo provider takes precedence.

Detection confidence is **0.8** — higher than Swift (0.7) and Android (0.6), so bare RN projects are correctly identified even when `ios/` and `android/` directories are present.

Additional indicators that boost detection: `metro.config.js`, `metro.config.ts`, `react-native.config.js`, `react-native.config.ts`.

### No app-native scheme needed

Unlike Expo, bare React Native hot reload does not use deep links. The dev
client loads the JavaScript bundle directly from the tunnel URL, so it needs no
custom app URL scheme or scheme-prefix configuration.

The `.revyl/config.yaml` uses `build.framework: react_native` and named
profiles containing the applicable iOS and Android recipes; it has no authored
hot-reload provider block.

### iOS packager URL (HTTPS relay)

On iOS simulators, Revyl points the Debug app at the Metro relay by setting:

* `RCT_jsLocation` to the relay `host:443`
* `RCT_packager_scheme` to `https`

Those values are applied as launch arguments and seeded into the app's NSUserDefaults before launch. You should not patch `RCTBundleURLProvider.mm` (or change React Native's default `http` scheme) for the Revyl tunnel — without `https`, the app would request `http://…:443/…` against a TLS-only relay and fail to load the bundle.

### Monorepo considerations

The same directory rules apply as Expo:

* Run all commands from the React Native app directory, not the monorepo root
* If `react-native` is hoisted, run `revyl init --detect` from the app directory;
  edit `build.framework` and the generated profile recipes, then run
  `revyl config validate`, if detection remains ambiguous
* Watch for multiple `.revyl/` directories in the monorepo


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