A guide to help you migrate your existing Reown AppKit React Native integration to the new multichain version.
@reown/appkit-wagmi-react-native
or @reown/appkit-ethers-react-native
as your primary entry point, you will now use a core package @reown/appkit-react-native
. Chain-specific logic for EVM (Ethers, Wagmi), Solana, Bitcoin, and potentially other chains is handled by separate, installable adapter packages (e.g., @reown/appkit-ethers-react-native
, @reown/appkit-solana-react-native
).appkit
instance (initialized via createAppKit
) becomes the central hub for managing connections, adapters, and events across multiple chains.@reown/appkit-react-native
package.@web3modal/*
or potentially differently named predecessors to @reown/appkit-*-react-native
, you should remove them. The primary packages to focus on now are @reown/appkit-react-native
and the new chain adapters.
@reown/appkit-ethers-react-native
and @reown/appkit-wagmi-react-native
are the same as some older, more monolithic packages. The key difference is how they are used (as pluggable adapters into the core @reown/appkit-react-native
).@walletconnect/react-native-compat
package must be imported at the very beginning of your application’s entry point or your AppKit configuration file.
createAppKit
)createAppKit
from the core @reown/appkit-react-native
package.
createAppKit
is imported from @reown/appkit-react-native
.new EthersAdapter(...)
, new WagmiAdapter(...)
).adapters
array in createAppKit
takes these initialized adapter instances.networks
array in createAppKit
takes AppKitNetwork
objects, which define all supported networks for AppKit’s UI and context. viem/chains
objects can be directly used for EVM networks.WagmiAdapter
, the networks
property in its constructor defines which EVM chains it will specifically manage using Wagmi.App.tsx
(or equivalent root file) has minor adjustments, especially if you are using Wagmi.
AppKitProvider
AppKitProvider
from @reown/appkit-react-native
. This provider makes the AppKit instance, created in the previous step, available to all child components and hooks.
WagmiProvider
, QueryClientProvider
)WagmiAdapter
, you still need to set up WagmiProvider
(from wagmi
) and QueryClientProvider
(from @tanstack/react-query
) as you did before. The primary change is that the config
prop for WagmiProvider
now comes directly from your initialized WagmiAdapter
instance’s wagmiConfig
property.
<AppKit />
component (imported from @reown/appkit-react-native
) is included in your app’s component tree, typically in your root component, to render the modal UI. This was likely already in place.
createAppKit
parameters)createAppKit
(or defaultConfig
/defaultWagmiConfig
) are still available but are now part of the single createAppKit
call from @reown/appkit-react-native
.
networks
: As described above, an array of AppKitNetwork
objects.adapters
: As described, an array of initialized adapter instances.defaultNetwork
: (Formerly defaultChain
).networkImages
: (Formerly chainImages
).tokens
: New property (Record<string, { address: string }>
) for displaying token balances.@reown/appkit-react-native
.
useAppKit()
:
@reown/appkit-react-native
.open
, close
, isOpen
).disconnect
and switchNetwork
.useAccount()
:
@reown/appkit-react-native
.address
, chainId
, isConnected
, and potentially other multichain-aware details. Functionality is largely the same; primary change is the import path and potentially more multichain-aware return values.useProvider()
(New Hook):
@reown/appkit-react-native
.'eip155'
, 'solana'
) to get a provider for a specific chain type if multiple are connected or configured.useAppKitEventSubscription()
(New Hook):
@reown/appkit-react-native
.useAppKitState
: Its functionality is largely covered by useAccount
, useAppKit
, and other more specific hooks. Review your usage and map to the new hooks.useDisconnect
: The disconnect
function is now available from useAppKit().disconnect()
.@reown/appkit-react-native
. Key components include:
<AppKit />
<AppKitButton />
<ConnectButton />
<AccountButton />
<NetworkButton />
@reown/appkit-react-native
and add new adapter packages.import "@walletconnect/react-native-compat";
as the very first import.createAppKit
signature with networks
and adapters
arrays.AppKitProvider
. For Wagmi, use wagmiAdapter.wagmiConfig
for WagmiProvider
.@reown/appkit-react-native
and adapt to API changes (e.g., useDisconnect
-> useAppKit().disconnect
, new hooks like useProvider
).@reown/appkit-react-native
.<AppKit />
: Ensure this component is rendered for the modal UI.createAppKit
options against the new Options documentation.