Skip to main content
The Utexo SDK has current Web, React Native, and WDK (Node.js / Bare) packages. @utexo/rgb-sdk is archived. Choose the guide for your runtime before copying any initialization or payment code.

Node.js

New server-side applications using @utexo/wdk-rgb-lightning.

React Native

iOS and Android applications using @utexo/rgb-sdk-rn.

Web

Browser applications using @utexo/rgb-sdk-web.
The @utexo/rgb-sdk source repository was archived on July 28, 2026 and is read-only; its last committed package version is 1.0.0-beta.9. New Node.js integrations should use @utexo/wdk-rgb-lightning. The remaining packages share models from @utexo/rgb-sdk-core, but they do not expose an identical runtime API. Use the platform-specific guide and check the installed package version before copying code.

Platform API Differences

The Web and React Native packages implement a shared UTEXOWallet conformance contract. @utexo/wdk-rgb-lightning uses WDK manager/account types — do not copy UTEXOWallet method names into WDK code. The archived Node.js package uses its legacy wallet core; do not substitute onchainSend() for send() in that package.

How RGB Transfers Work

  1. The receiver generates a blinded or witness RGB invoice.
  2. The sender submits the invoice with the platform’s on-chain send method.
  3. Both wallets refresh their state while the transfer moves through the RGB and Bitcoin confirmation flow.
  4. The receiver verifies the asset balance after settlement.
All RGB state is validated client-side. The Bitcoin UTXO anchors the state transition; the transport service delivers consignments but does not replace client-side validation.
New to RGB or UTXOs? See the Glossary and Architecture.

Asset IDs and Amounts

listAssets() returns assets grouped by schema. NIA assets are in listAssets().nia, and the identifier field is assetId. amount values are integer base units. One displayed unit equals 10 ** precision base units; it is not always equal to 1.
A newly created receiver wallet will not discover an asset it has never received. Obtain the asset ID and precision from the funded sender wallet or another authoritative asset registry. The documentation does not publish a hard-coded test asset ID because no canonical ID is committed in the SDK repositories.

Lightning Payments

The Web and React Native packages use createLightningInvoice(), payLightningInvoice(), and getLightningSendStatus(). @utexo/wdk-rgb-lightning uses createInvoice() / createLightningInvoice() and sendPayment(). Omit the asset field when creating a BTC-only invoice on the application SDKs. Lightning payments also require usable peer and channel state. Wallet initialization alone does not create a channel or fund the node.

Network Selection

The hosted Web and React Native examples use the utexo network profile, which resolves to Utexo’s signet infrastructure. @utexo/wdk-rgb-lightning takes network plus explicit indexer/proxy (or bitcoind RPC) at unlock(). The archived Node.js package uses its package-specific testnet profile. Do not reuse a constructor or endpoint configuration across packages without checking the platform implementation.
Never use mainnet keys or real funds while following a Quickstart. Test and signet assets have no monetary value.

Implementation References

These files are the reviewed sources for the API distinctions above:

Common Prerequisites

  • A separate sender and receiver wallet for an end-to-end transfer
  • Bitcoin test funds for transaction fees
  • A funded sender that already holds the RGB asset being transferred
  • Secure mnemonic and password storage appropriate for the runtime
The platform guides cover package-specific initialization and method names. End-to-end settlement time depends on funding, channel state, transport availability, and Bitcoin confirmations.