Skip to content

Latest commit

 

History

History
29 lines (22 loc) · 2.21 KB

DEVELOPMENT.md

File metadata and controls

29 lines (22 loc) · 2.21 KB

Setup development

For getting started with development read the setup development guide.

Architecture

The Radix Wallet was originally developed under 2022/2023 using Xcode 13/14 using Swift 5.6, SwiftUI and The Composable Architecture (TCA).

Mono-target

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 see ProfileStore for the heart of the app, which manages creation, read and write of Profile.
  • 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.

Releasing

We make new releases using fastlane (see setup dev) which builds the app, uploads it to TestFlight and creates a new Github release.

Versioning

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.