Інтеграція WalletConnect v2 у dApp: підключення мобільних гаманців

WalletConnect v2 — стандарт для підключення мобільних гаманців до децентралізованих додатків. Реалізація протоколу на relay-серверах WalletConnect Cloud потребує налаштування сесій, керування перемиканням мереж та обробки збоїв. Якщо сесія вичерпується або мережа не перемикається — користувач бачить

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

WalletConnect v2 — стандарт для підключення мобільних гаманців до децентралізованих додатків. Реалізація протоколу на relay-серверах WalletConnect Cloud потребує налаштування сесій, керування перемиканням мереж та обробки збоїв. Якщо сесія вичерпується або мережа не перемикається — користувач бачить вічне завантаження. Гірше того, на деяких гаманцях (Trust Wallet, Coinbase Wallet) метод wallet_switchEthereumChain працює нестабільно — мережа змінюється лише після ручного підтвердження, а без fallback додаток зависає на запиті. За даними WalletConnect Docs, сесії живуть 7 днів, але без правильного відновлення користувачеві доведеться сканувати QR-код заново. За статистикою, близько 30% користувачів мобільних гаманців стикаються з втратою сесії після перезавантаження сторінки — це безпосередньо впливає на конверсію та утримання.

Ми використовуємо wagmi v2 та Web3Modal. Це готова абстракція над WalletConnect SDK з єдиним API для всіх гаманців. Такий підхід прискорює розробку в 3 рази порівняно з прямим використанням SDK і гарантує коректну обробку edge-кейсів: перемикання мереж через wallet_addEthereumChain, відновлення сесії після перезавантаження, підтримка deep-link для мобільних браузерів. У результаті економія бюджету на інтеграцію становить до 40%.

Покрокове налаштування інтеграції

  1. Реєстрація проєкту. Зайдіть на WalletConnect Cloud, створіть проєкт і отримайте projectId. Цей ключ публічний, але його обов'язково використовувати в production, інакше relay-сервер відхилить запити за rate limit (до 50 запитів на секунду для безкоштовного тарифу).
  2. Встановлення пакетів. Виконайте npm install @web3modal/wagmi wagmi viem. Ці бібліотеки дадуть єдиний інтерфейс для підключення гаманців.
  3. Конфігурація wagmi. Створіть файл конфігурації з підтримкою потрібних мереж (mainnet, polygon, arbitrum) та конекторів: injected, walletConnect, coinbaseWallet.
Приклад конфігурації wagmi
// config.ts import { createConfig, http } from 'wagmi' import { mainnet, polygon, arbitrum } from 'wagmi/chains' import { walletConnect, injected, coinbaseWallet } from 'wagmi/connectors' export const config = createConfig({ chains: [mainnet, polygon, arbitrum], connectors: [ injected(), walletConnect({ projectId: process.env.NEXT_PUBLIC_WC_PROJECT_ID! }), coinbaseWallet({ appName: 'Your App' }), ], transports: { [mainnet.id]: http(), [polygon.id]: http(), [arbitrum.id]: http(), }, }) 

Чому сесії потрібно відновлювати?

WalletConnect сесії живуть 7 днів і зберігаються в localStorage. Якщо користувач закрив вкладку і повернувся, wagmi автоматично відновлює з'єднання без нового QR. Ми ініціалізуємо WagmiProvider до будь-яких хуків, щоб уникнути проблем з гідрацією. Без відновлення до 25% користувачів покидають dApp після перезавантаження — це критично для DeFi-протоколів, де важлива безперервність роботи.

// app/providers.tsx 'use client' import { WagmiProvider } from 'wagmi' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { config } from './config' const queryClient = new QueryClient() export function Providers({ children }: { children: React.ReactNode }) { return ( <WagmiProvider config={config}> <QueryClientProvider client={queryClient}> {children} </QueryClientProvider> </WagmiProvider> ) } 

Як перемикати мережі без багів?

wallet_switchEthereumChain працює по-різному на різних гаманцях. MetaMask Mobile показує popup, Trust Wallet перемикає автоматом, а деякі ігнорують, якщо мережу не додано. Ми додаємо fallback: якщо switchChain не спрацював, викликаємо wallet_addEthereumChain з параметрами. Це підвищує успішність перемикання до 95%. На практиці відмови найчастіше пов'язані з відсутністю мережі в конфігурації гаманця — наприклад, Arbitrum не додано в Trust Wallet за замовчуванням, і без fallback користувач бачить помилку chain not added.

Порівняння підходів до інтеграції

Підхід Складність Гнучкість Швидкість розробки
wagmi + Web3Modal Низька Середня 1–2 дні
WalletConnect SDK безпосередньо Висока Висока 3–5 днів
RainbowKit Низька Низька 1 день

Для більшості проєктів wagmi + Web3Modal оптимальний — покриває 95% сценаріїв, має активну спільноту та часті оновлення. Порівняно з прямим SDK ви отримуєте триразове прискорення розробки та скорочення витрат удвічі.

Порівняння мобільних гаманців

Гаманець Десктоп-розширення Підтримка deep-link Перемикання мереж
MetaMask Mobile Так Так Popup
Trust Wallet Ні Так Автоматичне
Rainbow Ні Так Popup

На практиці Trust Wallet поводиться непередбачувано з EIP-1559 — іноді ігнорує тип транзакції. Ми враховуємо такі особливості та виставляємо maxPriorityFeePerGas примусово.

Обробка типових помилок

  • Hydration mismatch у Next.js — оберніть компоненти з wallet state у 'use client' та читайте стан через useEffect.
  • Mobile deep links не працюють — Web3Modal обробляє автоматично. Для кастомного UI вкажіть параметр redirect.
  • Session expiry — слухайте подію session_expire та показуйте тост із пропозицією перепідключитися.

Що входить у роботу

  • Налаштування проєкту WalletConnect Cloud та отримання projectId.
  • Інтеграція wagmi та Web3Modal (або альтернатив).
  • Конфігурація сесій та обробка перепідключення.
  • Тестування на iOS/Android: MetaMask Mobile, Trust Wallet, Rainbow.
  • Обробка edge cases: помилки мережі, відхилення транзакції, зміна акаунта.
  • Документація інтеграції для вашої команди.
  • Підтримка протягом 30 днів після здачі.

Наш досвід та гарантії

За 10+ років ми інтегрували WalletConnect у понад 20 dApp — від NFT-маркетплейсів до DeFi-протоколів. Гарантуємо стабільну роботу на всіх популярних мобільних гаманцях. Отримайте консультацію з інтеграції — це безкоштовно. Зв'яжіться з нами для оцінки вашого проєкту.