Skip to main content
The @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.
React Native (iOS and Android) only. New Architecture (TurboModule Rgb) is required. For Node.js use @utexo/wdk-rgb-lightning; for browsers use @utexo/rgb-sdk-web.Beta release — APIs may change between releases.

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 UTEXOWallet instance without recreating it
  • VSS encrypted remote backup of LDK state

Installation

iOS Setup

The native framework (RGBLightningNode.xcframework) is downloaded during postinstall.

Android Setup

Requires minSdkVersion 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

xpubs and master fingerprint are not constructor fields. The signer supplies key material at init().

UTEXOWalletNodeParams

Signers

Pass a signer to the UTEXOWallet constructor. On the first init() the wallet calls initNode; on every later unlock() or reinit() it calls unlockNode. 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().
All unlock fields are optional. Omit any field to use the network default. Electrum mode does not need the bitcoind RPC fields.

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 minimum amountSat) in onchainSend().
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

BTC-only invoices can omit asset or pass an empty assetId. For RGB, pass asset: { assetId, amount }.

Full Cleanup

VSS — Encrypted Remote Backup

Set vssUrl 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. Covers UTEXOWallet lifecycle, both signers, reinit(), VSS, and APay.

Further Reading