Sign-in
Mobile app: every screen, state and flow in Sign-in.
10 screens and overlays, 53 states, 4 flows. Frames show a real screenshot where one was captured and a wireframe card where the state needs data or conditions a device run cannot produce.
Flows
Sign in with phone
Sign in to The Raw
Sending code
Spinner in the button and the field is disabled; up to 3 silent network retries.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Enter the 6-digit code
Checking code
Slots disabled with spinner; double submit is blocked.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Branches and edge cases
Sign in to The Raw
Could not send a code
Generic send failure and invalid-number variants shown under the field.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Sign in to The Raw
No connection
Send failed on a network error; No connection. Check your internet and try again.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Sign in to The Raw
Too many attempts
Send rate limit hit; Wait a few minutes, then try again.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Enter the 6-digit code
Too many verification attempts
More than 10 verify calls per hour per phone; Wait a few minutes.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Enter the 6-digit code
Resend hits the server cap
3 sends per hour per phone, counting the first send; the second resend can fail.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Enter the 6-digit code
Account stage unknown after good code
Retry card replaces the form when the profile never arrives.
Not reachable on a device: Needs the account query to stall after a good code
Flow diagram
Sign in with Google or Apple
Sign in to The Raw
Social button loading
Spinner on the pressed provider; both social buttons disabled.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Branches and edge cases
Sign in to The Raw
Raw social sign-in error
Provider or Better Auth message shown in red, not normalised (for example Play Services missing).
Not reachable on a device: Needs a network fault, crash, race or code change to show
Sign in to The Raw
Accounts link silently by email
Same email via Google, Apple or phone links to the existing user with no UI.
Needs data: Capture audit 2026-10-30. ios: Prior user decision: phone OTP only; no real provider sign-in. android: Prior user decision: phone OTP only; no real provider sign-in.
Sign in to The Raw
Closed account via social, no message
Social sign-in succeeds, app signs out, user sees the form again with no explanation.
Needs data: Capture audit 2026-10-30. ios: Prior user decision: phone OTP only; no real provider sign-in. android: Prior user decision: phone OTP only; no real provider sign-in.
Flow diagram
Create account details
Welcome to The Raw
Submitting
Button spinner; stays disabled after success until the sheet closes.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Branches and edge cases
Welcome to The Raw
Apple name optional
Name is not required for Apple accounts.
Needs data: Capture audit 2026-10-30. ios: Prior user decision: phone OTP only; no real provider sign-in. android: Prior user decision: phone OTP only; no real provider sign-in.
Welcome to The Raw
Phone already used
Another account uses this number. Enter a different one.
Needs data: Capture audit 2026-10-30. ios: Prior user decision: phone OTP only; no real provider sign-in. android: Prior user decision: phone OTP only; no real provider sign-in.
Welcome to The Raw
Sign-in has expired
Authentication required; Close this and sign in again.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Welcome to The Raw
We couldn't save your details
Any other failure or network throw; check your connection and try again.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Flow diagram
Legal pages from sign-in
Branches and edge cases
Terms of Service
Loading Terms of Service...
Spinner while the PDF renders.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Terms of Service
Unable to Load Document
PDF failed to render; Retry button.
Not reachable on a device: Needs a network fault, crash, race or code change to show
Flow diagram
Screens and states
Sign-in sheet
auth/_layoutSign-in sheet
Modal container for login, code entry and account details.
src/app/auth/_layout.tsxEntry
- Sign in required action
- Account details push
- Deep link to login
Exits
- Close → back to originating screen
- Valid redirect → that screen
- Nothing below → Home
States · 1
src/app/auth/_layout.tsx:36Sign in to The Raw
auth/loginSign in to The Raw
Choose Google, Apple (iOS) or phone number; copy changes by sign-in reason.
src/app/auth/login.tsxEntry
- Gated action
- SignInRequired button
- Deep link /auth/login
Exits
- Send code → code entry
- Terms → Terms of Service
- Privacy Policy → Privacy Policy
- Country prefix → country picker
- Close → leave sheet
- Social success → account stage branch
States · 15
src/app/auth/login.tsx:27src/app/auth/login.tsx:27src/features/auth/components/signing-in-state.tsx:23src/features/auth/components/forms/phone-login-form-input.tsx:29src/integrations/convex/phone-auth-hooks.ts:127src/features/auth/errors/auth-error-messages.tspackages/backend/convex/routes/auth.ts:36src/features/auth/errors/auth-error-messages.tssrc/features/auth/components/forms/phone-login-form-input.tsx:122src/features/auth/components/forms/redesigned-phone-login-form.tsx:47src/features/auth/hooks/use-social-auth.ts:83src/features/auth/hooks/use-social-auth.ts:93src/features/auth/components/forms/redesigned-phone-login-form.tsx:98packages/backend/convex/routes/auth.ts:129packages/backend/convex/auth.ts:429Select Country
PhoneLoginCountryPickerSelect Country
Pick the phone prefix: Malaysia, Singapore, Indonesia or Brunei.
src/features/auth/components/forms/phone-login-country-picker.tsxEntry
- Tap flag or prefix on login
Exits
- Select country → close and set prefix
- Dismiss → close
States · 2
src/shared/constants/countries.ts:15src/features/auth/components/forms/phone-login-form-input.tsx:100Enter the 6-digit code
auth/verifyEnter the 6-digit code
Enter the SMS code; the sixth digit submits automatically.
src/app/auth/verify.tsxEntry
- Send code on login
Exits
- Good code, returning user → originating screen
- Good code, new user → account details
- Change Number → login
- Help icon → support menu
States · 11
src/features/auth/components/forms/otp-verification/otp-input-section.tsx:39src/features/auth/components/forms/otp-verification/index.tsx:104packages/backend/convex/auth.ts:579packages/backend/convex/routes/auth.ts:66src/features/auth/errors/auth-error-messages.ts:36src/features/auth/components/forms/otp-verification/resend-code-section.tsx:51src/features/auth/components/forms/otp-verification/resend-code-section.tsx:62packages/backend/convex/routes/auth.ts:23src/app/auth/verify.tsx:24src/app/auth/verify.tsx:37packages/backend/convex/routes/auth.ts:36Contact Support
SupportHelpButtonContact Support
Header help menu on the code screen with WhatsApp and email support.
src/features/auth/components/support-help-button.tsxEntry
- Help icon on code screen
Exits
- WhatsApp Support → WhatsApp chat
- Email Support → mail composer
States · 2
src/features/auth/components/support-help-button.tsx:25src/features/auth/components/support-help-button.tsx:36Welcome to The Raw
auth/profile-completionWelcome to The Raw
Collect name, email, phone and optional details to create the account.
src/app/auth/profile-completion.tsxEntry
- New user after sign-in
- Unfinished sign-up on restart
- Edit Profile without a profile
Exits
- Create account → originating screen
- Close → stop creating dialog
States · 13
src/app/auth/profile-completion.tsx:47src/app/auth/profile-completion.tsx:50src/app/auth/profile-completion.tsx:109src/features/profile-completion/services/profile-completion-service.tssrc/features/profile-completion/components/account-details-form.tsxsrc/features/profile-completion/validation/profile-validation.tssrc/features/profile-completion/components/account-details-form.tsx:58src/features/profile-completion/hooks/use-submit-account-details.ts:22src/features/profile-completion/hooks/use-submit-account-details.ts:22src/features/profile-completion/hooks/use-submit-account-details.ts:22src/features/profile-completion/hooks/use-submit-account-details.ts:22src/features/auth/hooks/use-post-auth-redirect.ts:5src/features/profile-completion/services/profile-completion-service.tsStop creating your account?
Stop creating your account?
Not captured yet
BrowseAsGuestDialogStop creating your account?
Confirm leaving account setup and browsing as a guest.
src/app/auth/profile-completion.tsxEntry
- Close on account details
Exits
- Browse as guest → sign out, sheet closes
- Keep going → stay on form
States · 2
src/app/auth/profile-completion.tsx:64src/app/auth/profile-completion.tsx:78Signing you in
Signing you in
Not reachable on a device: Transient state lasting under a second after sign-in
SigningInStateSigning you in
Interstitial between a good credential check and the account stage answering.
src/features/auth/components/signing-in-state.tsxEntry
- Login
- Code entry
- Account details
Exits
- Try again → re-check account
States · 2
src/features/auth/components/signing-in-state.tsx:23src/features/auth/components/signing-in-state.tsx:23Authentication Error
Authentication Error
Not reachable on a device: Needs a render error in the auth sheets
AuthErrorBoundaryAuthentication Error
Fallback for render errors inside sign-in and notification permission screens.
src/features/auth/components/auth-error-boundary.tsxEntry
- Render error in login, code, details or notification permission
Exits
- Try Again → reset
- Go Back → Home
States · 2
src/features/auth/components/auth-error-boundary.tsxsrc/features/auth/components/auth-error-boundary.tsx:82Sign in
SignInRequiredSign in
Guest placeholder that opens the sign-in sheet with a reason-based message.
src/shared/components/ui/sign-in-required.tsxEntry
- Guest opens beauty quiz or beauty profile
Exits
- Sign in → sign-in sheet
- Signed in → original action runs
States · 3
src/shared/hooks/use-require-sign-in.ts:36src/shared/hooks/use-require-sign-in.ts:32src/features/auth/hooks/use-resume-sign-in-request.ts:29








































