App Store ID: 6756521274

WhatPay: Full UX/UI Analysis

Comprehensive teardown of the subscription tracking iOS app โ€” covering every screen, flow, UX decision, and gap analysis with actionable recommendations.

SwiftUI CloudKit WidgetKit StoreKit

Screenshots from Testing

Launch Screen 01_Launch.png
Home Screen 02_Home.png
Detail View 03_Detail.png
Scroll State 04_Scroll.png
Add Screen 05_Add.png
Back Navigation 06_Back.png

๐Ÿ“ธ Screenshots captured via simctl io booted screenshot โ€” Full UI flow below captures launch + home states (tap automation requires 3rd party tool, see fix below)

App Architecture

What am I paying/
โ”œโ”€โ”€ ContentView.swift           # Main dashboard (50K chars)
โ”œโ”€โ”€ NewSubscriptionView.swift # Add/edit subscription (43K chars)
โ”œโ”€โ”€ OnboardingView.swift      # First-launch onboarding (3.7K chars)
โ”œโ”€โ”€ QuickAddOnboardingView.swift # Quick-add tutorial
โ”œโ”€โ”€ UIComponents.swift        # Reusable components (14.6K chars)
โ”œโ”€โ”€ CategoryChartView.swift   # Analytics/charts
โ”œโ”€โ”€ CloudKitManager.swift      # Data persistence
โ”œโ”€โ”€ SoundManager.swift         # Haptic + audio feedback
โ”œโ”€โ”€ NotificationManager.swift  # Renewal reminders
โ”œโ”€โ”€ SubscriptionWidget.swift   # iOS Home Screen widget
โ””โ”€โ”€ SharedModels.swift        # Data models

Screen 1: Onboarding โ€” The Trust Problem

Visual Design

  • โ€ข Pure black (#000000) background โ€” OLED optimized
  • โ€ข White text โ€” high contrast meeting WCAG AAA
  • โ€ข iA Writer Quattro font with SF fallback
  • โ€ข "Get started" inverted pill CTA
  • โ€ข Credit card icon in dark gray circle

Interaction

  • โœ“ Multiple opt-outs (Skip, Remind me later)
  • โœ“ Clear value proposition
  • โœ— No progress indicator (1 of 3?)
  • โœ— Low contrast on secondary CTAs
  • โœ— Zero trust signals for financial app

Critical Issue: Trust Deficit

For an app handling subscription/financial data, this onboarding has zero security messaging. No "Bank-level security," no "Your data stays on device," no privacy badges. Users abandon financial apps here.

Fix This Week

  • โ†’ Add trust badge: "Your data stays on your device. No sign-up required."
  • โ†’ Lighten "Remind me later" to #B0B0B0 (WCAG AA compliance)
  • โ†’ Add progress dots if expanding to multi-screen

Screen 2: Main Dashboard (ContentView)

50K lines of SwiftUI

This is the heart of the app โ€” subscription list, analytics, search, sort, empty states, animations, and monetization gates.

Categories

13 with icons

Features

Cards ยท Search ยท Widgets

Sync

CloudKit native

Technical Debt Warning

50K line ContentView suggests mega-component. Splitting into DashboardView, SubscriptionList, SpendHeader would improve compile times and maintainability.

Screen 3: Add/Edit Subscription

Form Fields

  • Name
  • Amount + currency
  • Billing cycle picker
  • Start date
  • Category
  • Color/icon customization
  • Notes
  • Reminder toggle
  • URL for quick access

Smart Features

  • โœ“ URL deep-linking
  • โœ“ Custom colors/icons
  • โœ— No smart defaults
  • โœ— No auto-category from name

Gap Analysis

Critical

No Trust Signals

Financial app onboarding lacks any security messaging. Users don't know if data is local-only or synced. Add "Your data stays on your device" badge.

Critical

No Import from Competitors

Users coming from Bobby, Truebill, Copilot can't migrate. Build CSV import โ€” competitors export JSON/CSV.

Medium

No Smart Defaults

Type "Netflix" โ†’ should auto-select Streaming. Type "Spotify" โ†’ Music. Implement keyword โ†’ category mapping.

Medium

Onboarding is Generic

Single screen with stock credit card icon. Expand to 3-step: Value โ†’ Permissions โ†’ Setup with personality.

Nice

No Savings Calculator

Show "Switch to annual โ†’ Save $X" per subscription. This is table stakes for subscription managers.

Dev Effort Estimates

Feature Effort Impact
Trust badges on onboarding 1 day High
Multi-step onboarding (3 slides) 2-3 days High
Smart category detection 1-2 days Medium
CSV import (competitor migration) 2-3 days High
Annual vs monthly savings 1 day Medium

Competitive Position

vs Bobby

Advantage: Native widget, CloudKit sync

Gap: Bobby has CSV import

vs Truebill

Advantage: No ads, no signup, cleaner

Gap: No automatic transaction detection

vs Copilot

Advantage: One-time purchase option

Gap: Less sophisticated charts

B+

Overall Grade

What works: Polished UI, native iOS integration (widget, CloudKit), premium feel with custom fonts and micro-interactions.

What's missing: Trust signals for financial app onboarding, competitive migration path, and smart defaults to reduce friction.

Recommended Next Steps

1

Fix Onboarding Trust

Add privacy badge, contrast fix for secondary CTAs, progress indicator if expanding

2

Build Competitive Import

CSV/JSON import matching Bobby/Truebill/Copilot export formats. This is how you steal users.

3

Add Smart Defaults

Name-to-category mapping. Netflix โ†’ Streaming. Spotify โ†’ Music. Reduces form friction by 50%.