A quick-reference checklist for getting PocketPay Mobile running locally. For full details on any step, see CONTRIBUTING.md.
- Node.js v18 or later installed (
node -v) — LTS recommended, use nvm if you need to switch versions - npm v9 or later (
npm -v) — bundled with Node.js - Git installed
- Expo Go installed on your physical iOS/Android device, or Xcode (macOS only) / Android Studio if you'd rather use a simulator/emulator
- Fork the repo, then clone your fork:
git clone https://github.com/<your-username>/pocketpay-mobile.git
cd pocketpay-mobile- Install dependencies with the required flag:
npm install --legacy-peer-depsThe
--legacy-peer-depsflag is required, not optional — this project has known React Native peer dependency conflicts that a plainnpm installwill fail on.
- Wait for the
postinstallscript to finish. It builds the PocketPay SDK from a pinned source commit, since the SDK isn't published to npm. This step can take longer than a typicalnpm install— let it run to completion rather than assuming it's hung. - Copy the environment file:
cp .env.example .envThe defaults point at Stellar Testnet and work out of the box for most
development. You only need to edit .env if you're testing the Soroban
Savings Vault against a real deployed contract — otherwise leave
EXPO_PUBLIC_VAULT_CONTRACT_ID empty and the vault screen runs in safe
mock mode.
- Start the dev server:
npm start- From the Metro bundler screen, choose one:
- Scan the QR code with Expo Go on your physical device
- Press
afor an Android emulator - Press
ifor an iOS simulator (macOS only)
- Confirm the app loads to the wallet welcome screen without a red error overlay
-
npm installfails with peer dependency errors — you forgot--legacy-peer-deps. Re-run with the flag. - App fails to build with an SDK-related error — the
postinstallscript may not have completed. Tryrm -rf node_modules && npm install --legacy-peer-depsagain and letpostinstallfinish fully before starting the app. - Blank screen or Metro bundler error on first launch — stop the
server, clear the Metro cache, and restart:
npx expo start --clear - Vault screen behaves unexpectedly / tries to hit a real contract —
check that
EXPO_PUBLIC_VAULT_CONTRACT_IDin.envis empty unless you intentionally set it; a non-empty value switches the vault out of mock mode - Expo Go can't connect to the dev server — make sure your phone and computer are on the same network, and no VPN is interfering with the LAN connection
- The app runs locally with no red error overlay
- You've read the Design System Guide if you plan to touch UI
- You've read the Accessibility Checklist if you plan to touch UI
- You've read the Security Guide if you plan to touch key management, storage, or auth
Questions? Open a discussion or comment on the relevant issue.