A user wants to deposit USDC and earn 8% APY in crypto. Yield farming and staking are popular passive income methods. In practice, we face a choice: a custodial platform with centralized management, integration with a DeFi protocol (Aave, Compound, Yearn), or liquidity pools (Uniswap V3, Curve). The architectural decision is made at the very beginning and determines the entire development stack. We have implemented projects for all three scenarios — let's discuss the nuances.
How to Choose the Architecture for Crypto Savings?
Custodial. The user transfers crypto to the platform's wallet, and the platform manages the capital itself. The mobile app is classic fintech: REST API, JWT authentication, balance, transaction history, withdrawal. No Web3 on the client. Simple to develop, requires licenses and compliance.
DeFi Integration. The user directly interacts with a smart contract through their own non-custodial wallet. The mobile app becomes an interface to the protocol. Requires a Web3 stack: web3.swift / web3j, WalletConnect v2 for transaction signing. The user pays gas themselves.
Hybrid. The platform holds a smart account (Account Abstraction / ERC-4337), the user does not interact with keys directly. The platform sponsors gas through a Paymaster. Best UX of the three — the user is unaware of the blockchain.
| Characteristic | Custodial | DeFi Integration | Hybrid |
|---|---|---|---|
| Asset control | Platform | User | Smart account |
| Fees | Platform | User (+gas) | Platform (sponsors gas) |
| UX complexity | Low | High (needs ETH) | Low |
| Security | Centralized | Non-custodial | Key abstraction |
| Regulatory risk | High | Low | Medium |
Why the Hybrid Approach Has 2x Better Conversion Than Custodial?
Based on our data, hybrid apps show 40–60% higher deposit conversion than custodial ones, due to the absence of the "trust us" barrier. Meanwhile, DeFi integration without account abstraction scares away 70% of beginners because they need to buy ETH for gas. Hybrid is the sweet spot. For example, in one project users saved up to $0.50 per transaction thanks to gas sponsorship.
APY Dashboard and Real-Time Yield
The main screen of the app shows the current balance + accrued interest. Accrued interest must update in real time. This is a UX trick: the user sees the balance growing while looking at the screen. For a $10,000 deposit at 8% APY, monthly income is about $67 — these figures are displayed as an animated chart. For comparison, a $5,000 deposit in Yearn USDC Vault with 9% APY yields about $37 per month.
For DeFi protocols like Aave V3, interest is compounded continuously via aToken — a token whose balance automatically increases. We calculate the current balance via AToken.balanceOf(userAddress), calling every 30 seconds through JSON-RPC:
// Получение актуального баланса aToken через 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 the UI: balance in USD converted at the current rate. Rate — WebSocket from Binance or CoinGecko with 15-second caching.
Yield Strategies and Vaults
Yearn Finance-like products offer "strategies" — automatic allocation of funds between protocols for maximum APY. In the mobile app, this is a 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 — a separate screen with a calculator. The user must understand the risks before entering a liquidity pool. Without this, we do not release the app — it is a mandatory part of our work.
Withdrawals and Lock-Up Periods
Some strategies have lock-ups — funds cannot be withdrawn before a certain date. This must be shown explicitly before deposit. On the withdrawal screen — a progress bar with remaining time and unlock date.
Partial withdrawal is an important function. The user specifies the withdrawal amount, and the app calculates the number of shares for withdraw(shares, receiver, owner) according to ERC-4626 standard:
// ERC-4626 Vault: конвертация assets → shares const shares = await vault.convertToShares(assetsToWithdraw); const tx = await vault.withdraw(assetsToWithdraw, userAddress, userAddress); Push Notifications and Analytics
Weekly summary: how much earned that week, current APY. Push when significant APY change (>2%). Reminder when unlock date approaches.
Firebase Analytics to track the funnel — from registration to first deposit. This helps identify problematic UX steps.
Security
Detailed security measures
For custodial platforms — Keychain (iOS) / EncryptedSharedPreferences (Android) for session token storage. Biometric authentication for balance viewing and withdrawals. Withdrawal confirmation via email/SMS OTP in addition to biometrics.
For non-custodial — seed phrase is never stored in the app; only via WalletConnect or Hardware Wallet (Ledger Live SDK).
What Our Work Includes
We deliver the full package:
- Technical documentation: architecture choice, ERD, protocol integration scheme
- Source code for iOS and Android mobile apps with comments
- Server side (balances, APY, history) on Node.js/Python
- Integration with selected DeFi protocols (Aave, Compound, Uniswap, etc.)
- Push notifications via FCM/APNs
- Assistance with publishing on App Store and Google Play (review pass)
- Training of the client's team on code and infrastructure
- Support for 1 month after release
Order the development of a crypto savings mobile app today.
Stages and Timeline
- Analysis and architecture selection (1–2 weeks)
- Design and server side (2–3 weeks)
- DeFi integration (if required) (2–4 weeks)
- Mobile client iOS + Android (4–6 weeks)
- Notifications and KYC (1–2 weeks)
- Smart contract audit (1 week)
8–14 weeks depending on architecture. DeFi integration with multiple protocols and Vault strategies — closer to 14 weeks. Cost is calculated individually after requirements analysis. Get a consultation on architecture today — contact us, we will evaluate your project in one business day.







