Gem Wallet is a production-grade, self-custodial multi-chain cryptocurrency wallet for iOS (and partially macOS), built entirely with SwiftUI and heavily modularized via Swift Package Manager. The system manages private keys securely via the Keychain and WalletCore, supports 40+ blockchains (Bitcoin, Ethereum, Solana, Cosmos, TON, etc.), and provides full DeFi capabilities: token transfers with fee estimation and simulation, token swaps with provider selection and price impact analysis, staking with delegation and rewards, perpetual trading (Hyperliquid) with leverage and position management, fiat on/off-ramp through third-party providers, NFT viewing and management, WalletConnect dApp connections, price alerts, and a home-screen price widget. Architecture follows an MVVM pattern with protocol-oriented service layers, a centralized dependency injection container (AppResolver), and local persistence via GRDB (SQLite) backed by observable queries for reactive UI updates. Network communication uses a custom HTTP client with device-signed requests and WebSocket streams for real-time balances, prices, and notifications. The codebase is unusually well-tested with dedicated TestKit targets providing mock services for every major component, and extensive unit, UI, and snapshot tests. Despite its size (40+ packages), the modular boundaries are well-observed, with clear abstractions for signing, chain services, and UI components. The project relies on a Rust binary framework (Gemstone) for core blockchain logic, which introduces a build dependency but is managed via a regenerate script. Overall, this is a highly professional, actively maintained iOS application with strong engineering practices.
This repository is the Tonhub Wallet, a non‑custodial mobile cryptocurrency wallet for the TON blockchain with additional Solana support. It is a full‑featured wallet that supports multi‑account management, token transfers (jettons), staking (liquid staking, native pools), hardware wallet integration (Ledger), a dApp browser using TonConnect v2, and financial products such as the Holders card program and Changelly exchange. The application also includes an AI chat assistant for transaction markup and operations, push notifications via Firebase, and deep‑link navigation for seamless URL handling. Built using React Native and Expo, the codebase is structured around a fragment‑based screen architecture, with custom hooks and React Query for data fetching, Recoil for state management, and a centralized query key factory. Despite its breadth, the codebase exhibits well‑defined separation of concerns with reusable UI components (e.g., ItemButton, RoundButton, WImage) and data patterns (e.g., batched metadata fetching, structural sharing for transaction lists). However, there are signs of technical drift, such as hardcoded endpoints, some deprecated library usage, and platform‑specific native modules that require ongoing maintenance.