Minh Trần just signed up: 0 followers, 1 following (the founder
auto-follow), no journeys, no badges. These are the states the App Review reviewer meets in their first five
minutes — and every real user's first day. Doctrine: honest ≠ empty cuts both
ways — we don't guilt a quiet screen into activity, and we don't paper a real
zero over with filler. The one loud exception is the feed: a zero-follow feed is
Discover-fed, never blank — that's its own full mock,
feed-empty.html. Everything here stays quiet on purpose.
Chrome identical to notifications.html; no on-air strip (no live step), no rows, no CTA. Activity reports what people did — when nobody has yet, it says so once and stops talking.
Activity is not a growth surface. It reports what people did; an empty report gets one calm sentence in the system voice, not an illustration, not a button. The copy teaches the vocabulary — heart, comment, share, step with — so the first real row already makes sense.
No tangerine dot on the tab, no badge: zero unseen rows means zero signals. The badge model stays server-truthful from minute one.
Chrome identical to profile.html (own profile). No on-air card — nothing is live. The doors stand with honest zeros; the "+" tile is the page's one hero and its only CTA.
The doors stay on screen at 0 and 0 — muted, not accented, with one seat-line each that says what will live there. Doors are vocabulary, not shame: hiding them until they're impressive would teach the page's most important objects last. They stay tappable — badges.html already answers the empty visit ("Badges arrive on their own — all you ever do is show up").
The one CTA on the page is Start a journey — the dashed "+" tile grown into the filmstrip slot's hero. No on-air card, no follower bar, nothing borrowed from the populated layout that would render as a hole.
Chrome identical to search.html (typed state, query "quangminh99"). The people search found nothing; the page says so and offers exactly one useful thought.
A person-lookup that finds nothing gets no trending journeys, no suggested people, no "you might like" stuffed underneath. The user asked a specific question; padding the answer teaches them the results can't be trusted. The landing state (recents + discovery zones) is one ✕-tap away — discovery lives there, on purpose.
Two lines only: the honest zero, then the one useful thought — spelling, or the person isn't on Stepo yet.