feat: require names during initial V6 onboarding
Summary (AI generated)
- Use the merged registration API without collecting names during signup. Initial V6 onboarding follows Welcome → About you → Your goal → app details → organization → setup. Both names must be saved and confirmed before continuing; there is no skip action.
- Back from Your goal edits saved names directly and retains the selected goal and analytics run. Reloading About you opens Continue/Restart: Continue restores the draft and attempt; Restart persists a clean reset before returning to Welcome. Failed writes remain retryable.
- Existing organization members and invitation-created accounts retain their flows. Creating another organization does not collect names again.
Motivation (AI generated)
Reduce signup friction while collecting account identity before workspace setup. This separate required-name screen supersedes #3647. Coordinate deployment with website #1113.
Business Impact (AI generated)
Measure name entry separately from goal selection and keep the same attempt/run across page handoffs. Preserve 500 ms draft/input tracking, with lengths rather than raw names in input events, and the merged durable PostHog/Bento person synchronization.
Feature flag and analytics (AI generated)
supabase/functions/_backend/utils/ab_tests.json sets onboarding_v6 to 100% for eligible new self-signups. Treatment A remains required; stored version: 6 alone does not activate the flow. Allocation is deterministic and non-treatment receives no assignment.
The prospective cutoff is 2026-10-20 17:31:40 UTC. Eligibility requires both a creation time at/after that cutoff and the server-owned signup enrollment marker. Advancing the old October 19 cutoff excludes accounts already enrolled while the flag was disabled. Invitations, older accounts and non-enrolled accounts remain excluded. There is no backfill. This configuration takes effect through the normal reviewed deployment; this task does not merge or deploy it.
Both the name screen and the wizard use resolveOnboardingAnalyticsVersion, the existing resolver used by webnativeapp_development_environment. V6 takes precedence only for treatment A; legacy experiment versions remain available for everyone else.
Shared implementation and review fixes (AI generated)
Reuse AppOnboardingPageFrame, AppOnboardingHeader, AppOnboardingWelcome, OnboardingProfile, shared progress-step definitions, telemetry identity/tracker and the serialized conditional-write queue. Both page flows now use openOnboardingResumeDialog for the translated resume modal. Split resume handling from the name page mount hook to address Sonar's complexity finding without changing its behavior.
Preserve V6 treatment during failed/non-authoritative refreshes. Required-name navigation failures expose Retry and block stale progress writes. Missing profiles have recoverable loading with Retry and Logout. Generated graphs remain identical to the base feature baseline, as requested in human review. Earlier setup/visual fixture fixes retain the current app-name → icon → organization flow and shared AI prompt behavior.
Test Plan (AI generated)
- 155 focused tests cover allocation, flag-based version selection, combined step order, names, resume/reset, stale sessions and assignment persistence.
- 4,241 unit tests across 449 files, frontend/backend lint, targeted ESLint, CLI/backend/frontend types and production build.
- Real local-backend desktop/mobile scenarios cover mandatory names, persisted drafts, Continue/Restart, reload after reset, direct Back, reload after Back and retained goal choice. Local preview uses its isolated treatment fixture; it does not prove production analytics delivery.
- Allocation regressions exclude already-enrolled pre-cutoff accounts, invitations and non-enrolled accounts; 100 eligible self-signups all receive treatment A. Disabling the flag removes stale assignments.
- Fresh CI, automatic review and requested human/frontend review on the latest commit. Verify actual signup enrollment and analytics in the reviewed deployment.
Visual changes (AI generated)
Desktop/mobile before/after/diff reports, captured with fictional users through the repository visual workflow:
- Registration and required-name screen, main 921da2d00 → 4a802a96f.
- Back from Your goal, be6cd7a9d → dd353125d.
- About you resume dialog, dd353125d → latest follow-up. Refreshed after the shared-dialog extraction.
The automated visual workflow refreshes the full base/head report on pushes. Capture artifacts stay gitignored.
Generated with AI.
Summary by CodeRabbit
-
New Features
- Added profile onboarding to collect and save first and last names.
- Added welcome, progress, validation, draft recovery, and retry experiences.
- Added responsive onboarding layouts with reusable headers and action controls.
- Added account-loading recovery with retry and logout options.
- Registration now uses email and password with stronger password validation.
-
Bug Fixes
- Preserved onboarding progress and profile drafts during interruptions and failed saves.
- Improved handling of unavailable account profiles without signing users out.
- Added localized messaging for profile onboarding and account-loading errors.