Skip to main content

Upgrade from Web3Wallet to WalletKit for iOS

Upgrade to Reown WalletKit

This upgrade guide helps developers transition from using the Web3Wallet library to the WalletKit within reown-swift. The guide involves updating import statements, modifying instance references, changing configuration methods, and updating repository URLs for CocoaPods and Swift Package Manager (SPM).

Step 1. Update the Repository URL

The Web3Wallet library has been moved to a new repository under the reown-com organization. If you are using Swift Package Manager (SPM) to manage dependencies, update your Package.swift file to point to the new repository:

- .package(url: "https://github.com/WalletConnect/WalletConnectSwiftV2", from: "1.0.0"),
+ .package(url: "https://github.com/reown-com/reown-swift", from: "1.0.0"),

Step 2. Update Imports in Your Code

All references to Web3Wallet in your import statements should be updated to use WalletKit.

- import Web3Wallet
+ import WalletKit

Step 3. Update Instance Access and Method Calls

The singleton instance access for Web3Wallet has been replaced with WalletKit. Update all instances where Web3Wallet.instance is used to WalletKit.instance.

- Web3Wallet.instance.authRequestPublisher.sink { (id, result) in
- // Your code here
- }
+ WalletKit.instance.authRequestPublisher.sink { (id, result) in
+ // Your code here
+ }

Step 4. Update Configuration Method

The configure method has been updated to reflect the new branding. Replace calls to Web3Wallet.configure with WalletKit.configure.

- Web3Wallet.configure(
- ...
- )
+ WalletKit.configure(
+ ...
+ )

Step 5. Update CocoaPods Podspec

If you are using CocoaPods to manage dependencies, update your Podfile to use the new library name.

- pod 'Web3Wallet', '~> 1.0'
+ pod 'WalletKit', '~> 1.0'

Step 6. Test Your Changes

After updating all references to Web3Wallet to use WalletKit, thoroughly test your application to ensure that all functionalities work as expected.

Pairing Expiry

Currently, Dapps create a new pairing whenever the user selects the "Connect Wallet" button, instead of reusing existing pairings. Although pairings were not intended to be reused, they were being persisted for 30 days, causing unnecessary resource usage for both Dapps and wallet clients, including redundant socket connections.

This led to an accumulation of stale pairings in wallets, resulting in degraded efficiency and increased resource consumption. To address this issue, we have introduced changes to how pairings are managed to ensure more efficient connection handling.

Pairings were never intended to be listed in the wallet, and wallets should only display active sessions to users.

WebSocket Connection Handling

We've optimized the WebSocket connection management to improve performance and resource utilization. The SDK will now establish a WebSocket connection only when there's an explicit intention to send a request or subscribe to a topic. If none of these conditions are met, the WebSocket connection will remain closed by default.

What's Changed?

Previous Behavior: The SDK automatically initiated a WebSocket connection upon startup, regardless of active sessions or pending actions.

New Behavior: The SDK delays establishing a WebSocket connection until it's necessary based on the app's activities.

Why This Change?

This adjustment reduces unnecessary network traffic and conserves device resources, leading to better performance and battery life, especially important for mobile applications.

Impact on Your Application

Disconnected State on Launch: Apps without active sessions at launch will start with the WebSocket in a disconnected state. UI Elements Depending on WebSocket: Buttons or features that rely on an active WebSocket connection may not function until the connection is established.

Steps for Migration

Wallets are no longer expected to handle pairing-related methods. If your wallet has been listing pairings, please replace this with listing active sessions instead.