Mobile Form UI Audit — Mobbin Screen Sample

Date: 2026-08-10 Purpose: Original quantified data for the "Decision Fatigue in App Forms" video/article. Tests (does not assume) the thesis that empty fields are a churn surface; that smart defaults, steppers/chips, and visible options beat blank inputs and dropdowns; and that placeholder-as-label persists despite NN/g's documented warnings.

Methodology

  • Source: Mobbin design database via MCP (search_screens), platform iOS.
  • Queries (5), limit 12–14 each, deduplicated via exclude_screen_ids: 1. "sign up form with input fields" 2. "booking form with date time and guest selection" 3. "checkout shipping and payment information form" 4. "profile setup form during onboarding" 5. "form with dropdown menus and text inputs"
  • Unit of analysis: the screen (not the app). Target ~60 unique screens.
  • Procedure: Every returned screenshot was visually examined; only visible evidence was tallied. Dimensions not visible/applicable on a screen are marked n/a and excluded from that dimension's denominator.

Tally dimensions (per screen)

  1. Visible input-element count (bucketed 1–2 / 3–5 / 6+)
  2. Prefilled value or smart default present (a real value, not placeholder text)
  3. Label style: persistent (above/floating) vs placeholder-as-label vs mixed
  4. Dominant input mode: free-text fields vs structured controls (chips, steppers, segmented controls, date carousels)
  5. Dropdown/select present that hides its options
  6. Preselected option (radio/chip/segment already chosen)
  7. Optional fields explicitly marked "optional"
  8. Social login / autofill affordances (Sign in with Apple/Google, scan card, autofill hints)
  9. CTA state: disabled-until-complete vs always-active; payoff copy in CTA (e.g., "See 12 results")
  10. Progress/step indicator on multi-step forms
  11. Survey-style field with no plausible downstream effect ("How did you hear about us?", occasion, salutation)

Per-screen observations

Batch 1 — "sign up form with input fields" (13 screens)

1. Hevy — Sign upmobbin Inputs: 3 (3–5). Prefill/smart default: none. Labels: persistent above + example placeholders. Mode: free-text only. Dropdown: no. Preselect: no. Optional marks: no. Social/autofill: none. CTA: "Continue" grayed — disabled-until-complete, no payoff copy. Progress: no. Survey-style field: no.

2. Rivian — Create an accountmobbin Inputs: 4 (3–5). Prefill: values shown are user-typed (demo state), no app-supplied default. Labels: floating (persistent when filled). Mode: free-text. Dropdown: no. Preselect: YES — marketing opt-in checkbox pre-checked. Optional marks: no. Social: none visible. CTA: cut off — n/a. Progress: no. Survey field: no. Note: live password-strength meter ("Good").

3. Preply — Sign upmobbin Inputs: 3 (3–5). Prefill: none. Labels: persistent above + placeholders. Mode: free-text. Dropdown: no. Preselect: no. Optional: no. Social: none on this screen. CTA: always-active, no payoff. Progress: no. Survey: no.

4. ZARA — Personal informationmobbin Inputs: 4 (3–5). Prefill: none. Labels: placeholder-as-label as rendered (inline text on underlines, no separate label visible on empty state). Mode: free-text. Dropdown: no. Preselect: no (news checkbox unchecked). Optional: no. Social: none. CTA: always-active appearance. Progress: no. Survey: no.

5. ClickUp — Sign upmobbin Inputs: 3 (3–5). Prefill: none. Labels: persistent above + placeholders. Mode: free-text. Dropdown: no. Preselect: no. Optional: no. Social: none. CTA: always-active. Progress: no. Survey: no. Note: confirm-password field = duplicated effort.

6. VSCO — Sign upmobbin Inputs: 4 (3–5). Prefill: none. Labels: placeholder-as-label (inline text only, incl. format rule "Password (8+ characters)" crammed into placeholder). Mode: free-text. Dropdown: no. Preselect: no. Optional: no. Social: none. CTA: grayed disabled-until-complete. Progress: no. Survey: no (birthday = age gate).

7. Panera Bread — Let's get startedmobbin Inputs: 5 (3–5). Prefill: user-typed demo values; no app default. Labels: floating persistent, with "Required" suffix per field. Mode: mostly free-text + 1 dropdown. Dropdown: YES (Birthday selector). Preselect: no (marketing toggle default OFF). Optional: YES — "Birthday (Optional)". Social: none. CTA: not visible — n/a. Progress: no. Survey: borderline — birthday, but tied to explicit payoff ("Everyone deserves a birthday treat") → counted no. Note: green inline-validation checks per completed field.

8. Turo — Email sign upmobbin Inputs: 4 (3–5). Prefill: none. Labels: placeholder-as-label on underlines. Mode: free-text. Dropdown: no. Preselect: YES — "Send me promotions" pre-checked. Optional: no. Social: none on this screen. CTA: grayed disabled-until-complete. Progress: no. Survey: no.

9. Ahead — Sign up to save progressmobbin Inputs: 3 (3–5). Prefill: user-typed demo. Labels: floating persistent. Mode: free-text. Dropdown: no. Preselect: no. Optional: no. Social: none. CTA: pale disabled-until-complete. Progress: no. Survey: no. Note: real-time green check / red X per field + password rules stated below field, not in placeholder.

