Crypto Savings Mobile App Development
User wants to deposit USDC and earn 8% annually in crypto. Simple. In reality — either custodial platform with centralized management (Nexo-like), or DeFi protocol integration (Aave, Compound, Yearn), or liquidity pools (Uniswap V3, Curve). Architectural decision made at start determines entire development stack.
Three Architectures and Mobile Implications
Custodial. User transfers crypto to platform wallet, platform manages capital. Mobile app — classic fintech: REST API, JWT auth, balance, transaction history, withdrawals. No Web3 on client. Simple development, requires license and compliance.
DeFi integration. User directly interacts with smart contract via own non-custodial wallet. Mobile app becomes protocol interface. Needs Web3 stack: web3.swift / web3j, WalletConnect v2 for transaction signing. User pays gas.
Hybrid. Platform holds smart account (Account Abstraction / ERC-4337), user doesn't interact with keys directly. Platform sponsors gas via Paymaster. Best UX of three — user unaware of blockchain.
APY Dashboard and Real-time Earnings
Main app screen — current balance + accrued interest. Accrued interest must update in real time, not once per hour. UX trick that works: user sees balance grow while watching.
For DeFi protocols Aave V3 interest accrues continuously via aToken — token whose balance automatically grows. Calculate current balance via AToken.balanceOf(userAddress), call every 30 seconds via JSON-RPC:
// Fetch current aToken balance via web3.swift
class AaveBalanceService {
let web3 = Web3(rpcURL: "https://mainnet.infura.io/v3/YOUR_KEY")
func fetchATokenBalance(userAddress: EthereumAddress, aTokenAddress: EthereumAddress) async throws -> BigUInt {
let contract = try web3.eth.Contract(json: aTokenABI, abiKey: nil, address: aTokenAddress)
let result = try await contract["balanceOf"]?(userAddress).call()
return result?["_balance"] as? BigUInt ?? 0
}
}
On UI: balance in USD with current rate conversion. Rate — Binance WebSocket or CoinGecko with 15-second caching.
Yield Strategies and Vaults
Yearn-like products offer "strategies" — automatic capital reallocation between protocols for max APY. In mobile app looks like list of deposits with different risk and yield:
| Strategy | APY | Risk | Base Asset |
|---|---|---|---|
| Aave USDC Supply | 4.2% | Low | USDC |
| Curve 3pool LP | 6.8% | Medium | USDC/USDT/DAI |
| Yearn USDC Vault | 9.1% | Medium | USDC |
| Uniswap V3 USDC/ETH | 14–40% | High (IL) | USDC + ETH |
Impermanent Loss for LP positions — separate screen with calculator. User must understand risks before entering liquidity pool.
Withdrawals and Lock-up Periods
Some strategies have lock-up — can't withdraw before certain date. Must show explicitly before deposit, not in footnote. On withdrawal screen — progress bar with remaining time and unlock date.
Partial withdrawal — important feature. User specifies amount, app calculates shares / tokens for withdraw(shares, receiver, owner) by ERC-4626 standard:
// ERC-4626 Vault: convert assets → shares
const shares = await vault.convertToShares(assetsToWithdraw);
const tx = await vault.withdraw(assetsToWithdraw, userAddress, userAddress);
Push Notifications and Analytics
Weekly summary: earned this week, current APY. Push on significant APY change (>2%). Reminder when unlock date approaching.
Firebase Analytics track funnel: registration to first deposit. Helps find problematic UX steps.
Security
For custodial platforms — Keychain (iOS) / EncryptedSharedPreferences (Android) for session token. Biometric auth to view balance and withdraw. Withdrawal confirmation via email/SMS OTP additionally to biometrics.
For non-custodial — seed phrase never stored in app; only via WalletConnect or Hardware Wallet (Ledger Live SDK).
Timeline and Stages
Choose architecture → server layer (balances, APY, history) → DeFi integration if needed → mobile client iOS + Android → notifications → KYC if custodial → smart contract audit.
8–14 weeks depending on architecture. DeFi integration with multiple protocols and Vault strategies — closer to 14 weeks. Cost calculated individually after requirements analysis.







