createAppKit
function and passing a configuration object to it. This function initializes and returns the AppKit instance that you will use throughout your application, typically by providing it via the AppKitProvider
.
createAppKit
:
Core Configuration
projectId
- Type:
String
- Required: Yes
- Description: Your project ID from Reown Dashboard. This is essential for enabling WalletConnect functionality, which AppKit uses for connecting with a wide range of wallets.
metadata
- Type:
Object
- Required: Yes
- Description: Information about your decentralized application (dApp) that is displayed to users in wallet connection prompts and used for deep linking.
name
: (String) The name of your dApp.description
: (String) A brief description of your dApp.url
: (String) The official URL of your dApp.icons
: (Array of Strings) URLs to icon images for your dApp.redirect
: (Object) Configuration for redirecting users back to your app after wallet interactions, especially for mobile wallets.native
: (String) Your app’s custom URL scheme for deep linking (e.g.,'yourappscheme://'
).universal
: (String) Your app’s universal link URL (e.g.,'https://yourdapp.com/connect'
).
networks
-
Type:
Array<AppKitNetwork>
- Required: Yes
-
Description: An array of network objects that your dApp supports. Each object must conform to the
AppKitNetwork
type, which can be imported from@reown/appkit-react-native
.IfchainNamespace
(e.g., ‘eip155’, ‘solana’, ‘bitcoin’) is not provided for a network, it will default to'eip155'
. IfcaipNetworkId
is not provided, it will be constructed aschainNamespace:id
(e.g., ‘eip155:1’, ‘solana:mainnet’). Ensure these fields are correctly set for proper adapter mapping, especially for non-EVM chains.
Pre-exported by AppKit
Pre-exported by AppKit
For convenience, AppKit exports configurations for Solana and Bitcoin networks.Example of pre-exported Solana network: packages/appkit/src/networks/solana.ts
Using viem/chains for EVM Networks
Using viem/chains for EVM Networks
You can often use standard chain definitions from libraries like
viem
or wagmi
directly, as they typically conform to a compatible structure.Custom Network Definitions
Custom Network Definitions
You can always define network objects manually. This is necessary for non-EVM chains if not pre-exported, or for custom EVM chains.
adapters
- Type:
Array<Adapter>
- Required: Yes
- Description: An array of initialized chain adapter instances. Each adapter is responsible for handling a specific blockchain namespace (e.g., ‘eip155’ for EVM chains, ‘solana’ for Solana). AppKit will map the networks provided in the
networks
option to the appropriate adapter based on the namespace derived from the network’sid
and the namespaces supported by each adapter.
storage
- Type:
Storage
- Required: Yes
- Description: A storage implementation that handles data persistence. AppKit provides a flexible storage interface that works with any storage solution you prefer.
Storage
interface, which can be imported from @reown/appkit-react-native
, is defined as follows:
Example with react-native-mmkv
Example with react-native-mmkv
Example with react-native-async-storage
Example with react-native-async-storage
extraConnectors
- Type:
Array<Connector>
- Required: No
- Description: Additional wallet connectors that extend AppKit’s connection capabilities beyond the standard WalletConnect protocol. This is useful for wallets that require custom connection methods, like Phantom Wallet and Coinbase.
defaultNetwork
- Type:
AppKitNetwork
(Optional) - Description: The network that AppKit should attempt to connect to by default, or highlight initially if no prior session exists. This object must be one of the networks defined in your
networks
array.
Modal & Wallet Display Customization
customWallets
- Type:
Array<WalletEntry>
(Optional) - Description: Allows you to add custom wallet entries to the connection modal. Each object in the array defines a wallet not available through WalletConnect’s default registry. Refer to
WalletEntry
type for exact properties.
featuredWalletIds
- Type:
Array<String>
(Optional) - Description: Select wallets that are going to be shown on the modal’s main view. Array of wallet IDs defined will be prioritized (order is respected). These wallets will also show up first in
All Wallets
view. You can find the wallets ids in WalletGuide.
includeWalletIds
- Type:
Array<String>
(Optional) - Description: If provided, only wallets whose IDs are in this array will be shown in the modal. This effectively creates an allowlist, overriding the default WalletConnect registry listings.
excludeWalletIds
- Type:
Array<String>
(Optional) - Description: An array of wallet IDs to be hidden from the modal. This allows you to remove specific wallets from the default WalletConnect registry listings.
Theming & UI Customization
themeMode
- Type:
'light' | 'dark'
(Optional) - Description: Sets the initial theme for the AppKit modal. Defaults to the system theme or ‘light’ if system theme is unavailable.
themeVariables
- Type:
Object
(Optional) - Description: Allows you to customize the accent color of the AppKit modal. Refer to the Theming documentation for details.
networkImages
(Formerly chainImages
)
- Type:
Record<string, string>
(Optional) - Description: An object to provide custom image URLs for network icons in the modal. Keys should be network IDs (e.g., ‘eip155:1’, ‘solana:mainnet’).
Token Balance Configuration
tokens
- Type:
Record<string, { address: string }>
(Optional) - Description: An object to configure specific tokens for which AppKit should display balances. The keys are CAIP-2 network IDs (e.g., ‘eip155:1’ for Ethereum Mainnet for a specific Solana network instance if required by ID structure). The value for each network ID is an object containing the token’s contract
address
on that network.
Utility & Advanced Options
clipboardClient
- Type:
Object
- Required: No (but functionally required for copy features)
- Description: Allows you to provide your own clipboard implementation. If this client is not provided, all UI elements within AppKit that offer a “copy to clipboard” functionality (e.g., for addresses, QR code URIs) will be hidden. To enable copy features, you must supply this client.
It requires an async
setString
method that takes a string value to be copied.
enableAnalytics
- Type:
boolean
(Optional) - Default:
true
- Description: Set to
true
to enable analytics and gather insights on user activity within your Reown Cloud dashboard.
debug
- Type:
boolean
(Optional) - Default:
false
- Description: Set to
true
to enable debug mode. This may show additional console logs helpful for development and troubleshooting.
universalProviderConfigOverride
Lets you customize specific aspects of the provider’s behavior.methods
: Custom RPC methods for each namespacechains
: Supported chains for each namespaceevents
: Events to subscribe to for each namespacerpcMap
: Custom RPC URLs for specific chains
Feature Flags
features
-
Type:
Object
(Optional) -
Description: An object to toggle additional AppKit features on or off.
swaps
: (Boolean, Optional) Enable/disable the token swap feature. Default:true
.onramp
: (Boolean, Optional) Enable/disable the onramp feature. Default:true
.socials
: (Array of Strings or Boolean, Optional) Configure email and social login options. Provide an array like["google", "x", "discord", "apple"]
to enable specific platforms. Set tofalse
or an empty array[]
to disable all social logins. Default: All available socials enabled.showWallets
: (Boolean, Optional) If social login is enabled, this controls whether wallet options are shown on the initial connect screen alongside social options. Iffalse
, a button will redirect to a separate screen for wallet options. Default:true
.
createAppKit
function and associated type definitions in the source code for the most up-to-date and complete list of options and their structures.