Skip to main content

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.

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_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. No app_scheme or use_exp_prefix configuration is needed.

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, use --provider react-native to force detection
  • Watch for multiple .revyl/ directories in the monorepo