10. Peerspace — Sign up sheetmobbin Inputs: 2 visible (1–2). Prefill: none (email typed). Labels: placeholder-as-label (second field has no visible label at all). Mode: free-text. Dropdown: no. Preselect: YES — "I don't want to receive marketing emails" pre-checked (opt-out default, privacy-positive). Optional: no. Social: YES — Sign up with Facebook (list scrolled, more above). CTA: always-active. Progress: no. Survey: no.

11. On — Create your On accountmobbin Inputs: 2 (1–2). Prefill: none (typed). Labels: floating persistent. Mode: free-text. Dropdown: no. Preselect: no (updates checkbox unchecked). Optional: no. Social: YES — Continue with Google + Continue with Apple. CTA: always-active black, no payoff. Progress: no. Survey: no.

12. Marriott Bonvoy — Joinmobbin Inputs: 6 (6+). Prefill/smart default: YES — Country/Region preset to "Singapore" and dial code preset "+65" (locale-derived). Labels: persistent uppercase above. Mode: free-text + 2 selects. Dropdown: YES (country, dial code). Preselect: yes (country default counts). Optional: YES — "Mobile Phone (Optional)" + blanket "All fields required unless otherwise noted." Social: none. CTA: always-active. Progress: no. Survey: no. Note: 4-bullet password-rule list = heaviest rule display in batch.

13. Mammoth — Create accountmobbin Inputs: 3 (3–5). Prefill: none. Labels: placeholder-as-label, but with persistent helper text BELOW each field. Mode: free-text. Dropdown: no. Preselect: no. Optional: no. Social: none. CTA: grayed disabled-until-complete. Progress: no. Survey: no.

Batch 2 — "booking form with date time and guest selection" (13 screens)

14. Zomato — Book a tablemobbin Inputs: 4 control groups (3–5). Smart default: YES — guests "1" preset, "Tomorrow" date chip preselected, "Dinner" chip preselected. Labels: persistent section headers. Mode: structured dominates (date chips, meal chips, time-slot chips). Dropdown: yes (guest count select). Preselect: yes. Optional: no. Social: n/a. CTA: "Proceed" grayed until time slot chosen; no payoff copy on CTA, but every slot chip shows "2 offers". Progress: no. Survey: no.

15. Swiggy — Book tablemobbin Inputs: 3 groups (3–5). Smart default: YES — guests "2" chip and "Today" preselected. Labels: persistent headers. Mode: structured only (number chips, date chips with "20% off" badges, time chips). Dropdown: no. Preselect: yes. CTA: "Proceed" grayed disabled-until-complete; payoff lives on chips (20% off), not CTA. Progress: no. Survey: no.

