A non-custodial, gasless cryptocurrency mobile wallet built with React Native for the Stabolut Ecosystem (USB Token on Arbitrum & XDC).
👉 Direct Link: https://play.google.com/store/apps/details?id=com.stabolut.usb
| 1. Wallet & Assets | 2. Instant Transfers | 3. Staking & Yield |
|---|---|---|
![]() |
![]() |
![]() |
| 4. Contact Book | 5. Receive & QR Code | 6. Security & Settings |
|---|---|---|
![]() |
![]() |
![]() |
- Non-Custodial HD Wallet: Create, backup, and restore wallets using 12-word mnemonic phrases or raw private keys.
- Gasless Token Transfers: Send USB tokens without needing ETH for gas via ERC-865 / EIP-712 pre-signed meta-transactions.
- Biometric & PIN Lock: Secure access via Face ID / Touch ID, custom PIN codes, and hardware-backed keystores.
- Staking Management: Stake USB tokens directly inside the wallet and track yields in real-time.
- QR Code Scanner: Scan recipient addresses and present your own QR code to receive funds.
- Live Push Notifications & WebSockets: Instant notifications when tokens are sent or received.
- Light & Dark Theme: Built-in theme customization.
Ensure your development environment meets the requirements for React Native CLI:
- Node.js:
>= 18.x(nodejs.org) - Java Development Kit: JDK 17 (recommended for React Native 0.73)
- Android Studio (for Android):
- Android SDK Platform 34
- Android Virtual Device (AVD) emulator or physical device with USB debugging
- Xcode & CocoaPods (for iOS, macOS only):
- Xcode 15+
- CocoaPods (
sudo gem install cocoapods)
git clone https://github.com/Stabolut/mobile.git
cd mobilenpm installcd ios
pod install
cd ..The mobile app connects to the Stabolut Backend for gasless relaying, address book contacts, and user profiles.
Open src/common/strings.js and configure your endpoints:
const Str = {
// Public Arbitrum Sepolia RPC (or your custom RPC endpoint)
rpcUrl: "https://sepolia-rollup.arbitrum.io/rpc",
// USB Token Smart Contract Address on Arbitrum
contractAddress: "0x24c8479b8af9742c5160e0c29197e87a584cfe99",
// Backend API URL:
// - For Android Emulator: Use "http://10.0.2.2:8003/api/v1/stabolut"
// - For Physical Device: Use "http://<YOUR_LOCAL_WIFI_IP>:8003/api/v1/stabolut"
// - For iOS Simulator: Use "http://localhost:8003/api/v1/stabolut"
apiUrl: "http://10.0.2.2:8003/api/v1/stabolut",
socketUrl: "http://10.0.2.2:8003",
};In the project root directory, run:
npm startKeep this terminal window open.
Open a new terminal window in the mobile/ directory:
npm run androidOpen a new terminal window in the mobile/ directory:
npm run ios- Android Build Fails with Gradle Error:
Run
cd android && ./gradlew clean && cd ..and restart Metro withnpm start -- --reset-cache. - Cannot Connect to Local Backend on Android Emulator:
Use
http://10.0.2.2:8003instead oflocalhostbecauselocalhostrefers to the Android device itself. - Node Modules / Linking Issues:
Remove
node_modulesand re-run:rm -rf node_modules && npm install
Please read CONTRIBUTING.md for details on submitting issues and pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.





