For getting started with development read the setup development guide.
The Radix Wallet was originally developed under 2022/2023 using Xcode 13/14 using Swift 5.6, SwiftUI and The Composable Architecture (TCA).
We used to use SPM and have ~100 targets, but after 15 months of pain with it we switched to mono target, and saw an immediate 2x speedup in build time.
The Radix Wallet rests on several pillars:
- Profile: In the Radix Wallet the
Profile
is referred to as "wallet backup data", contains the list of all Accounts, Personas, Authorized Dapps, linked browsers, app settings and more. Securely stored in Keychain and by default backed-up to users iCloud Keychain. Also seeProfileStore
for the heart of the app, which manages creation, read and write ofProfile
. - Radix Connect: Technology for safe, decentralized peer-to-peer communication between the Radix Connector Extension and Radix Wallet, the underlying technology powering it is WebRTC.
- Swift Engine Toolkit: Swift wrapper around the Rust library Radix Engine Toolkit - RET used to compile transaction intents into SBOR that the wallet signs, analyze transaction manifests, calculate transaction hashes and much much more.
We make new releases using fastlane (see setup dev) which builds the app, uploads it to TestFlight and creates a new Github release.
We use SemVer, semantically versioning on format MAJOR.MINOR.PATCH
(with a "build #(BUILD)" suffix in UI).
Application version is specified in Common.xcconfig, and is shared between all targets with their respective .xcconfig
file.