16. Google Maps — Restaurant booking (McNellie's)mobbin Inputs: 3 (3–5). Smart default: YES — Party "3", Date "Sat, 21 Sept", Time "18:30" all prefilled. Labels: persistent above. Mode: structured (3 selects + time-chip grid, unavailable slots grayed). Dropdown: YES — 3 selects, one open hiding/revealing options. Preselect: yes. CTA: "Continue" grayed. Progress: no. Survey: no.

17. Deliveroo — Find a tablemobbin Inputs: 4 groups (3–5). Smart default: YES — "2" guests preselected, today (18th) preselected on calendar, "Any time" preselected. Mode: structured only (segmented control, number chips, full visible calendar, radio). Dropdown: no — options all visible. Preselect: yes. CTA: "Search for tables" active teal, always-active; no result count. Progress: no. Survey: no.

18. Tock — Search filtermobbin Inputs: 3 groups (3–5). Smart default: YES — date (Mar 3), time wheel at 6:00 PM, party "2" preselected. Mode: structured only (calendar, inline wheel picker, number chips). Dropdown: no (wheel shows neighboring options). Preselect: yes. CTA: "Update" active blue; "Reset" escape hatch. Progress: no. Survey: no.

19. Careem (Salon&Spa) — Date & timemobbin Inputs: 3 groups (3–5). Smart default: YES — date "17" and slot "07:00-07:30" preselected. Mode: structured dominates; one optional free-text ("Any instructions?") with example placeholder. Dropdown: no. Preselect: yes. Optional: implicit only. CTA: "Next" active green with running Total AED 109.00 beside it — payoff (price) visible at CTA. Progress: YES — progress bar + "Next step: Checkout". Survey: no.

20. Grab — Find available tablesmobbin Inputs: 3 groups (3–5). Smart default: YES — Adults "2", "Wed 10" (today), "8 - 11PM" preselected. Mode: structured only. Progressive disclosure: "Add children" link instead of a default-visible child field. Dropdown: yes ("Select time" chip-dropdown). Preselect: yes. CTA: "Apply" active. Progress: no. Survey: no.

21. Trip.com — Select Booking (tour)mobbin Inputs: 4 groups (3–5). Smart default: YES — option card preselected, Adult quantity stepper at 1, Child at 0. Mode: structured only — date chips with per-date prices, session chips, STEPPERS for quantity. Dropdown: no. Preselect: yes. CTA: "Next" active; price payoff placeholder "$--" until date picked. Progress: no. Survey: no.

22. Beli — Roma reservationmobbin Inputs: 3 groups (3–5). Smart default: YES — Party Size "1" preselected, Sep 24 selected, availability auto-loaded. Mode: structured only (chips, calendar, slot chips labeled OUTDOOR/SEAT). Dropdown: no. Preselect: yes. CTA: none visible (slot chips are the action) — n/a. Progress: no. Survey: no.

23. Viator — Check Availabilitymobbin Inputs: 3 (3–5). Smart default: YES — "Feb 27", "2 Adults", ticket option radio preselected, 11:00am chip selected. Mode: structured only. Dropdown: YES — date + guests as collapsed selects. Preselect: yes. CTA: "Select" active; payoff visible — "1 option available" + "Total: $51.30 (2 Adults x $25.65)". Progress: no. Survey: no.

24. Airbnb — Select a time (experience)mobbin Inputs: 3 groups (3–5). Smart default: YES — "1 adult" stepper preset, first slot preselected. Mode: structured only — STEPPER + slot cards carrying price and scarcity ("$25/guest", "10 spots left"). Dropdown: no. Preselect: yes. CTA: "Next" with live payoff "$25 for 1 guest" beside it. Progress: no. Survey: no.

25. TheFork — Reserve sheetmobbin Inputs: 3 (3–5). Smart default: YES — wheel picker lands on Today / 12:30 PM / 2 guests. Mode: structured only (3-column wheel, neighboring options visible). Dropdown: no. Preselect: yes. CTA: "Apply" active + "Ignore" skip. Progress: no. Survey: no.

26. Resy — Search availabilitymobbin Inputs: 3 groups (3–5). Smart default: YES — Guests "2" chip, "Sat Oct 12", Time "All Day" preselected on wheel. Mode: structured only. Dropdown: no. Preselect: yes. CTA: "Search" active. Progress: no. Survey: no.

Batch 4 — "profile setup form during onboarding" (13 screens)

(Note: file order is batches 1, 2, 4, 3 due to append sequence; entry numbers are canonical.)

40. Notion — Create your profilemobbin Inputs: 1 text + photo (1–2). Prefill: name shows "Alex Smith" — plausibly carried from account/SSO but unverifiable in a static screen → not counted. Labels: persistent above. Mode: free-text. Dropdown: no. Preselect: YES — "I agree to Notion marketing communications" pre-checked. Optional: YES — "Upload photo (optional)". CTA: "Next" active. Progress: no. Survey: no.

41. MasterClass — Your Profilemobbin Inputs: 2 (1–2). Prefill: YES — "Please confirm your profile" framing with name and photo already populated from account. Labels: persistent above; * marks required. Mode: free-text. Dropdown: no. Preselect: no. Optional: no. CTA: "NEXT" active. Progress: no. Survey: YES — "What brings you to this class?" free-text motivation box (467-char counter) with no visible downstream effect.

42. Airtasker — Create your profilemobbin Inputs: 5 groups (3–5). Prefill: none. Labels: persistent above (+placeholder duplicates). Mode: mixed — 3 free-text + 2 choice questions rendered as fully visible tap cards ("Get things done / Earn money"; "Individual / Business") — options shown, not hidden. Dropdown: no. Preselect: no — cards start unchosen. Optional: no. CTA: "Get started" active. Progress: no. Survey: no (goal question routes the two-sided marketplace).

43. Alma — Welcome / profile basicsmobbin Inputs: 5 (3–5). Prefill: none — every select reads "Select". Labels: mixed — small persistent labels on selects, name as placeholder-as-label. Mode: dropdown-heavy. Dropdown: YES — FOUR selects (Sex at Birth, Age, Height, Weight) all hiding options; number entry via dropdown. Preselect: no. Optional: no. CTA: none visible — n/a. Progress: YES — dashed multi-step indicator (10+ segments). Survey: no (health inputs feed the plan).

44. WHOOP — Setup your profile (Step 1/6)mobbin Inputs: 4 (3–5). Prefill: none — Country select sits at "---", not even locale-defaulted. Labels: persistent uppercase above. Mode: free-text + 1 select. Dropdown: yes. Preselect: no. Optional: no. CTA: "NEXT" dim outline — disabled-until-complete. Progress: YES — "STEP 1 / 6". Survey: no.

45. HBO Max — Complete Your Profilemobbin Inputs: 5 (3–5). Prefill/smart default: YES — Gender select defaults to "Prefer not to say" (privacy-preserving default). Labels: persistent above. Mode: free-text + segmented birthdate boxes + select. Dropdown: yes (Gender). Preselect: yes. Optional: no. CTA: "Save & Continue" active. Progress: no. Survey: borderline — age/gender collected "to provide a more personalized experience, including ads"; app explains why in a footnote → counted no, but noted as justified-data-grab pattern.

46. Substack — Create a profilemobbin Inputs: 1 text + social-link adders (1–2). Prefill: none. Labels: placeholder-as-label ("Your name"). Mode: free-text + structured add-link buttons. Dropdown: no. Preselect: no. Optional: no marks. CTA: "Continue" grayed disabled-until-complete. Progress: no. Survey: no.

47. Formula 1 — Complete Your Profilemobbin Inputs: 3 + T&C checkbox (3–5). Prefill: none — Country not locale-defaulted. Labels: persistent above + placeholder duplicate. Mode: dropdown-only. Dropdown: YES — 3 selects (Country, Favourite Team, Favourite Driver); a 10-team choice hidden behind a select instead of visible chips. Preselect: no. Optional: no. CTA: "Next" pale — disabled-until-complete. Progress: no. Survey: no (favourites feed content personalization).

48. Uxcel Go — Welcome (about yourself)mobbin Inputs: 4 (3–5). Prefill: values shown but unverifiable as app-supplied → not counted. Labels: placeholder-as-label — once filled, NO field shows what it asked ("Senior" and "Social media (Facebook/LinkedIn/Inst...)" sit unlabeled) — textbook NN/g failure visible in a shipped top app. Mode: 1 free-text + 3 dropdowns. Dropdown: YES. Preselect: unclear — not counted. Optional: no. CTA: "Continue" active. Progress: YES — progress bar. Survey: YES — "how did you hear about us"-type referral-source dropdown (answer shown: "Social media").

49. Deel — Complete profilemobbin Inputs: 8+ (6+). Prefill/smart default: YES — Dial Code "+1" locale-preset; Preferred name auto-populated "(optional)" from legal name. Labels: floating persistent. Mode: free-text + 5 selects. Dropdown: YES — Citizen of, Dial Code, Department, Job title, Seniority. Preselect: yes. Optional: YES — "Preferred name (optional)". CTA: "Complete profile" active. Progress: no. Survey: no (HR/payroll fields are contract-relevant; DOB justified in helper text "required for regulatory and verification reasons").

50. Citizen — Create your profilemobbin Inputs: 2 (1–2). Prefill/smart default: YES — auto-generated username "sacramentoUser1859419007" prefilled with a clear-X; user can accept and move on. Labels: placeholder-as-label. Mode: free-text. Dropdown: no. Preselect: yes. Optional: no. CTA: "Continue" active. Progress: no. Survey: no.

51. CREME — Tell us about yourselfmobbin Inputs: 3 (3–5). Prefill: name/username/email all populated; username "samlee" looks auto-derived from name and email likely carried from auth — but unverifiable → not counted (noted as plausible). Labels: floating persistent. Mode: free-text. Dropdown: no. Preselect: no. Optional: no. CTA: arrow button active. Progress: no. Survey: no.

52. CHOPT — Create your profilemobbin Inputs: 6 (6+). Prefill: none. Labels: placeholder-as-label for ALL six pill fields, with format masks crammed into placeholders ("Phone number (XXX) XXX-XXXX*", "Birthday (MM/DD)"). Mode: free-text only. Dropdown: no. Preselect: no. Optional: inverse — "All fields with a * are required"; Birthday lacks * and carries payoff helper "So we know when to celebrate." → counted no explicit "optional" word. CTA: "LET'S DO THIS" grayed disabled-until-complete. Progress: no. Survey: no (birthday tied to implied reward).

Batch 3 — "checkout shipping and payment information form" (13 screens)

27. Google Photos — Checkout (print order)mobbin Inputs: 7 (6+). Smart default: filled values appear user-typed — not counted. Labels: floating persistent. Mode: free-text dominates + 1 select. Dropdown: yes (State). Preselect: no. Optional: no explicit marks. Autofill/express: YES — Google Pay button at top. CTA: below fold — n/a. Progress: no. Survey: no.

28. Gymshark — Checkoutmobbin Inputs: 7+ (6+). Smart default: none visible. Labels: placeholder-as-label (boxes with inline text only). Mode: free-text dominates. Dropdown: yes (State). Preselect: YES — Credit/Debit Card radio preselected. Optional: no. Autofill: card-brand icons only. CTA: below fold — n/a. Progress: no. Survey: no. Note: shipping-method section blocked with dependency message ("Enter your shipping address to view available shipping methods").

29. Future Pro — Pay with Credit Cardmobbin Inputs: 9 (6+). Smart default: none. Labels: placeholder-as-label for ALL nine fields (underline style). Mode: free-text only (even State). Dropdown: no. Preselect: no. Optional: YES — "Apt, suite, etc. (Optional)". Autofill: Stripe-style combined card field. CTA: "Subscribe" grayed disabled-until-complete. Progress: no. Survey: no. Worst-practice candidate: 9 unlabeled-when-filled fields + disabled CTA.

30. On — Checkout (shipping)mobbin Inputs: 8 (6+). Smart default: YES — Country preset "United States"; Standard Delivery $5.00 radio preselected. Labels: floating persistent. Mode: free-text + selects + radio list. Dropdown: yes (Country, State). Preselect: yes. Optional: YES — "Apartment, suite, etc. (optional)". Autofill: address-search field ("Please enter an address with a house number" + magnifier = autocomplete). CTA: below fold — n/a. Progress: no. Survey: no.

31. Best Buy — Payment Informationmobbin Inputs: 8 (6+). Smart default: card brand auto-detected (Visa logo appears). Labels: persistent above. Mode: free-text + select. Dropdown: yes (State "Select"). Preselect: YES — "Save this card to my profile" pre-checked. Optional: YES — "Add Apt., Suite, Floor (Optional)" as progressive-disclosure link. Autofill: YES — address suggestions active ("Hide Suggestions"), card-type detection, CVV visual hint. CTA: below fold — n/a. Progress: no. Survey: no.

32. Artsy — Purchase (shipping)mobbin Inputs: 8 (6+). Smart default: YES — Country preset "United States". Labels: MIXED — Country has persistent label, remaining fields placeholder-as-label. Mode: free-text dominates. Dropdown: yes (Country). Preselect: YES — "Save shipping address for later use" pre-checked. Optional: YES — "Address line 2 (optional)". Autofill: none visible. CTA: below fold — n/a. Progress: no. Survey: no.

33. Zalando — Checkout payment methodmobbin Inputs: 5 (3–5). Smart default: none (payment method radio preselected). Labels: persistent boxed labels above every input. Mode: free-text card fields + radio list (all payment options visible, not hidden in dropdown). Dropdown: no. Preselect: YES — Credit/Debit Card + "New Credit or Debit Card" radios preselected. Optional: YES — "Voucher / Gift card (optional)". Autofill: card icons; store-details checkbox default OFF. CTA: below fold — n/a. Progress: possible step arrows top-right — not counted. Survey: no.

34. Expedia — Secure checkoutmobbin Inputs: 7 (6+). Smart default: none visible. Labels: persistent above with red required asterisks (inverse of optional-marking: marks required instead). Mode: free-text + 2 dropdowns. Dropdown: YES — Month/Year expiration selects (hides options; classic anti-pattern vs MM/YY field). Preselect: yes — Debit/Credit Card tab active. Optional: no ("required" marked instead). Autofill: Click-to-Pay option, card icons. CTA: below fold — n/a. Progress: no. Survey: no.

35. Superpower — Checkout (web flow)mobbin Inputs: 5 (3–5) + 2 consent checkboxes. Smart default: YES — Country "United States" preset; "Card" chip preselected. Labels: persistent for section, placeholder-as-label for card fields. Mode: mixed — payment methods as visible chips (Card/Apple Pay/Bank/Klarna), free-text card fields. Dropdown: YES — "Select biological sex" select hiding its (few) options. Preselect: yes (Card chip). Optional: no. Autofill: YES — Apple Pay + Stripe Link ("Secure, fast checkout with Link"). CTA: not visible — n/a. Progress: no. Survey: no (biological sex is lab-relevant for this health product). Note: dropdown for a 2–3 option question = hidden-options anti-pattern flagged by thesis.

36. Grailed — Review Offermobbin Inputs: 9 (6+). Smart default: none (address not added — red "Add a shipping address" alert link). Labels: placeholder-as-label for ALL fields. Mode: free-text only. Dropdown: no (Country as free text box). Preselect: YES — "Save card securely for future use" toggle pre-ON. Optional: no. Autofill: card icons only. CTA: "CHOOSE PAYMENT METHOD" grayed disabled-until-complete; price visible above. Progress: no. Survey: no.

37. Vivino — Delivery addressmobbin Inputs: 10 (6+). Smart default: YES — Country "United States" preset; City "Menlo Park" + State "California" filled while ZIP is still empty (location-derived prefill). Labels: floating persistent. Mode: free-text only. Dropdown: no. Preselect: no. Optional: YES — Company and Apt/suite both marked "Optional". Autofill: email prefilled from account. CTA: below fold — n/a. Progress: no. Survey: no.

38. Crate & Barrel — Checkout paymentmobbin Inputs: 2 (1–2). Smart default: YES — saved Visa ***6660 with expiry preloaded. Labels: persistent above + "required" suffix. Mode: free-text (2 verification fields) + radio list. Dropdown: no. Preselect: YES — Credit/Debit Card radio. Optional: inverse ("required" marked). Autofill: Apple Pay, saved card, CVV picture hint. CTA: "Apply" active black. Progress: no. Survey: no. Note: forces full card-number re-verification of an already-saved card — deliberate security friction.

39. HBX — Checkout reviewmobbin Inputs: 4 rows (3–5). Smart default: YES — email, full shipping address, shipping method ($32 Standard + delivery estimate), and card payment method ALL prefilled/preselected; zero typing left. Labels: persistent left-column labels. Mode: structured — payment options as fully visible radio list (6 options), nothing hidden. Dropdown: no. Preselect: yes. Optional: no. Autofill: Apple Pay, PayPal, Atome, Afterpay. CTA: "BUY WITH CREDIT CARD" active — dynamic CTA that names your chosen method. Progress: no. Survey: no.

Batch 5 — "form with dropdown menus and text inputs" (12 screens)

53. Premier League — Your Detailsmobbin Inputs: 5 controls (3–5). Smart default: NO — dial code sits at "+00", country at "Select one"; not even locale defaults. Labels: persistent above + "*Required". Mode: dropdown-dominant (DOB as 3 selects, country select, dial select). Dropdown: YES. Preselect: no. Optional: inverse (required marked). Autofill: none. CTA: below fold — n/a. Progress: no. Survey: YES — DOB + country of residence demanded just "to receive emails" (marketing-list data grab).

54. Gemini — "Just a few more questions" (KYC)mobbin Inputs: 6 (6+). Smart default: none verifiable (values shown are user-chosen mid-flow). Labels: persistent above. Mode: dropdown-only — 6 consecutive selects (Industry, Annual income, Purpose, Source of funds, Trading activity, Nationality). Dropdown: YES — 6. Preselect: no. Optional: no. Autofill: none. CTA: "Next" active. Progress: no — but header copy "Just a few more questions" tacitly admits fatigue. Survey: no — KYC-mandated (regulatory forms resist chip-ification).

55. Best Buy — Address entry with live autocompletemobbin Inputs: 5 (3–5). Smart default: no. Labels: persistent above. Mode: free-text + select. Dropdown: yes (State "Select", undefaulted). Preselect: no. Optional: no. Autofill: YES — 7 live address suggestions shown while typing ("hide suggestions" toggle); one tap replaces 4 fields. CTA: keyboard covers — n/a. Progress: no. Survey: no.

56. Alipay — Identity verification (passport)mobbin Inputs: 5 (3–5). Smart default: no. Labels: persistent above (Chinese). Mode: 2 free-text + 3 hidden pickers (gender select, 2 date pickers, all reading "please select"). Dropdown: YES. Preselect: no. Optional: no. Autofill: none. CTA: "提交" (Submit) pale — disabled-until-complete. Progress: no. Survey: no (ID verification).

57. KakaoBank — Employment / KYC infomobbin Inputs: 6 (6+). Smart default: YES — stored address auto-populated with a "변경" (change) button; reuse-not-retype. Labels: persistent. Mode: mixed — 3 selects + text + stored-value rows. Dropdown: YES. Preselect: yes. Optional: no. Autofill: saved address. CTA: "다음" (Next) grayed — disabled-until-complete. Progress: no. Survey: no (KYC).

58. Nutmeg — Identity informationmobbin Inputs: 6 (6+). Smart default: no (wheel merely rests on "Mr", first option). Labels: persistent floating. Mode: free-text + 2 selects (Title wheel open showing Mr/Mrs/Miss/Ms; Gender select with "?" tooltip). Dropdown: YES. Preselect: no. Optional: no — "Middle names" not marked optional though it effectively is. Autofill: none. CTA: picker "Done" — n/a. Progress: YES — thin progress bar under header. Survey: YES — Title/salutation (Mr/Mrs/Miss/Ms), the canonical changes-nothing field, for an investment app.

59. Gmail (Google account) — Basic informationmobbin Inputs: 4 (3–5). Smart default: YES — Gender preset to "Rather not say" (privacy-preserving default). Labels: floating persistent (outlined Material style). Mode: mixed — 2 selects + 2 text boxes. Dropdown: yes. Preselect: yes. Optional: no. Autofill: none. CTA: "Next" active. Progress: no. Survey: borderline — birthday/gender with a "why we ask" link (g.co/age-gender); counted no (age gate) but noted as justified-collection pattern.

60. Walmart — Create a baby registrymobbin Inputs: 4 (3–5). Smart default: YES — baby's gender select preset to "Surprise" (a whimsical default that makes the question skippable). Labels: persistent above + *. Mode: free-text + select. Dropdown: yes. Preselect: yes. Optional: no. Autofill: none. CTA: "Continue" active + "Previous" (multi-step nav, but no progress indicator). Progress: no indicator. Survey: no.

61. Turo — Addressmobbin Inputs: 5 (3–5). Smart default: YES — Country preset "United States" (locale). Labels: persistent above. Mode: free-text + 2 selects. Dropdown: yes. Preselect: yes. Optional: no. Autofill: none visible. CTA: "Next" active. Progress: no. Survey: no.

62. Scoot — Personal Details (profile)mobbin Inputs: 7 (6+). Smart default: YES — saved profile data repopulated (Title, name, DOB masked, nationality). Labels: persistent above. Mode: free-text + 4 selects. Dropdown: YES (Title, DOB, Marital Status, Nationality). Preselect: no new choices. Optional: no. Autofill: profile reuse. CTA: below fold — n/a. Progress: no. Survey: YES — Marital Status ("Select") and Title for an airline; neither changes anything about flying.

63. Marriott Bonvoy — Guest Informationmobbin Inputs: 7+ (6+). Smart default: YES — name, dial code +1, phone, Country "Singapore" prefilled from profile; only address remains ("PLEASE COMPLETE" injected as field value — an odd error-state pattern). Labels: persistent uppercase + * + "(OPTIONAL)" on address line 2. Mode: free-text + selects. Dropdown: yes. Preselect: yes. Optional: YES. Autofill: profile reuse. CTA: below fold — n/a. Progress: no. Survey: no.

64. Artsy — Artwork details (sell flow)mobbin Inputs: 3 (3–5). Smart default: no. Labels: placeholder-as-label (inline text in boxes; "*Required" floats below the Medium select). Mode: free-text + 1 select. Dropdown: yes (Medium). Preselect: no. Optional: inverse (required marked). Autofill: none. CTA: "Continue" grayed — disabled-until-complete; "Back" + "Save & Exit" escape hatches. Progress: YES — progress bar at top. Survey: no.


Results

n = 64 unique iOS screens, 60 distinct apps (Marriott Bonvoy, Best Buy, Artsy, On, Turo appear twice in different flows), collected 2026-08-10.

Counts and percentages

Dimension Result n (denominator)
Visible inputs: 1–2 7 (11%) 64
Visible inputs: 3–5 40 (62%) 64
Visible inputs: 6+ 17 (27%) 64
Prefilled value / smart default present 30 (47%) 64
— among booking forms (batch 2) 13 (100%) 13
— among signup forms (batch 1) 1 (8%) 13
— among checkout forms (batch 3) 6 (46%) 13
— among profile-setup forms (batch 4) 4 (31%) 13
Labels: persistent (above/floating) 48 (75%) 64
Labels: placeholder-as-label (pure) 13 (20%) 64
Labels: mixed 3 (5%) 64
Placeholder-as-label incl. mixed 16 (25%) 64
Dominant mode: free-text 36 (56%) 64
Dominant mode: structured-visible (chips/steppers/calendars/cards/radio lists) 15 (23%) 64
Dominant mode: dropdown/picker-dominant 7 (11%) 64
Dominant mode: mixed 6 (9%) 64
Any option-hiding dropdown/select present 31 (48%) 64
— excluding the dropdown-seeded batch 5 19 (37%) 52
Any preselected option (radio/chip/segment/checkbox) 37 (58%) 64
— pre-checked marketing consent specifically 3 (5%) + 1 privacy-positive opt-out 64
Optional fields explicitly marked "optional" 11 (17%) 64
— inverse convention (marks "required" instead) ~9 (14%) 64
Social login / autofill / express-pay affordance visible 10 (16%) 64
CTA visible on screen 46 64
— disabled-until-complete 17 (37%) 46
— always-active 29 (63%) 46
— CTA paired with live payoff (price/result count) 3 (7%) 46
Progress/step indicator 6 (9%) 64
Survey-style field (changes nothing downstream) 5 (8%) 64

Most interesting patterns (prose)

1. Smart defaults are a genre, not a general practice. 47% of all screens show at least one app-supplied prefill — but the aggregate hides a chasm. Booking forms defaulted everything: 13 of 13 arrived with guests, date, and time already chosen (Zomato, Resy, Tock, Airbnb, TheFork...). Signup forms defaulted almost nothing: 1 of 13 (Marriott's locale-derived country + dial code). The industry has apparently concluded that defaults sell reservations but has not applied the same logic to its own registration walls — the exact screens where churn is measured.

2. Placeholder-as-label survives a decade of NN/g warnings — in 1 of 5 top apps. 13 of 64 screens (20%, 25% counting mixed) still use disappearing placeholder labels, including Future Pro (nine consecutive unlabeled fields), CHOPT (six, with format masks like "(XXX) XXX-XXXX*" stuffed into the placeholder), Grailed, Gymshark, and ZARA. Uxcel Go is the textbook exhibit: once its dropdowns are filled, the screen reads "Alex / Product Designer / Senior / Social media" — four answers with no visible questions. The 75% majority has moved to persistent/floating labels, so this is now a laggard pattern, not a norm — but the laggards are household names.

3. Free-text still dominates overall (56%), and the structured minority clusters where money changes hands. Chips, steppers, calendars, and visible radio lists dominate 23% of screens — almost all booking and checkout-review flows. Nobody asked "how many guests?" with a text box; nobody offered a stepper for "first name." The pattern is rational, but the near-total absence of structured controls in signup/profile flows (Airtasker's tap cards being the notable exception) suggests habit, not analysis.

4. Dropdowns keep hiding small option sets. 37% of screens outside the dropdown-seeded batch contain at least one option-hiding select. The worst offenses hide tiny sets: Superpower puts ~3 biological-sex options behind a select, Formula 1 hides ~10 teams, Nutmeg wheels through four salutations, and Alma asks for age, height, and weight — numbers — via four dropdowns. Expedia still ships the Month/Year expiry selects that a masked MM/YY field replaced years ago elsewhere.

5. Disabled-until-complete CTAs are a strong minority: 37%. 17 of 46 visible CTAs are grayed out until every field validates (Hevy, VSCO, Turo, Mammoth, Substack, F1, CHOPT, Alipay, KakaoBank...). Only 3 of 46 CTAs (7%) pair the button with a live payoff — Airbnb ("$25 for 1 guest"), Viator ("1 option available" + total), Careem (running total beside "Next"). The "See 12 results" pattern the thesis champions is nearly extinct in this sample; payoff copy lives on chips (Swiggy's "20% off" badges, Zomato's "2 offers") rather than on the button.

6. Preselected choices are mainstream (58%) — and a few are dark. Most preselections are benign accelerators (payment method radio, standard shipping, today's date). But 3 screens pre-check marketing consent (Rivian, Turo, Notion), one inverts it in the user's favor (Peerspace pre-checks "I don't want marketing emails"), and HBO Max and Gmail both default gender to "prefer/rather not say" — privacy-preserving defaults as brand posture.

7. "Optional" is marked on only 17% of screens; 14% mark "required" instead. Two competing conventions coexist, sometimes within one brand (Marriott marks "(Optional)" on one screen, asterisks on another). Meanwhile survey-style fields are rarer than the thesis might predict — 8% — but vivid: Nutmeg's Mr/Mrs/Miss/Ms wheel, Scoot's Marital Status for a flight, Uxcel's "how did you hear about us," MasterClass's 467-character "What brings you to this class?", and the Premier League demanding your birth date just to join a mailing list.

8. The best checkouts have stopped being forms. HBX and Crate & Barrel render checkout as a review of stored decisions — everything prefilled, one or two verification taps left. Best Buy's live address autocomplete collapses four fields into one tap. The frontier pattern isn't "better empty fields"; it's eliminating the field.

Per-app verdicts — 10 most instructive screens

Overall takeaway to compare against: top apps default and structure transactional forms aggressively, but still greet new users with blank free-text walls; placeholder-as-label and option-hiding dropdowns persist in a stubborn minority.

  1. Airbnb (booking, #24) — ALIGNED. The whole thesis on one screen: stepper preset to 1 adult, first slot preselected, price and scarcity on every option, CTA shows "$25 for 1 guest."
  2. HBX (checkout, #39) — ALIGNED. Zero-typing checkout: address, method, and payment all prefilled; 6 payment options as a visible radio list; CTA dynamically names your chosen method.
  3. Deliveroo (booking, #17) — ALIGNED. Nothing hidden: full calendar, guest chips, segmented date mode, everything defaulted, always-active CTA.
  4. Citizen (profile, #50) — ALIGNED. Auto-generates a username ("sacramentoUser…") so the naming decision is optional, not blocking.
  5. Marriott Bonvoy (signup, #12) — PARTIAL. The only signup with smart defaults (locale country + dial code) — proving it's possible — yet still 6+ fields and a 4-bullet password-rule wall on one screen.
  6. Gemini (KYC, #54) — PARTIAL. A 6-dropdown wall, but regulator-mandated content; its "Just a few more questions" header is the sample's only honest acknowledgment of form fatigue.
  7. Future Pro (payment, #29) — VIOLATES. Nine free-text fields, every label a disappearing placeholder, grayed CTA — the churn-surface archetype.
  8. Formula 1 (profile, #47) — VIOLATES. Hides a ~10-team fan choice behind a dropdown (chips would show the whole grid), doesn't default country, and greys the CTA.
  9. Uxcel Go (profile, #48) — VIOLATES on labels. Filled placeholder-labeled dropdowns leave answers with no visible questions — NN/g's documented failure, shipped — plus a "how did you hear about us" survey field.
  10. CHOPT (profile, #52) — VIOLATES. Six placeholder-labeled pills with format masks as placeholders, disabled CTA; only its birthday field ("So we know when to celebrate") shows payoff thinking.

Exemplars

Strong (3): - Airbnb — stepper + preselected slot + payoff CTA: https://mobbin.com/screens/e4fff56f-b88d-4e5f-9d84-4b423ec7e108 - HBX — zero-typing prefilled checkout, visible options, dynamic CTA: https://mobbin.com/screens/653974f5-c6c4-49ea-9251-cffafaff5b5b - Deliveroo — all options visible, all defaulted: https://mobbin.com/screens/830d9cb1-c033-482f-91c4-9bc388cb699a

Weak (2): - Future Pro — 9 placeholder-labeled blank fields, disabled CTA: https://mobbin.com/screens/913dac22-7a38-4de9-ab01-ff9bb38cfbbc - Formula 1 — small option sets hidden in dropdowns, no defaults, disabled CTA: https://mobbin.com/screens/c73b597c-6f62-4281-a573-b6db8a251b0d

Methodology note (honest limits)

This is a curated, relevance-ranked sample, not a random one. Mobbin indexes design-notable top apps, and search_screens returns the best matches for each query — so the sample skews toward well-regarded design and toward screens that match the query phrasing (batch 5 was deliberately seeded with "dropdown," inflating the overall dropdown count; the excluding-batch-5 figure is reported alongside). The unit is the screen, not the app: five apps appear twice, and a single screen can't reveal flow-level behavior (e.g., whether a placeholder label floats on focus, or whether a filled value was app-prefilled or user-typed — ambiguous cases were counted conservatively as not prefilled, so the 47% smart-default figure is a floor for visible-prefill states, not a claim about app capability). Several CTAs and page bottoms were cut off by the capture viewport and excluded from CTA denominators (n=46). Percentages on n=64 carry roughly ±12pt margins at 95% confidence if treated as a sample of a larger population; treat them as descriptive of this sample.