WalletConnect Inc is now Reown. As part of this transition, we are deprecating a number of repositories/packages across our supported platforms, and transitioning to their equivalents published under the Reown organization.
This repository is now considered deprecated and will reach End-of-Life on February 17th 2025. For more details, including migration guides please see: https://docs.reown.com/advanced/walletconnect-deprecations
Reown AppKit offers a feature-rich and user-friendly solution for integrating onchain Unity apps and games.
| WalletConnect Modal | Reown AppKit | |
|---|---|---|
| WalletConnect | โ | โ |
| Network Switching | โ | โ |
| EVM Interaction API | โ | โ |
| Coinbase Wallet | โ | โ (WebGL only) |
| Browser Extension Wallets | โ | โ (WebGL only) |
| Fiat Onramp | โ | โ (WebGL only) |
| ENS Resolution | โ | โ |
| Swaps | โ | โ (WebGL only) |
| Analytics | โ | โ |
| Email & Social Login | โ | ๐ |
| UI Framework | uGUI | UI Toolkit in native, HTML in WebGL |
| Supported Networks | Blockchain-agnostic | Only EVM |
- ๐ AppKit Documentation
| Package | Description | OpenUPM |
|---|---|---|
| Core | High-level, Unity-friendly extension of WalletConnectSharp - Automatic active session management - Option to resume session from storage - Deep linking support - IL2CPP support - Lightweight IJsonRpcConnection implementation- QR Code generation utility - API to load wallets data and visual assets |
|
| Modal | Simplest and most minimal way to connect your players with WalletConnect | |
| UI | This is a technical package that provides UI for WalletConnect Modal. It is not intended to be used directly, but rather as a dependency of WalletConnect Modal. | |
| Nethereum | This Unity package provides a simple way to integrate WalletConnect with Nethereum library. |
Older versions of WalletConnectUnity are available under legacy/* branches
- Unity 2021.3 or above
- IL2CPP managed code stripping level: Minimal (or lower)
- Android
- iOS
- macOS
- Windows
- WebGL (experimental)
Install via OpenUPM CLI
To install packages via OpenUPM, you need to have Node.js and openupm-cli installed. Once you have them installed, you can run the following commands:
- WalletConnect Modal:
openupm add com.walletconnect.modal
- WalletConnectUnity Core:
openupm add com.walletconnect.core
Install via Package Manager with OpenUPM
- Open
Advanced Project Settingsfrom the gear โ menu located at the top right of the Package Managerโs toolbar - Add a new scoped registry with the following details:
- Name:
OpenUPM - URL:
https://package.openupm.com - Scope(s):
com.walletconnect
- Name:
- Press plus โ and then
Savebuttons - In the Package Manager windows open the add โ menu from the toolbar
- Select
Add package by name... - Enter the name of the package you want to install:
- WalletConnectUnity Modal:
com.walletconnect.modal - WalletConnectUnity Core:
com.walletconnect.core
- WalletConnectUnity Modal:
- Press
Addbutton
Install via Package Manager with Git URL
- Open the add โ menu in the Package Managerโs toolbar
- Select
Add package from git URL... - Enter the package URL. Note that when installing via a git URL, the package manager won't install git dependencies automatically. It's important to install the packages in the order they are listed below. Otherwise, the installation may fail.
- WalletConnectUnity Core:
https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.core - WalletConnectUnity UI:
https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.ui - WalletConnectUnity Modal:
https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.modal
- WalletConnectUnity Core:
- Press
Addbutton
It's possible to lock the version of the package by adding #{version} at the end of the git URL, where #{version} is the git tag of the version you want to use.
For example, to install version 1.0.0 of WalletConnectUnity Modal, use the following URL:
https://github.com/WalletConnect/WalletConnectUnity.git?path=Packages/com.walletconnect.modal#modal/1.0.0
- Set up in project id and metadata
WalletConnectProjectConfigScriptableAsset (created automatically located atAssets/WalletConnectUnity/Resources/WalletConnectProjectConfig.asset, do NOT move it outside ofResourcesdirectory). - Initialize
WalletConnectand connect wallet:
// Initialize singleton
await WalletConnect.Instance.InitializeAsync();
// Or handle instancing manually
var walletConnectUnity = new WalletConnect();
await walletConnectUnity.InitializeAsync();
// Try resume last session
var sessionResumed = await WalletConnect.Instance.TryResumeSessionAsync();
if (!sessionResumed)
{
var connectedData = await WalletConnect.Instance.ConnectAsync(connectOptions);
// Create QR code texture
var texture = WalletConnectUnity.Core.Utils.QRCode.EncodeTexture(connectedData.Uri);
// ... Display QR code texture
// Wait for wallet approval
await connectedData.Approval;
}- Id - The id of your project. This will be used inside the relay server.
- Client Metadata
- Name - The name of your app. This will be used inside the authentication request.
- Description - The description of your app. This will be used inside the authentication request.
- Url - The url of your app. This will be used inside the authentication request.
- Icons - The icons of your app. This will be used inside the authentication request.
- Very Url - The verification URL of your app. Currently used but not enforced
Due to WebGL's single-threaded nature, certain asynchronous operations like Task.Run, Task.ContinueWith, Task.Delay, and ConfigureAwait(false) are not natively supported.
To enable these operations in WebGL builds, an additional third-party package, WebGLThreadingPatcher, is required. This package modifies the Unity WebGL build to delegate work to the SynchronizationContext, allowing these operations to be executed on the same thread without blocking the main application. Please note that all tasks are still executed on a single thread, and any blocking calls will freeze the entire application.
The WebGLThreadingPatcher package can be added via git URL:
https://github.com/VolodymyrBS/WebGLThreadingPatcher.git