> ## 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.

# Adding Extensions

> Add chain wallet and addon support to your Dynamic client with extensions

Before you can connect wallets or use chain-specific APIs, you add **extensions** to your Dynamic client. Each extension enables a different way to discover and connect wallets for a given chain. There are only two kinds of wallet: **embedded** (Dynamic-created, user-owned) and **external** (user brings their own, e.g. MetaMask, Phantom).

## Prerequisites

Before this: create a Dynamic client (see [Creating a Dynamic Client](/javascript/reference/client/create-dynamic-client))

## Chains

Add the extension for each chain you support. You need at least one extension per chain.

| Chain                                   | Extension page                                                                        |
| --------------------------------------- | ------------------------------------------------------------------------------------- |
| **EVM** (Ethereum, Polygon, Base, etc.) | [Adding EVM Extensions](/javascript/reference/evm/adding-evm-extensions)              |
| **Solana**                              | [Adding Solana Extensions](/javascript/reference/solana/adding-solana-extensions)     |
| **Sui**                                 | [Adding Sui Extension](/javascript/reference/sui/adding-sui-extension)                |
| **TON**                                 | [Adding TON Extension](/javascript/reference/ton/adding-ton-extension)                |
| **Aptos**                               | [Adding Aptos Extension](/javascript/reference/aptos/adding-aptos-extension)          |
| **Bitcoin**                             | [Adding Bitcoin Extension](/javascript/reference/bitcoin/adding-bitcoin-extension)    |
| **Tron**                                | [Adding Tron Extension](/javascript/reference/tron/adding-tron-extension)             |
| **Starknet**                            | [Adding Starknet Extension](/javascript/reference/starknet/adding-starknet-extension) |

## Addons

Addons extend a chain with extra capabilities (e.g. gas sponsorship). Add the chain extension first, then the addon.

| Addon                                          | Extends | Extension page                                                                     |
| ---------------------------------------------- | ------- | ---------------------------------------------------------------------------------- |
| **ZeroDev** (gasless / sponsored transactions) | EVM     | [Adding ZeroDev Extension](/javascript/reference/zerodev/adding-zerodev-extension) |

## Order of setup

1. Create your client - see [Creating a Dynamic Client](/javascript/reference/client/create-dynamic-client)
2. Add the extensions you need (e.g. `addEvmExtension()`, `addZerodevExtension()`).
3. Initialize the client - see [Initializing the Dynamic Client](/javascript/reference/client/initialize-dynamic-client).

Extensions are typically added right after creating the client and before initialization. See each chain’s “Adding …” page for exact import and call order.

<Note>
  **React:** Add extensions in the same module where you create your client (e.g. `dynamicClient.ts`), after `createDynamicClient` and before `initializeClient`. Since this module is imported once at app startup, the extensions are registered before any component renders.
</Note>

## Next

* [Initializing the Dynamic Client](/javascript/reference/client/initialize-dynamic-client) — Initialize after adding extensions.
* [Connecting and Verifying a Wallet](/javascript/reference/wallets/connect-and-verify-wallet) — Use the connected wallet in your app.
