The Drift Ledger
Every night Mozaika re-measures the design systems of 155 of the web's most-referenced products and writes down what moved — including the nights nothing did. Over the 105 nights from 2026-07-23 to 2026-11-05, 68 products did not move a single measured token, 46 shipped a change that stuck, and 60 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.
68 of 155 products held every measured token for 105 nights
Confirmed changes
A change is only listed here once the new value has survived at least 2 further nightly measurements. 24 qualify in this window.
2026-11-03 — play.grafana.org
play.grafana.org changed its background colour from #111217 to #040608 and 2 other tokens. Held for 2 further nights.
| token | before | after |
|---|---|---|
| background colour | #111217 | #040608 |
| link colour | #6E9FFF | #6E98DB |
| text colour | #CCCCDC | #C9CED4 |
2026-11-03 — starbucks.com
starbucks.com moved its hero size (measured) from 24 to 36 and 1 other token. Held for 2 further nights.
| token | before | after |
|---|---|---|
| hero size (measured) | 24 | 36 |
| headline size | 24px | 36px |
2026-11-02 — nature.org
nature.org moved its hero size (measured) from 40 to 60 and 1 other token. Held for 3 further nights.
| token | before | after |
|---|---|---|
| hero size (measured) | 40 | 60 |
| headline size | 40px | 60px |
2026-10-30 — flowus.cn
flowus.cn changed its button colour from #FFFFFF to #0285FF and 2 other tokens. Held for 6 further nights.
| token | before | after |
|---|---|---|
| button colour | #FFFFFF | #0285FF |
| container width | 896 | 640 |
| primary button fill | #FFFFFF | #0285FF |
| card shadow | rgba(25, 25, 25, 0.04) 0px 5px 8px 0px, rgb… | rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0… |
2026-10-29 — kpmg.com
kpmg.com moved its primary button radius from 2px to 0px. Held for 7 further nights.
| token | before | after |
|---|---|---|
| primary button radius | 2px | 0px |
2026-10-22 — soundcloud.com
soundcloud.com moved its primary button radius from 4px to 9999px. Held for 14 further nights.
| token | before | after |
|---|---|---|
| primary button radius | 4px | 9999px |
2026-10-21 — nike.com
nike.com moved its body size (measured) from 14 to 20 and 1 other token. Held for 15 further nights.
| token | before | after |
|---|---|---|
| body size (measured) | 14 | 20 |
| body size | 14px | 20px |
2026-10-17 — happylife11.shop
happylife11.shop changed its link colour from #F3F4F6 to #1C1C1C and 9 other tokens. Held for 18 further nights.
| token | before | after |
|---|---|---|
| link colour | #F3F4F6 | #1C1C1C |
| nav height | 57 | 68 |
| easing curve | cubic-bezier(0, 0, 0.2, 1) | ease |
| transition duration | 180 | 200 |
| primary button radius | 9999px | 0px |
| body size (measured) | 14 | 12 |
| hero size (measured) | 48 | 64 |
| hero weight | 500 | 550 |
| body size | 14px | 12px |
| headline size | 48px | 64px |
2026-10-17 — bwfbadminton.com
bwfbadminton.com changed its text colour from #333333 to #000000. Held for 19 further nights.
| token | before | after |
|---|---|---|
| text colour | #333333 | #000000 |
2026-10-16 — starbucks.com
starbucks.com changed its button colour from #32462F to #006242 and 5 other tokens. Held for 19 further nights.
| token | before | after |
|---|---|---|
| button colour | #32462F | #006242 |
| container width | 1440 | 820 |
| nav height | 99 | 100 |
| easing curve | ease-out | ease |
| transition duration | 200 | 250 |
| primary button fill | #32462F | #006242 |
2026-10-16 — etoro.com
etoro.com moved its spacing base unit from 8 to 4. Held for 19 further nights.
| token | before | after |
|---|---|---|
| spacing base unit | 8 | 4 |
2026-10-14 — happylife11.shop
happylife11.shop changed its button colour from #6D28D9 to #FFFFFF and 1 other token. Held for 21 further nights.
| token | before | after |
|---|---|---|
| button colour | #6D28D9 | #FFFFFF |
| primary button fill | #6D28D9 | #FFFFFF |
2026-10-06 — drewlevinson.me
drewlevinson.me moved its body size (measured) from 14 to 15 and 1 other token. Held for 29 further nights.
| token | before | after |
|---|---|---|
| body size (measured) | 14 | 15 |
| body size | 14px | 15px |
2026-10-02 — 1password.com
1password.com changed its primary button fill from #145FE4 to rgba(0, 0, 0, 0). Held for 33 further nights.
| token | before | after |
|---|---|---|
| primary button fill | #145FE4 | rgba(0, 0, 0, 0) |
2026-10-02 — ryanair.com
ryanair.com moved its nav height from 55 to 0. Held for 19 further nights.
| token | before | after |
|---|---|---|
| nav height | 55 | 0 |
2026-10-01 — play.grafana.org
play.grafana.org changed its button hover fill from #FFCC00 to #FFD54F and 6 other tokens. Held for 32 further nights.
| token | before | after |
|---|---|---|
| button hover fill | #FFCC00 | #FFD54F |
| button colour | #F9A825 | #FFB300 |
| primary button fill | #F9A825 | #FFB300 |
| primary button radius | 8px | 9999px |
| hero size (measured) | 28 | 39 |
| hero weight | 500 | 800 |
| headline size | 28px | 39px |
| card shadow | rgba(0, 0, 0, 0.3) 0px 4px 12px 0px | rgba(0, 0, 0, 0.25) 0px 4px 10px 0px |
2026-09-30 — netugroup.com
netugroup.com moved its body size (measured) from 17 to 22 and 1 other token. Held for 36 further nights.
| token | before | after |
|---|---|---|
| body size (measured) | 17 | 22 |
| body size | 17px | 22px |
2026-09-18 — tradingview.com
tradingview.com moved its hero size (measured) from 64 to 56 and 1 other token. Held for 46 further nights.
| token | before | after |
|---|---|---|
| hero size (measured) | 64 | 56 |
| headline size | 64px | 56px |
2026-09-18 — etoro.com
etoro.com moved its nav height from 132 to 113. Held for 46 further nights.
| token | before | after |
|---|---|---|
| nav height | 132 | 113 |
2026-09-18 — kpmg.com
kpmg.com moved its spacing base unit from 8 to 6. Held for 47 further nights.
| token | before | after |
|---|---|---|
| spacing base unit | 8 | 6 |
2026-09-15 — music.apple.com
music.apple.com moved its nav height from 739 to 755. Held for 39 further nights.
| token | before | after |
|---|---|---|
| nav height | 739 | 755 |
2026-09-14 — logical-kitten.staticdomains.app
logical-kitten.staticdomains.app changed its link colour from #0E0F11 to #3E87F8 and 2 other tokens. Held for 51 further nights.
| token | before | after |
|---|---|---|
| link colour | #0E0F11 | #3E87F8 |
| easing curve | cubic-bezier(0.22, 1, 0.36, 1) | ease |
| transition duration | 850 | 350 |
2026-09-11 — venmo.com
venmo.com retimed its easing curve from ease-in-out to cubic-bezier(0.4, 1.2… and 1 other token. Held for 32 further nights.
| token | before | after |
|---|---|---|
| easing curve | ease-in-out | cubic-bezier(0.4, 1.2, 0.2, 1) |
| transition duration | 600 | 300 |
2026-09-03 — grubhub.com
grubhub.com changed its button colour from #262626 to #1A1A19 and 2 other tokens. Held for 61 further nights.
| token | before | after |
|---|---|---|
| button colour | #262626 | #1A1A19 |
| primary button fill | #262626 | #1A1A19 |
| primary button radius | 42px | 9999px |
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 |
|---|---|---|---|
| imdb.com | primary button radius | 46 | 24px · 4px |
| clickup.com | body size | 41 | 14px · 12px · 16px |
| clickup.com | body size (measured) | 41 | 14 · 12 · 16 |
| imdb.com | card shadow | 35 | rgba(0, 0, 0, 0.12) 0… · rgba(0, 0, 0, 0.2) 0p… |
| poshmark.com | nav height | 31 | 102 · 116 · 50 |
| shazam.com | card shadow | 30 | rgba(0, 0, 0, 0.08) 0… · rgba(0, 0, 0, 0.1) 0p… · rgba(0, 0, 0, 0.1) 0p… · rgba(0, 0, 0, 0.1) 0p… |
| mercury.com | headline size | 29 | 49px · 65px |
| mercury.com | hero size (measured) | 29 | 49 · 65 |
| mercury.com | transition duration | 28 | 150 · 300 |
| poshmark.com | primary button radius | 26 | 3px · 4px |
| ryanair.com | headline size | 26 | 24px · 50px |
| ryanair.com | hero size (measured) | 26 | 24 · 50 |
| walmart.com | link colour | 26 | #FFFFFF · #0000EE · #001E60 |
| therundown.ai | button colour | 24 | #FFFFFF · #171717 |
| therundown.ai | primary button fill | 24 | #FFFFFF · #171717 |
| shein.com | primary button fill | 23 | rgba(0, 0, 0, 0) · #FF3351 |
| gruns.co | primary button radius | 22 | 3.35544e+07px · 100px |
| soundcloud.com | body size | 22 | 19px · 14px |
| soundcloud.com | body size (measured) | 22 | 19 · 14 |
| mercury.com | easing curve | 21 | cubic-bezier(0.4, 0, … · cubic-bezier(0, 0, 0.… |
| shein.com | card shadow | 21 | rgba(0, 0, 0, 0.3) 0p… · rgba(0, 0, 0, 0.08) 0… |
| outlook.com | transition duration | 18 | 125 · 200 · 1200 |
| google.com | text colour | 17 | #1F1F1F · #16171A |
| gruns.co | transition duration | 17 | 200 · 300 |
| grubhub.com | headline size | 16 | 42px · 36px |
| grubhub.com | hero size (measured) | 16 | 42 · 36 |
| imdb.com | spacing base unit | 16 | 4 · 8 |
| walmart.com | body size | 16 | 16px · 12px |
| walmart.com | body size (measured) | 16 | 16 · 12 |
| google.com | easing curve | 15 | linear · ease-in-out · ease |
Which tokens move most
| token | moves | products |
|---|---|---|
| body size | 229 | 37 |
| body size (measured) | 228 | 36 |
| primary button radius | 209 | 28 |
| card shadow | 172 | 23 |
| transition duration | 159 | 28 |
| headline size | 150 | 26 |
| hero size (measured) | 147 | 25 |
| primary button fill | 140 | 27 |
| easing curve | 104 | 21 |
| nav height | 96 | 24 |
| text colour | 82 | 17 |
| button colour | 74 | 20 |
Held every night
acap-bicol.github.io, lumiui.dev, sdlc-dev.vercel.app, stripe.com, weaponsforge.github.io, gmail.com, kayak.com, spotify.com, headspace.com, chromewebstore.google.com, gumroad.com, demo.immich.app, discord.com, outcomeops.ai, ghostfol.io, clarezoe.github.io, kinfolk.com, duolingo.com, flo.health, crypto.com, fongo.com, family.co, lucide.dev, twitch.tv, bitihop.swedexpress.store, dexlyn.com, fluxthinking.com, whisperweb.dev, projectsofai.beehiiv.com, host-html-user.com, quonfig.com, ubereats.com, opencode.ai, drive.google.com, app.debtpayoffplanner.com, joydao.univer.se, raycast.com, grammarly.com, community-nextjs-template.vercel.app, deliveroo.co.uk and more.
Questions people (and AI assistants) actually ask
Do websites actually redesign often?
Mostly no. Across 105 consecutive nights Mozaika re-measured 155 of the web's most-referenced products and 68 of them did not move a single measured design token — not a colour, not a type size, not a radius. Only 46 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. 60 of the 155 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 body size (229 moves across 37 products), followed by body size (measured) and primary button radius.
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-11-05 (105 nights, 9617 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-11-05. https://mozaika.design/drift — 9617 nightly measurements across 155 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.