The Drift Ledger
Every night Mozaika re-measures the design systems of 108 of the web's most-referenced products and writes down what moved — including the nights nothing did. Over the 15 nights from 2026-07-23 to 2026-08-06, 72 products did not move a single measured token, 12 shipped a change that stuck, and 22 carry a value that never settles between measurements.
This is a static, crawlable rendering for search & AI engines. The interactive version — filters, live decode console, copy & export — is at https://mozaika.design/drift.
72 of 108 products held every measured token for 15 nights
Confirmed changes
A change is only listed here once the new value has survived at least 2 further nightly measurements. 13 qualify in this window.
2026-08-04 — max.com
max.com moved its hero size (measured) from 64 to 56 and 2 other tokens. Held for 2 further nights.
| token | before | after |
|---|---|---|
| hero size (measured) | 64 | 56 |
| hero weight | 700 | 100 |
| headline size | 64px | 56px |
2026-08-03 — imdb.com
imdb.com retimed its transition duration from 150 to 200. Held for 3 further nights.
| token | before | after |
|---|---|---|
| transition duration | 150 | 200 |
2026-07-31 — grok.com
grok.com changed its button colour from #000000 to #050505 and 1 other token. Held for 6 further nights.
| token | before | after |
|---|---|---|
| button colour | #000000 | #050505 |
| primary button fill | #000000 | #050505 |
| card shadow | rgba(0, 0, 0, 0.2) 0px 0px 18px 0px | rgb(255, 255, 255) 0px 0px 0px 0px, rgba(5,… |
2026-07-31 — nike.com
nike.com retimed its transition duration from 500 to 650. Held for 6 further nights.
| token | before | after |
|---|---|---|
| transition duration | 500 | 650 |
2026-07-30 — onepeloton.com
onepeloton.com moved its container width from 1220 to 1224. Held for 7 further nights.
| token | before | after |
|---|---|---|
| container width | 1220 | 1224 |
2026-07-29 — 1password.com
1password.com moved its container width from 820 to 1250 and 2 other tokens. Held for 8 further nights.
| token | before | after |
|---|---|---|
| container width | 820 | 1250 |
| body size (measured) | 20 | 16 |
| body size | 20px | 16px |
2026-07-29 — disneyplus.com
disneyplus.com moved its hero size (measured) from 40 to 44 and 2 other tokens. Held for 8 further nights.
| token | before | after |
|---|---|---|
| hero size (measured) | 40 | 44 |
| hero weight | 700 | 900 |
| headline size | 40px | 44px |
2026-07-29 — walmart.com
walmart.com moved its spacing base unit from 6 to 4. Held for 8 further nights.
| token | before | after |
|---|---|---|
| spacing base unit | 6 | 4 |
2026-07-29 — whatsapp.com
whatsapp.com retimed its easing curve from linear to cubic-bezier(0.33, 0,…. Held for 8 further nights.
| token | before | after |
|---|---|---|
| easing curve | linear | cubic-bezier(0.33, 0, 0, 1) |
2026-07-26 — shein.com
shein.com changed its button colour from #F8CD1F to #FF3351. Held for 11 further nights.
| token | before | after |
|---|---|---|
| button colour | #F8CD1F | #FF3351 |
2026-07-24 — threads.net
threads.net changed its button colour from #000000 to #FFFFFF and 5 other tokens. Held for 13 further nights.
| token | before | after |
|---|---|---|
| button colour | #000000 | #FFFFFF |
| primary button fill | #000000 | #FFFFFF |
| primary button radius | 10px | 16px |
| hero size (measured) | 20 | 32 |
| hero weight | 700 | 800 |
| headline size | 20px | 32px |
2026-07-24 — outlook.com
outlook.com changed its button colour from #0063B7 to #091F2C. Held for 13 further nights.
| token | before | after |
|---|---|---|
| button colour | #0063B7 | #091F2C |
2026-07-23 — whatsapp.com
whatsapp.com changed its link colour from #111B21 to #FFFFFF. Held for 14 further nights.
| token | before | after |
|---|---|---|
| link colour | #111B21 | #FFFFFF |
Values that never settled
These measurements alternated between nights instead of holding. A live experiment, rotating or personalised content, and a page that simply renders differently each run all look the same from the outside, so Mozaika reports the instability rather than guessing the cause. Either way: do not hard-code these.
| product | token | flips | values seen |
|---|---|---|---|
| outlook.com | transition duration | 12 | 125 · 200 · 1200 |
| ebay.com | button colour | 10 | #553B06 · #002B20 · #0968F6 · #01193D · #562F01 · #570303 |
| ebay.com | primary button fill | 10 | #553B06 · #002B20 · #0968F6 · #01193D · #562F01 · #570303 |
| harviontechnologies.com | card shadow | 10 | rgba(0, 0, 0, 0) 0px … · rgba(0, 0, 0, 0) 0px … · rgba(0, 0, 0, 0) 0px … · rgba(0, 0, 0, 0) 0px … · rgba(0, 0, 0, 0) 0px … |
| outlook.com | background colour | 9 | #FFFFFF · #FFFDFB |
| outlook.com | text colour | 9 | #000000 · #17253D |
| outlook.com | primary button fill | 9 | rgba(0, 0, 0, 0) · #091F2C |
| outlook.com | primary button radius | 9 | 2px · 8px |
| outlook.com | headline size | 9 | 50px · 62px |
| outlook.com | body size | 9 | 16px · 14px |
| outlook.com | hero size (measured) | 9 | 50 · 62 |
| outlook.com | hero weight | 9 | 600 · 500 |
| outlook.com | body size (measured) | 9 | 16 · 14 |
| outlook.com | spacing base unit | 9 | 4 · 8 |
| outlook.com | container width | 9 | 1300 · 1328 |
| amazon.com | headline size | 8 | 21px · 24px |
| amazon.com | hero size (measured) | 8 | 21 · 24 |
| ryanair.com | headline size | 8 | 24px · 50px |
| ryanair.com | hero size (measured) | 8 | 24 · 50 |
| ebay.com | primary button radius | 7 | 9999px · 44px |
| shein.com | card shadow | 7 | rgba(0, 0, 0, 0.3) 0p… · rgba(0, 0, 0, 0.08) 0… |
| youtube.com | primary button radius | 7 | 20px · 0px |
| clickup.com | transition duration | 6 | 250 · 450 |
| clickup.com | easing curve | 6 | ease · cubic-bezier(0.33, 1,… |
| harviontechnologies.com | nav height | 6 | 96 · 76 · 98 · 87 |
| imdb.com | primary button radius | 6 | 24px · 4px |
| imdb.com | card shadow | 6 | rgba(0, 0, 0, 0.12) 0… · rgba(0, 0, 0, 0.2) 0p… |
| harviontechnologies.com | body size | 5 | 24px · 20px |
| harviontechnologies.com | body size (measured) | 5 | 24 · 20 |
| monday.com | card shadow | 5 | rgba(0, 0, 0, 0.1) 0p… · rgba(0, 0, 0, 0.1) 0p… |
Which tokens move most
| token | moves | products |
|---|---|---|
| primary button radius | 38 | 8 |
| card shadow | 36 | 8 |
| headline size | 31 | 8 |
| hero size (measured) | 31 | 8 |
| body size | 29 | 10 |
| body size (measured) | 29 | 10 |
| primary button fill | 28 | 6 |
| transition duration | 27 | 6 |
| button colour | 14 | 5 |
| spacing base unit | 14 | 3 |
| hero weight | 13 | 5 |
| nav height | 12 | 3 |
Held every night
acap-bicol.github.io, alltrails.com, audible.com, bsky.app, bumble.com, calendar.google.com, capcut.com, code-salad.github.io, crypto.com, deepseek.com, deezer.com, deliveroo.co.uk, demo.immich.app, discord.com, drive.google.com, dropbox.com, duolingo.com, etoro.com, flo.health, getir.com, gmail.com, grammarly.com, grubhub.com, gumroad.com, headspace.com, hopper.com, instacart.com, kayak.com, komoot.com, linear.app, linkedin.com, lumiui.dev, maps.google.com, music.apple.com, music.youtube.com, myfitnesspal.com, nubank.com.br, paypal.com, play.grafana.org, pocketcasts.com and more.
Questions people (and AI assistants) actually ask
Do websites actually redesign often?
Mostly no. Across 15 consecutive nights Mozaika re-measured 108 of the web's most-referenced products and 72 of them did not move a single measured design token — not a colour, not a type size, not a radius. Only 12 shipped a change that stuck.
How can you tell a real design change from a fluke?
By waiting. A value only counts as changed once the new value survives at least two further nightly measurements. Anything newer is held as pending, and any value that returns to something it has already been is marked unstable instead of reported as a change.
What does an 'unstable' design token mean?
That the value did not settle: it alternated between nightly measurements. 22 of the 108 watched products have at least one such token. That is either a live A/B test, personalised or rotating content, or a page that renders differently run to run — from the outside those look identical, so Mozaika does not guess between them. The practical reading is the same either way: do not hard-code that number.
Which design tokens change most often?
Across the window the most-moved token is primary button radius (38 moves across 8 products), followed by card shadow and headline size.
How is the Drift Ledger measured?
Every night Mozaika re-decodes each watched product's live DOM and writes one dated row per domain — including when nothing changed, so a gap in the record can never be mistaken for 'we stopped looking'. The window shown covers 2026-07-23 to 2026-08-06 (15 nights, 1412 successful measurements). The series cannot be backfilled: a night not measured is gone.
Cite this dataset
The Drift Ledger is free to cite and reuse under CC BY 4.0 — attribution to Mozaika. Live JSON: https://mozaika.design/api/drift.
Mozaika. "The Drift Ledger: what changed in the web's design systems." 2026-07-23–2026-08-06. https://mozaika.design/drift — 1412 nightly measurements across 108 products.
Ask it from your agent over MCP: connect free and call get_design_drift("stripe.com") before you build against a spec, or list_design_changes() for the feed. See also The Measured Web for the norms themselves.