Skip to main content

Recommended: JavaScript SDK for React Native

While this SDK is still supported, we recommend using newer JavaScript SDK, which is optimized for React Native, but also comes with a host of other benefits.
Bitcoin is exposed as a first-class module on the headless React Native client — dynamicClient.bitcoin — alongside dynamicClient.wallets, dynamicClient.auth, and the chain extensions. There is no separate BitcoinExtension to install: the module ships with @dynamic-labs/client and routes all calls through the embedded WebView, which already includes the Bitcoin wallet connectors and a BitcoinController that handles the bridge messages.

Checking if a wallet is a Bitcoin wallet

React Native
wallet.chain returns one of 'EVM' | 'SOL' | 'BTC' | 'SUI' | 'TON', so you can branch on it generically. To list every Bitcoin wallet the user has connected:
React Native

Configuring the client

Bitcoin support is enabled the moment you create the client; no extension is required. You may optionally pass bitcoinNetworks to override the dashboard network list (custom entries win on chainId conflicts).

The dynamicClient.bitcoin module

Every method takes a walletId (string) — typically read from wallet.id of a wallet you’ve already filtered by chain === 'BTC'.

Sign a message

signMessage accepts a protocol ('ecdsa' | 'bip322-simple') and an addressType ('payment' | 'ordinals'). When omitted, the connector chooses sensible defaults.
React Native

Get balance

React Native

Embedded vs external Bitcoin wallets

Connecting a Bitcoin wallet works the same as any other chain — once you’ve enabled Bitcoin connectors in the dashboard, users see them in the auth flow. You do not need to install or import @dynamic-labs/bitcoin in the React Native app; the connectors live inside the WebView SDK.
  • Embedded (MPC) Bitcoin wallets — derived from the same root entropy as the user’s other embedded wallets, but with a Bitcoin-specific derived key. The private key is never reconstructed in your app; signing happens through the MPC ceremony.
  • External Bitcoin wallets — Phantom, Unisat, Xverse (sats-connect), OKX, OneKey, MagicEden, Bitget, Binance, Oyl, plus a fallback connector. The signing protocol depends on the connector — signMessage’s protocol parameter respects what the underlying wallet supports.
A single user session can hold multiple wallets across chains. Filter by wallet.chain to find the right one.

Examples

  • Send Bitcoin — high-level transfer using dynamicClient.bitcoin.sendBitcoin.
  • Sign and broadcast a PSBT — work with PSBTs directly via buildPsbt, signPsbt, signPsbts, and sendRawTransaction.
Last modified on July 24, 2026