← Updates
2026-06-28

Onboarding UX Fixes

Edit on GitHub

Issues Fixed

File Fix
OnboardingUIComponents .contentShape(Rectangle()) on selection cards — full area tappable
OnboardingBaseStepView .scrollDismissesKeyboard(.interactively) + tap-to-dismiss
CurrentWeightStepView @FocusState + toolbar Done button for decimal pad
CompetitionRulesStepView .contentShape + 44pt min height on toggle cards
EquipmentStepView Same fix as CompetitionRules
WeeklyLossRateStepView Separated info button from selection (nested button conflict)
EmailStepView Keyboard dismiss (own layout, not using BaseStepView)
CompetitionDateStepView 44pt min height on date selector HStack
ReviewStepView “Basic Plan” 44pt + full-width; “Unlock” 52pt + .contentShape

Patterns Applied

  • .contentShape(Rectangle()) on every .buttonStyle(.plain) — SwiftUI only registers taps on visible content by default
  • .frame(minHeight: 44) — Apple HIG minimum touch target
  • @FocusState + .toolbar { ToolbarItemGroup(placement: .keyboard) } — standard keyboard dismiss pattern for numeric inputs
  • Never nest Button inside Button — separate into sibling HStack