Back to Home

UX research of onboarding DeFi applications

UX research revealed problems in the first DeFi session: overload, errors, 45% churn. Modular onboarding with function selection reduces errors by 60-80%, speeds up scenarios. SwiftUI prototype with OptionSet, 9 hypotheses, test results.

Modular DeFi onboarding: tests and code
Advertisement 728x90

# Optimizing Onboarding in DeFi: A Modular Approach Based on UX Tests

In the first session, DeFi apps overwhelm users with terms like private keys, addresses, fees, and liquidity pools. This leads to errors, financial losses, and high churn rates. Research confirms: selecting modules in onboarding reduces errors, speeds up transfer, swap, and staking scenarios.

Benchmark analysis from AppsFlyer shows that 45% of fintech apps are deleted within the first 30 days, half within a day. CleverTap records 11% deletions due to complexity. Reviews in App Store and Google Play highlight interface overload, unclear statuses, and distrust during transactions.

In-Depth Interviews and Segmentation

22 investors from USA, Russia, Georgia, Israel, Serbia, Ukraine, Dominican Republic were surveyed. Focus: task context, motivations, problems, reasons for abandoning competitors.

Google AdInline article slot

Key issues by respondent share:

  • Inconvenient interface (hidden controls, overload) — 86% (19/22)
  • Lack of security and risk transparency — 64% (14/22)
  • Financial errors — 64% (14/22)

Reasons for abandonment: learning complexity (55%), lack of transparency in terms (18%).

Segmentation revealed two drivers: security and convenience. Focus on long-term investors who value control and error minimization.

Google AdInline article slot

Job Stories for the Target Segment

Security:

  • Minimize risks when connecting a wallet or depositing.
  • Assess risk/return for staking pools.
  • Simplified address entry for transfers.

Convenience:

  • Focus on key portfolio information.
  • Track returns after purchase.
  • Monitor staking and rewards accrual.

Product Hypotheses

Prioritized by value and pain frequency. Hypotheses tested in prototypes.

Google AdInline article slot

Convenience:

  • Module selection in onboarding increases Activation Rate (first transaction).
  • Explaining modules and quick actions reduce TTV (time to transaction).
  • QR transfers with auto-fill reduce address entry errors, boost ARPU.

Security:

  • Pool audit index increases deposits in low-risk pools, reduces churn.
  • Videos from pool teams increase trust and conversion.
  • Real-time transaction statuses reduce support tickets.

Transparency:

  • Flexible swap controls boost conversion.
  • Separating balances (available/locked) minimizes amount errors.
  • Reward timers in pools improve CSAT.

Architecture and Prototyping

Principles: task encapsulation, module scalability, sequential navigation.

In SwiftUI, modules are OptionSet flags. UI is assembled dynamically based on the bitmask of selected modules.

import SwiftUI

struct ModuleFlags: OptionSet, Hashable {
    let rawValue: Int
    static let balance   = Self(rawValue: 1 << 0)
    static let swaps     = Self(rawValue: 1 << 1)
    static let staking   = Self(rawValue: 1 << 2)
    static let analytics = Self(rawValue: 1 << 3)

    func normalized() -> Self { union(.balance) }
}

enum Module: String, CaseIterable, Identifiable {
    case balance, swaps, staking, analytics
    var id: String { rawValue }

    var flag: ModuleFlags {
        switch self {
        case .balance: .balance
        case .swaps: .swaps
        case .staking: .staking
        case .analytics: .analytics
        }
    }

    var title: String {
        switch self {
        case .balance: "Balance"
        case .swaps: "Swaps"
        case .staking: "Staking"
        case .analytics: "Analytics"
        }
    }

    var icon: String {
        switch self {
        case .balance: "wallet.pass"
        case .swaps: "arrow.left.arrow.right"
        case .staking: "banknote"
        case .analytics: "chart.line.uptrend.xyaxis"
        }
    }

    @ViewBuilder
    func screen() -> some View {
        switch self {
        case .balance: BalanceScreen()
        case .swaps: SwapsScreen()
        case .staking: StakingScreen()
        case .analytics: AnalyticsScreen()
        }
    }
}

struct AdaptiveTabs: View {
    let selected: ModuleFlags

    private var active: [Module] {
        let flags = selected.normalized()
        return Module.allCases.filter { flags.contains($0.flag) }
    }

    var body: some View {
        TabView {
            ForEach(active) { m in
                m.screen()
                    .tabItem { Label(m.title, systemImage: m.icon) }
            }
        }
    }
}

Usability Test Results

13 participants tested deposit, swap, transfer in prototype vs competitors (Bybit, Uniswap, Trust Wallet).

Metrics: errors/participant, time (sec), UMUX-lite.

The test version showed 60–80% error reduction, 30–50% faster scenarios, 25–40 point UMUX increase.

What’s Important

  • Modular onboarding reduces churn in first sessions by focusing on needed features.
  • Security and transparency are key barriers for 64% of users.
  • SwiftUI OptionSet enables UI scaling without refactoring.
  • Hypotheses H1–H9 confirm activation metric growth and churn reduction.
  • Results valid for experienced investors; newbies need additional tests.

— Editorial Team

Advertisement 728x90

Read Next