Skip to content

feat(onboarding): responsive fit-to-viewport + copy polish + celebratory finale#75

Merged
saksham2001 merged 3 commits into
saksham2001:mainfrom
rgvxsthi:feat/onboarding-ux
Jul 16, 2026
Merged

feat(onboarding): responsive fit-to-viewport + copy polish + celebratory finale#75
saksham2001 merged 3 commits into
saksham2001:mainfrom
rgvxsthi:feat/onboarding-ux

Conversation

@rgvxsthi

@rgvxsthi rgvxsthi commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

What

Overhauls onboarding so every step fits centered with no scroll on every iPhone (SE/mini → Pro Max), fixes the feature-tile text, clarifies button hierarchy, and redesigns the plain "You're ready" finale.

The problem

Steps 1/2/5 were each a ScrollView with fixed Pro-Max dimensions → on smaller iPhones the content overflowed and scrolled (Step-1 tiles clipped behind the footer; Step-5 had a big dead gap).

Changes

  • New OnboardingLayout.swiftOnboardingFittedBand: a GeometryReader band that derives a scale s = clamp(height/560, 0.80…1.06) and centers content with a Spacer pair. Scaled dimensions = base*s; button heights stay fixed (56/52/44). Dynamic-Type accessibility sizes fall back to the original ScrollView bodies (no-scroll can't hold at AX type). Also hosts the shared header components.
  • Step 1 (Welcome) — fitted band; fixed even-height 1-line tiles (was height 118 + lineLimit(2) → uneven wrapping/clipping); shorter tile copy; header subtitle; "Explore without ring" demoted to a quiet text button (Get started stays the primary capsule).
  • Step 5 (Baseline) — redesigned finale: animated success medallion, largeTitle "You're all set", and a connected vertical glass timeline (Today / First sync / Days 3–7), centered so the dead gap is gone. Button → "Start using PulseLoop".
  • Step 2 (Pairing) — fitted band for the default state only (scanning-list / connected / accessibility keep the ScrollView); carousel height derived from the ring-art size; "Skip for now" → text button; "Connect ring" → "Connect my ring".
  • Steps 3/4 (Profile/Goals) — kept scrollable (forms); share the header for visual consistency, no behavior change.

Notes

  • All appear-animations gated behind Reduce Motion; tap targets ≥ 44pt; existing PulseColors/PulseFont (AA on #080A0F).
  • Design division produced the responsive spec (fit-to-viewport scaling + copy + finale); tested on-device. Builds clean.

Onboarding steps 1/2/5 were each wrapped in a ScrollView with fixed Pro-Max
dimensions, so content overflowed and scrolled on smaller iPhones (tiles clipped
behind the footer). Rework them to fit centered with no scroll on every size.

- New OnboardingLayout.swift: OnboardingFittedBand — a GeometryReader band that
  derives a scale s = clamp(height/560, 0.80…1.06) and centers content with a
  Spacer pair. Scaled dims = base*s; button heights stay fixed (56/52/44).
  Dynamic-Type accessibility sizes fall back to the original ScrollView bodies.
  Also hosts the shared FittedOnboardingHeader + CompactOnboardingHeader.
- Step 1 (Welcome): rebuilt on the fitted band; fixed even-height 1-line tiles
  (was height 118 + lineLimit 2 → uneven wrap/clipping); shorter tile copy;
  header subtitle; 'Explore without ring' demoted from a capsule to a quiet
  text button (Get started stays primary).
- Step 5 (Baseline): redesigned finale — animated success medallion, largeTitle
  'You're all set', and a connected vertical glass timeline (Today / First sync /
  Days 3–7), centered so the dead gap is gone. Button → 'Start using PulseLoop'.
- Step 2 (Pairing): fitted band for the default state only (scanning/connected/
  accessibility keep ScrollView); carousel height derived from the ring-art size;
  'Skip for now' → text button; 'Connect ring' → 'Connect my ring'.
- Steps 3/4 (Profile/Goals): kept scrollable (forms); share the header for
  visual consistency, no behavior change.

All animations gated behind Reduce Motion; tap targets >= 44pt.
@rgvxsthi
rgvxsthi requested a review from saksham2001 as a code owner July 9, 2026 14:53
@saksham2001
saksham2001 merged commit 5390a95 into saksham2001:main Jul 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants