The Threads iOS app, dissected. Pure black canvas. Zero accent color. The conversation does the talking; the interface vanishes into the gutter.
Threads's app prizes typographic restraint above all. There are no card shadows, no rounded backgrounds for posts, no accent colors saying "look here." Just text, a hairline below it, and the next thought.
Two-tab strip (For you ยท Following) with white-underline active state. Posts sit edge-to-edge on the black canvas, separated only by a 1px hairline at #1f1f1f. No card chrome, no shadows.
Eight filter chips (All / Follows / Replies / Mentions / Quotes / Reposts / Verified / Likes) โ outline by default, white-fill on active. Rows show a tiny colored badge in the avatar's bottom-right corner indicating event type.
Name big 24/800, handle 13/500 muted, Instagram-handle pill (the only "card" on the page). Bio + follower count + mutual-follower avatars. Edit/Share buttons are outlined โ never filled.
When a user posts a thread of replies to themselves, Threads renders a 2px vertical pole between each avatar, anchoring child posts to their parent. The pole is the only "structural" graphic in the app โ everything else is just type.
The pole color is the same hairline gray (#252525) used for post separators โ it has to be visible but never demand attention.
width: 2px
color: #252525
radius: 1px
margin: 4px from avatar
When a user quotes another post, the quoted content renders inside a 1px-bordered rounded rectangle โ the ONLY card-like surface in the app's content stream. The card is 14px radius, sits flush with the body text, never carries a fill.
If the quoted author is verified, the blue check appears at the inline baseline. Original post timestamp is right-aligned in the card header.
border: 1px #252525
radius: 14px
padding: 14px
fill: transparent
The Activity screen uses an outline-by-default, fill-on-active chip system โ 8 chips that scroll horizontally without ever wrapping. Active chip swaps to white fill with black ink. Border color matches the canvas surface ladder.
The chips never use brand colors; the system stays purely monochrome so the activity content (avatars + body text) gets every drop of attention.
idle: border #252525
active: fill #fff
radius: 9999px
padding: 6 ร 14
Every token Threads's iOS app reaches for โ surface ladder, type ramp, radius scale, components. Inherited Meta-blue verified check and Instagram-red heart are the only chromatic notes โ everything else is built from a five-stop gray ladder.
A purely monochrome chassis. Inherited Meta-blue verified check and Instagram-red heart are the only chromatic notes in the entire app โ everything else (typography, separators, chrome) is built from a five-stop gray ladder.
Meta's homegrown Inter (literally โ Threads uses Inter as the system font, no substitution needed). Display 22-24 for screen titles. Body 15/400 with comfortable line-height. Display name 15/600, handle 15/400 muted.
| Token | Sample | Size | Weight | Tracking |
|---|---|---|---|---|
| --prof-name | Jiang Shu | 24 / 1.5rem | 800 | -0.5px |
| --screen-title | Activity | 17 / 1.06rem | 700 | normal |
| --display-name | marie_kn | 15 / 0.94rem | 600 | normal |
| --handle | jiang.shu | 13 / 0.81rem | 500 | normal |
| --body | When the golden hour hits at exactly the right second ๐ | 15 / 0.94rem | 400 | normal |
| --meta | 218 replies ยท 12.4K likes | 13 / 0.81rem | 400 | normal |
| --timestamp | 2h | 12 / 0.75rem | 400 | normal |
| --tab | For you | 13 / 0.81rem | 600 | normal |
| --chip | Replies | 12 / 0.75rem | 600 | normal |
The card was not invented in this app. The only radius that matters lives in two places: media (12px) and the quote-card (14px). Everything else is either a circle (avatar, like burst) or a pill (chip, button) or a flat hairline.
The constants that anchor the iOS implementation.
A vocabulary that refuses ornament. Buttons are either white-on-black (primary) or outlined-on-black (secondary). No fills. No gradients.