> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sui integration

The `@dynamic-labs/sui-extension` integrates your application with the Sui blockchain, providing a `SuiClient` and `Signer` to interact with the Sui network.

### Installation

To install the Sui extension, run the following command:

```
npm install @dynamic-labs/sui-extension
```

### Setup

Incorporate the Sui extension into your client using the extend method to add getSigner, getNetworkUrl, and getNetworkName methods:

```ts theme={"system"}
import { createClient } from '@dynamic-labs/client'
import { SuiExtension } from '@dynamic-labs/sui-extension'

/**
 * Creates and extends the client with Sui blockchain functionality.
 */
export const dynamicClient = createClient({
  environmentId: 'YOUR-ENVIRONMENT-ID',
}).extend(SuiExtension())
```

Also please refer to the [Polyfills](/react-native/reference/polyfills) section for information on how to set up necessary polyfills.

### Usage

After setup, you can interact with the Sui blockchain. Below is an example of a component that sends SUI tokens to a specified wallet address:

```tsx theme={"system"}
import { Button } from 'react-native'
import { FC } from 'react'
import { dynamicClient } from '<path to client file>'

import { Transaction } from '@mysten/sui/transactions'
import { SuiClient } from '@mysten/sui.js/client'

interface SendSuiButtonProps {
  destinationAddress: string
  amount: string
}

/**
 * Renders a button that sends SUI to a given address.
 */
const SendSuiButton: FC<SendSuiButtonProps> = ({ destinationAddress, amount }) => {
  const send = async () => {
    const wallet = dynamicClient.wallets.primary

    if (!wallet) return

    const networkUrl = await dynamicClient.sui.getNetworkUrl({ walletId: wallet.id })
    const suiClient = new SuiClient({ url: networkUrl })
    const signer = dynamicClient.sui.getSigner({ wallet })

    const transferTransaction = new Transaction()

    transferTransaction.setSender(wallet.address)

    const [coin] = transferTransaction.splitCoins(transferTransaction.gas, [
      BigInt(amount) * BigInt(1000000000) // Convert to MIST (SUI's smallest unit)
    ])

    transferTransaction.transferObjects([coin], destinationAddress)

    const { signature } = await signer.signTransaction(transferTransaction)

    const txBytes = await transferTransaction.build({ client: suiClient })

    const { digest } = await suiClient.executeTransactionBlock({
      transactionBlock: txBytes,
      signature,
    })

    console.log('Successful transaction digest:', digest)
  }

  return <Button title="Send SUI" onPress={send} />
}
```

### Chain Support

Sui support is available for React Native applications as of v4.26.0. This enables:

* Wallet connection and management for Sui wallets
* Transaction signing and execution
* Integration with Sui dApps and protocols
* Support for embedded wallets on Sui network

### Configuration

To enable Sui support in your Dynamic configuration, make sure to:

1. Enable Sui chain in your Dynamic dashboard
2. Configure Sui network settings as needed
3. Install and configure the Sui extension as shown above

For more information about enabling chains and networks, see the [enabling chains guide](/react-native/chains/enabling-chains).
