React Native Expo wallet for Stellar Testnet. The app aims to feel polished and usable for core wallet flows while still evolving as the PocketPay ecosystem matures.
- This project is best described as a polished but still-evolving wallet experience rather than a production-ready product.
- Core flows such as wallet creation and import, balance checks, sending and receiving, contacts, and the vault UI are implemented and actively refined.
- The app is intentionally focused on Stellar Testnet for development and experimentation. Testnet XLM has no real monetary value.
- The vault experience is currently mock-backed by default. A real Soroban contract integration can be enabled with configuration, but the default experience remains a safe placeholder.
- Storage Guide - SecureStore vs AsyncStorage
- Contacts Guide - Contact storage, backup limitations, and future export/import ideas
- Polyfills Guide - React Native polyfills and import order for Stellar SDK
- Vault UI Guidance - How to present the Soroban Savings Vault, Testnet risks, and contract limitations
⚠️ This app runs on the Stellar Testnet only. Testnet XLM has no real monetary value. Read the Security Guide before storing or sharing any keys.
- Wallet creation and import
- XLM balance and transactions
- Send and receive with QR codes
- Address book contacts
- Soroban vault placeholder
For the expected screen sequence, validation, and UI states behind these features, see Main wallet user flows.
PocketPay Mobile is part of a broader PocketPay stack:
- Screen Inventory - A map of the main screens and routes in the app.
📸 Screenshots below are placeholders. To update them, capture each screen from a simulator or device (use dummy/funded Testnet data only — never real keys or mainnet funds) and replace the files in
docs/screenshots/.
| Wallet | Send | Receive |
|---|---|---|
![]() |
![]() |
![]() |
| Balance overview and quick actions | Send XLM to any Stellar address | QR code for your public key |
| Activity | Contacts | Vault |
|---|---|---|
![]() |
![]() |
![]() |
| Transaction history with sent/received indicators | Saved addresses for quick access | Soroban Savings Vault (mock) |
- Run the app in a simulator with a funded Testnet account.
- Navigate to the relevant screen.
- Take a screenshot and export it at roughly 390 × 844 px (iPhone 14 logical resolution) or equivalent Android size.
- Save it to
docs/screenshots/<screen-name>.pngusing the filenames shown above. - Commit only the image files — never include screenshots that reveal a real secret key or personal data.
React Native, Expo Router, Zustand, PocketPay SDK, SecureStore, AsyncStorage
npm install --legacy-peer-deps
cp .env.example .env
npm startThe PocketPay SDK is pinned to an official source commit and built by the
app's postinstall script because the SDK is not currently published to npm.
Before adding new screens or components, read the Design System guide. It covers colour tokens, typography, spacing, card patterns, buttons, inputs, and dark mode rules derived directly from the existing codebase.
Please read our Contributing Guidelines and review our Accessibility Checklist before making UI changes.
See CHANGELOG.md for a full list of notable changes across releases.
See the full Security Guide for details on secret key handling, device storage, backups, and safe development practices.
MIT





