
Wallet UI and headless engine delivering ready account onboarding (Algo25, Universal HD, Falcon24), QR imports, theme customization, network switching, encrypted key storage, passphrase management and localization.
This mobile utils library project provides common wallet UI components and screens out of the box, allowing native developers to skip building standard wallet functionality and focus more on unique, value-added features for their mobile applications.
Add the following to your build.gradle.kts:
dependencies {
implementation("com.michaeltchuang.algokit.walletsdk:wallet-sdk-ui:3.202601.8")
implementation("com.michaeltchuang.algokit.walletsdk:wallet-sdk-core:3.202601.8")
}Note: Check Maven Central for the latest versions: wallet-sdk-ui | wallet-sdk-core
---
title: AlgoKit Wallet SDK High Level Overview
---
graph TD
subgraph "Algorand Apps"
App1["App 1"]
App2["App 2"]
end
subgraph wallet["AlgoKit Wallet SDK"]
SDK1["Wallet SDK Service<br/>(Android Only)"]
SDK2["Wallet SDK UI<br/>(Embedded Wallet UI)"]
SDK3["Wallet SDK Core<br/>(Headless Wallet Engine)"]
end
subgraph "Algorand SDKs"
Core["AlgoKit-Core Rust SDK"]
xHD["Algo xHD Kotlin/Swift SDK"]
JavaSDK["Algo Java SDK"]
GoSDK["Algo Go SDK"]
end
App1 <--> wallet
App2 <--> wallet
SDK1 <--> SDK2
SDK2 <--> SDK3
SDK3 <--> Core
SDK3 <--> xHD
SDK3 <--> JavaSDK
SDK3 <--> GoSDKThe demo apps (Android & iOS) in this repo demonstrate wallet-sdk library usage through a simplified "Pera-lite" sample wallet application. Current and planned features include:
AlgoKit Wallet SDK currently uses UI theming inspired by Pera Android as a placeholder until official Algorand Foundation branding guidelines are available.
---
config:
theme: 'neutral'
---
timeline
title AlgoKit Wallet SDK tentative roadmap
section Completed ✅
2025Q3 : ✅ Create sample KMP app ("Pera Lite")
: ✅ Onboarding - Create Algo25/HD/Falcon24 wallet and account flow
: ✅ Onboarding - Recover Algo25/Falcon24 account flow
: ✅ Deeplink - Import Algo25/Falcon24 account using QR code flow
: ✅ Settings - Theme picker and network switcher flow
: ✅ Onboarding - Embedded and external webview flow
: ✅ Account Details - View passphrase flow
: ✅ Onboarding - Encrypt secret keys in DB
: ✅ GitOps - Setup Maven Central for library releases
: ✅ Transaction - Sign KeyReg online/offline flow with QR code
2025Q4 : ✅ Transaction - Send Algo using account detail or QR code flows (between accounts)
: ✅ Account Details - Add copy and show address button
: ✅ Account Details - Add testnet dispenser and transaction history links
: ✅ GitOps - Setup stores for demo Android/iOS app releases
: ✅ GitOps - CLA agreement bot
: ✅ Onboarding - Add Watch accounts support
: ✅ Onboarding - Recover HD account flow
: ✅ Settings - Localization (English, Italian, Hindi)
: ✅ Testing - Setup unit test coverage and screenshot testing foundation infrastructure
: ✅ Onboarding - ECC Passkeys & Testnet Liquid Auth (Android)
section In Progress 🔄
2026Q1 : ✅ Onboarding - ECC Passkeys & Liquid Auth (iOS)
: ✅ Transaction - Integrate new algokit-transact rust library (iOS)
: ✅ Android - Wallet SDK as a background service integration
: ✅ Onboarding - Upgrade Liquid Auth service to support PQ accounts (Web)
: ✅ Transaction - Opt-In / Opt-Out USDC QR flow
: ✅ Transaction - Send USDC using QR code flow (between accounts)
: ✅ Onboarding - Re-enable Use-Wallet Liquid Auth functionality (Non-Rekey Accounts)
: ✅ Onboarding - Add Use Wallet Liquid Auth Integration for Lora
: 🔄 Onboarding - Integrate new algokit-crypto rust library (iOS/Android)
: Onboarding - Add Liquid Auth Integration for xGov Website
section Future
2026Q2 : GitOps - Fix dependencies for new 16KB Android requirement
: Seed Vault - Sign test transactions using Seed Vault in emulator app
: Seed Vault - Modify Seed Vault emulator to allow Algorand seeds
: Seed Vault - Sign Liquid Auth using Algorand seeds
: Seed Vault - Sign Liquid Auth using cross-chain seeds
: Seed Vault - Integrate Use-Wallet with cross-chain seeds
: Design - Create Landscape (Tablet/Desktop) UI
: TBD
Backlog
: Onboarding - Rekey flow
: Onboarding - Mainnet Liquid Auth (Rekey Accounts)
: Research - React Native sample app talking to service
: Onboarding - PQ Passkeys
: Onboarding - Ledger flow
: Account Details - Asset Inbox
: Onboarding - Fun app animations
: Onboarding - Multi-sig flow
: Account Details - Send USDC in account detail (between accounts)
: Settings - Localization (Chinese, Spanish, French, Portuguese, Japanese, Korean, German)This repo has the following modules:
wallet-sdk usage. This app on Android also contains a service that provides a headless way for other android applications on the same device to share the same wallet-sdk-core wallet-sdk-ui instance (using AIDL).composeSampleApp. Open this module in Xcode if needed.This project is developed using Android Studio (stable version) and the Kotlin Multiplatform Plugin. As a mobile development project, it is primarily developed on macOS, support for Windows and Linux is quite limited. We also follow the KMP compatibility guide.
Record/Generate Reference Images:
./gradlew :wallet-sdk-ui:executeScreenshotTests -PrecordThis command will run all screenshot tests and save the captured screenshots as reference images.
./gradlew :wallet-sdk-ui:executeScreenshotTests -Pandroid.testInstrumentationRunnerArguments.class=com.michaeltchuang.walletsdk.ui.settings.screens.PasskeysScreenshotTest -PrecordThis command will run screenshot tests for a single class and save the captured screenshots as reference images.
Verify Screenshots:
./gradlew :wallet-sdk-ui:executeScreenshotTestsThis command will run the tests and compare current screenshots against the previously recorded reference images. If there are differences, the test will fail and generate a comparison report.
Screenshot Default Storage Location:
wallet-sdk-ui/screenshots/debug/*.pngNote: Screenshot tests require an Android device or emulator to be connected.
Interactive Screenshot Viewer:
View all Wallet SDK screens with an interactive gallery that allows you to filter by locale (English, Hindi, Italian), theme (Dark/Light), and view various user flows. Open Screenshot Gallery →
---
title: AlgoKitDatabase
---
erDiagram
custom_account_info {
String algo_address PK
String custom_name
Int order_index
Boolean is_backed_up
}
custom_hd_seed_info {
Int seed_id PK,FK
String entropy_custom_name
Int order_index
Boolean is_backed_up
}
algo_25 {
String algo_address PK
ByteArray encrypted_secret_key
}
ledger_ble {
String algo_address PK
String device_mac_address
Int account_index_in_ledger
String bluetooth_name
}
no_auth {
String algo_address PK
}
hd_seeds {
Int seed_id PK
ByteArray encrypted_entropy UK
ByteArray encrypted_seed UK
}
falcon_24 {
String algo_address PK
Int seed_id FK
ByteArray public_key UK
ByteArray encrypted_secret_key
}
hd_keys {
String algo_address PK
ByteArray public_key UK
ByteArray encrypted_private_key
Int seed_id FK
Int account
Int change
Int key_index
Int derivation_type
}
sites {
Long id PK
String url UK
String name
}
passkey_table {
String credential_id PK
Long site_id FK
String algo_address
String user_id
String user_name
String user_display_name
Long last_used_time_ms
}
custom_hd_seed_info }|--|| hd_seeds : link
hd_keys }|--|| hd_seeds : link
falcon_24 }|--|| hd_seeds : link
passkey_table }|--|| sites : linkDevelopment happens in this open source repo for the AlgoKit Wallet SDK. Algorand community is always welcome to contribute by reviewing or opening new pull requests.
This project is tested with BrowserStack (open source license).
For QR code importing, you can use a tool like Cyber Chef to get QR codes online
{
"mnemonic": "define claw hungry wave umbrella boost blind never muscle also grab gaze fluid echo predict describe turkey unaware dash phone urge crunch eyebrow abstract team"
}algorand://ANUR5SYMURBFD3ELITINYNTHVAKKBCWJ7LGHJRPMQM3KQG25ENMIHYEBNY?type=keyreg
algorand://?amount=0&asset=10458941
algorand://7N54HZSGBRQF7FW6YNC6F5H42AT5OXN3F5OQDAXF6H6PDFHNXIEBCJFHOY?amount=1000000¬e=1_ALGO_Transfer
algorand://7N54HZSGBRQF7FW6YNC6F5H42AT5OXN3F5OQDAXF6H6PDFHNXIEBCJFHOY?amount=1000000&asset=10458941¬e=1_ALGO_Transfer
liquid://michaeltchuang.ngrok.dev/?requestId=019c3ff0-70fd-7663-823b-2ce5bbc5fca6
This mobile utils library project provides common wallet UI components and screens out of the box, allowing native developers to skip building standard wallet functionality and focus more on unique, value-added features for their mobile applications.
Add the following to your build.gradle.kts:
dependencies {
implementation("com.michaeltchuang.algokit.walletsdk:wallet-sdk-ui:3.202601.8")
implementation("com.michaeltchuang.algokit.walletsdk:wallet-sdk-core:3.202601.8")
}Note: Check Maven Central for the latest versions: wallet-sdk-ui | wallet-sdk-core
---
title: AlgoKit Wallet SDK High Level Overview
---
graph TD
subgraph "Algorand Apps"
App1["App 1"]
App2["App 2"]
end
subgraph wallet["AlgoKit Wallet SDK"]
SDK1["Wallet SDK Service<br/>(Android Only)"]
SDK2["Wallet SDK UI<br/>(Embedded Wallet UI)"]
SDK3["Wallet SDK Core<br/>(Headless Wallet Engine)"]
end
subgraph "Algorand SDKs"
Core["AlgoKit-Core Rust SDK"]
xHD["Algo xHD Kotlin/Swift SDK"]
JavaSDK["Algo Java SDK"]
GoSDK["Algo Go SDK"]
end
App1 <--> wallet
App2 <--> wallet
SDK1 <--> SDK2
SDK2 <--> SDK3
SDK3 <--> Core
SDK3 <--> xHD
SDK3 <--> JavaSDK
SDK3 <--> GoSDKThe demo apps (Android & iOS) in this repo demonstrate wallet-sdk library usage through a simplified "Pera-lite" sample wallet application. Current and planned features include:
AlgoKit Wallet SDK currently uses UI theming inspired by Pera Android as a placeholder until official Algorand Foundation branding guidelines are available.
---
config:
theme: 'neutral'
---
timeline
title AlgoKit Wallet SDK tentative roadmap
section Completed ✅
2025Q3 : ✅ Create sample KMP app ("Pera Lite")
: ✅ Onboarding - Create Algo25/HD/Falcon24 wallet and account flow
: ✅ Onboarding - Recover Algo25/Falcon24 account flow
: ✅ Deeplink - Import Algo25/Falcon24 account using QR code flow
: ✅ Settings - Theme picker and network switcher flow
: ✅ Onboarding - Embedded and external webview flow
: ✅ Account Details - View passphrase flow
: ✅ Onboarding - Encrypt secret keys in DB
: ✅ GitOps - Setup Maven Central for library releases
: ✅ Transaction - Sign KeyReg online/offline flow with QR code
2025Q4 : ✅ Transaction - Send Algo using account detail or QR code flows (between accounts)
: ✅ Account Details - Add copy and show address button
: ✅ Account Details - Add testnet dispenser and transaction history links
: ✅ GitOps - Setup stores for demo Android/iOS app releases
: ✅ GitOps - CLA agreement bot
: ✅ Onboarding - Add Watch accounts support
: ✅ Onboarding - Recover HD account flow
: ✅ Settings - Localization (English, Italian, Hindi)
: ✅ Testing - Setup unit test coverage and screenshot testing foundation infrastructure
: ✅ Onboarding - ECC Passkeys & Testnet Liquid Auth (Android)
section In Progress 🔄
2026Q1 : ✅ Onboarding - ECC Passkeys & Liquid Auth (iOS)
: ✅ Transaction - Integrate new algokit-transact rust library (iOS)
: ✅ Android - Wallet SDK as a background service integration
: ✅ Onboarding - Upgrade Liquid Auth service to support PQ accounts (Web)
: ✅ Transaction - Opt-In / Opt-Out USDC QR flow
: ✅ Transaction - Send USDC using QR code flow (between accounts)
: ✅ Onboarding - Re-enable Use-Wallet Liquid Auth functionality (Non-Rekey Accounts)
: ✅ Onboarding - Add Use Wallet Liquid Auth Integration for Lora
: 🔄 Onboarding - Integrate new algokit-crypto rust library (iOS/Android)
: Onboarding - Add Liquid Auth Integration for xGov Website
section Future
2026Q2 : GitOps - Fix dependencies for new 16KB Android requirement
: Seed Vault - Sign test transactions using Seed Vault in emulator app
: Seed Vault - Modify Seed Vault emulator to allow Algorand seeds
: Seed Vault - Sign Liquid Auth using Algorand seeds
: Seed Vault - Sign Liquid Auth using cross-chain seeds
: Seed Vault - Integrate Use-Wallet with cross-chain seeds
: Design - Create Landscape (Tablet/Desktop) UI
: TBD
Backlog
: Onboarding - Rekey flow
: Onboarding - Mainnet Liquid Auth (Rekey Accounts)
: Research - React Native sample app talking to service
: Onboarding - PQ Passkeys
: Onboarding - Ledger flow
: Account Details - Asset Inbox
: Onboarding - Fun app animations
: Onboarding - Multi-sig flow
: Account Details - Send USDC in account detail (between accounts)
: Settings - Localization (Chinese, Spanish, French, Portuguese, Japanese, Korean, German)This repo has the following modules:
wallet-sdk usage. This app on Android also contains a service that provides a headless way for other android applications on the same device to share the same wallet-sdk-core wallet-sdk-ui instance (using AIDL).composeSampleApp. Open this module in Xcode if needed.This project is developed using Android Studio (stable version) and the Kotlin Multiplatform Plugin. As a mobile development project, it is primarily developed on macOS, support for Windows and Linux is quite limited. We also follow the KMP compatibility guide.
Record/Generate Reference Images:
./gradlew :wallet-sdk-ui:executeScreenshotTests -PrecordThis command will run all screenshot tests and save the captured screenshots as reference images.
./gradlew :wallet-sdk-ui:executeScreenshotTests -Pandroid.testInstrumentationRunnerArguments.class=com.michaeltchuang.walletsdk.ui.settings.screens.PasskeysScreenshotTest -PrecordThis command will run screenshot tests for a single class and save the captured screenshots as reference images.
Verify Screenshots:
./gradlew :wallet-sdk-ui:executeScreenshotTestsThis command will run the tests and compare current screenshots against the previously recorded reference images. If there are differences, the test will fail and generate a comparison report.
Screenshot Default Storage Location:
wallet-sdk-ui/screenshots/debug/*.pngNote: Screenshot tests require an Android device or emulator to be connected.
Interactive Screenshot Viewer:
View all Wallet SDK screens with an interactive gallery that allows you to filter by locale (English, Hindi, Italian), theme (Dark/Light), and view various user flows. Open Screenshot Gallery →
---
title: AlgoKitDatabase
---
erDiagram
custom_account_info {
String algo_address PK
String custom_name
Int order_index
Boolean is_backed_up
}
custom_hd_seed_info {
Int seed_id PK,FK
String entropy_custom_name
Int order_index
Boolean is_backed_up
}
algo_25 {
String algo_address PK
ByteArray encrypted_secret_key
}
ledger_ble {
String algo_address PK
String device_mac_address
Int account_index_in_ledger
String bluetooth_name
}
no_auth {
String algo_address PK
}
hd_seeds {
Int seed_id PK
ByteArray encrypted_entropy UK
ByteArray encrypted_seed UK
}
falcon_24 {
String algo_address PK
Int seed_id FK
ByteArray public_key UK
ByteArray encrypted_secret_key
}
hd_keys {
String algo_address PK
ByteArray public_key UK
ByteArray encrypted_private_key
Int seed_id FK
Int account
Int change
Int key_index
Int derivation_type
}
sites {
Long id PK
String url UK
String name
}
passkey_table {
String credential_id PK
Long site_id FK
String algo_address
String user_id
String user_name
String user_display_name
Long last_used_time_ms
}
custom_hd_seed_info }|--|| hd_seeds : link
hd_keys }|--|| hd_seeds : link
falcon_24 }|--|| hd_seeds : link
passkey_table }|--|| sites : linkDevelopment happens in this open source repo for the AlgoKit Wallet SDK. Algorand community is always welcome to contribute by reviewing or opening new pull requests.
This project is tested with BrowserStack (open source license).
For QR code importing, you can use a tool like Cyber Chef to get QR codes online
{
"mnemonic": "define claw hungry wave umbrella boost blind never muscle also grab gaze fluid echo predict describe turkey unaware dash phone urge crunch eyebrow abstract team"
}algorand://ANUR5SYMURBFD3ELITINYNTHVAKKBCWJ7LGHJRPMQM3KQG25ENMIHYEBNY?type=keyreg
algorand://?amount=0&asset=10458941
algorand://7N54HZSGBRQF7FW6YNC6F5H42AT5OXN3F5OQDAXF6H6PDFHNXIEBCJFHOY?amount=1000000¬e=1_ALGO_Transfer
algorand://7N54HZSGBRQF7FW6YNC6F5H42AT5OXN3F5OQDAXF6H6PDFHNXIEBCJFHOY?amount=1000000&asset=10458941¬e=1_ALGO_Transfer
liquid://michaeltchuang.ngrok.dev/?requestId=019c3ff0-70fd-7663-823b-2ce5bbc5fca6