Prerequisites
- macOS with Xcode 16 or later
- CocoaPods:
gem install cocoapods - Yarn:
npm install -g yarn - cmake and ninja (for building the Hermes JS engine):
brew bundle from the vibracode-mobile root installs cmake, ninja, and other native build dependencies declared in the Brewfile.
Setup
1
Clone the repository
The mobile app depends on submodules — React Native is built from source and the Expo template is included as a submodule. You must use
--recurse-submodules.2
Install JavaScript dependencies
3
Run native setup
This script configures native build settings and prepares the workspace:
4
Build Expo packages
The project uses a local copy of the Expo SDK. Build it from source:
5
Install React Native from source
6
Install CocoaPods
7
Configure the mobile environment
Copy the example env file and fill in your values:At minimum you need:Set
EXPO_PUBLIC_V0_API_URL and EXPO_PUBLIC_API_URL to the URL of your running backend. Use http://localhost:3000 for local development.8
Start Metro
Metro must run on port 80 for the local Expo Go kernel to find it:
9
Build and run in Xcode
- Open
apps/expo-go/ios/Exponent.xcworkspacein Xcode (use.xcworkspace, not.xcodeproj) - Open
EXBuildConstants.plistand setDEV_KERNEL_SOURCEtoLOCAL - Select your target device or simulator
- Press Build and Run (⌘R)
Android build
Android builds work on macOS, Linux, or Windows:android/app/build/outputs/apk/debug/.
Troubleshooting
Project structure
The key directories insidevibracode-mobile/apps/expo-go/ are:
ios/Client/Menu/ is written in Objective-C and uses Texture (AsyncDisplayKit) for off-main-thread rendering.
Next steps
- Backend setup — make sure the backend is running before you connect the app
- Environment variables reference — full list of mobile env vars