Run the mobile app
Build and run the React Native / Expo mobile client.
The mobile client lives in apps/mobile. It is a React Native / Expo app that
needs a custom development build — not Expo Go — because it uses mDNS
(react-native-zeroconf) and WebRTC (react-native-webrtc), neither of which
run in the managed Go client.
Configure it
The Relay URL is entered on first launch and stored in the OS keychain, so one build can connect to any server. You can change it later under Settings → Server; changing it signs you out of the previous server.
Remote servers must use https://. Plain http:// is allowed only for
localhost and the Android emulator alias 10.0.2.2.
The only optional environment variable is EXPO_PUBLIC_EAS_PROJECT_ID, used to
mint Expo push tokens. Unset disables push registration.
| Variable | Purpose |
|---|---|
EXPO_PUBLIC_EAS_PROJECT_ID | EAS project id used to mint Expo push tokens. Unset disables push registration. |
Build and run
cd apps/mobile
npm run android # expo run:android (native build)
npm run ios # expo run:ios
npm run build # expo export --platform androidDevelopment, preview, and production build profiles are defined in eas.json.
The Android release build currently signs with the debug keystore in
android/app/build.gradle. Configure a real keystore before shipping.
Permissions
The app requests Android INTERNET, Wi-Fi/multicast permissions for mDNS
discovery, and POST_NOTIFICATIONS. On iOS it declares
NSLocalNetworkUsageDescription, the _nodus._tcp Bonjour service, and local
networking in App Transport Security. See
Mobile permissions for the full rationale.
Next step
Install and build the mobile app has the full guide.