@utexo/rgb-sdk-rn package is the React Native SDK for iOS and Android. It embeds a full RGB Lightning Node (RLN) on-device — a native LDK node that runs locally.
What You Can Do
- Run a full Lightning node on-device via RLN
- Open Lightning channels and send/receive BTC or RGB asset payments
- LSP integration: receive RGB via Lightning, send RGB to on-chain recipients, Lightning Address
- Async payments (APay) and virtual channels
- Issue, transfer, and manage RGB assets (NIA, CFA, IFA, UDA)
- Manage UTXOs and on-chain BTC sends
- Use a hardware-wallet-style external signer or a password signer
- Restart the node on the same
UTEXOWalletinstance without recreating it - VSS encrypted remote backup of LDK state
Installation
iOS Setup
The native framework (RGBLightningNode.xcframework) is downloaded during postinstall.
Android Setup
RequiresminSdkVersion 24. The native binding (com.utexo:rgb-lightning-node-android) resolves from Maven Central — no extra repository configuration.
At unlock time the node needs an Electrum indexer and/or bitcoind RPC, plus an RGB proxy. Known networks supply defaults.
Primary Class: UTEXOWallet
UTEXOWallet implements IUTEXOProtocol, owns the on-device RLN lifecycle, and abstracts both signer types. The mnemonic and password live on the signer, not on the config object.
Construction
init().
UTEXOWalletNodeParams
Signers
Pass a signer to theUTEXOWallet constructor. On the first init() the wallet calls initNode; on every later unlock() or reinit() it calls unlockNode.
NativeExternalRLNSigner (recommended)
Native hardware-style external signer. Keys stay in the device key store. Accepts a mnemonic or raw BIP39 seed bytes.
PasswordRLNSigner
Password-based auth. The mnemonic is only needed for the first init() (written to disk), then cleared from memory.
Lifecycle
initialize() is an alias for init(). reinit(params) is shutdown() + init() + unlock() on the same instance. dispose() aliases destroy().
IRLNUnlockParams
Utexo Network Faucet — Test BTC and RGB assets on the Utexo network: Telegram bot @Utexo_RLN_bot.
Limited to 2 requests per 24 hours per user.
Method Reference
Balance & Address
getXpub() is not on this SDK. Use getNodeInfo() for node identity.
UTXO Management
Call
syncWallet() after funding and again after createUtxos() before RGB operations.RGB Assets
RGB receive supports two invoice styles:- Blinded invoice — most common. The receiver creates a blinded endpoint; the sender pays directly.
- Witness invoice — the receiver binds the transfer to witness data. The sender must provide
witnessData(at minimumamountSat) inonchainSend().
onchainReceive() is the IUTEXOProtocol entry point (witness by default; witness: false for blinded). blindReceive() and witnessReceive() remain as the underlying primitives. There is no send() — use onchainSend().
BTC Sends
Transactions & Transfers
Fees & Backup
Lightning
Do not poll Lightning with RGB transfer statuses (
WaitingCounterparty / Settled).
LSP & Async payments (APay)
createLsp() must run before init() / reinit(). The no-arg form discovers the peer from lspBaseUrl (or the network default) via GET /get_info and wires virtual channels (enableVirtualChannelsV0: true + LSP pubkey in virtualPeerPubkeys).
See docs/lsp.md and docs/async-payments.md.
Node Info, Peers & Channels
Core Workflows
First-Time Wallet Init
App Restart (Existing Node)
Issue an RGB Asset
Open a Lightning Channel
Lightning Payment
asset or pass an empty assetId. For RGB, pass asset: { assetId, amount }.
Full Cleanup
VSS — Encrypted Remote Backup
SetvssUrl on the constructor. VSS syncs LDK state while the node runs.
Restore on a new device: same VSS URL and credentials, empty storageDirPath, then vssClearFence() after init() and before unlock().
backupNow() forces an upload and returns the new version. The web-only configureVssBackup / vssBackup / vssBackupInfo methods are not on this SDK.
LSP Integration
Standalone Helpers
RLN Manager (Advanced)
RLNManager and createRLNManager expose the raw RLN node API without the UTEXOWallet wrapper.
Demo App
Full demo: rgb-sdk-rn-demo. CoversUTEXOWallet lifecycle, both signers, reinit(), VSS, and APay.