F5.13.4Breaking palette changedesign

Once a scale is shipped, changing how many stops it has ripples through every referencing component

Aliases: scale reindexing · inserting stops · scale migration

What it is

The product already points at blue 500 for default fill and 600 for pressed. Mid-flight someone wants more resolution, inserts a stop, or moves from 10 stops to 12, and the old 600 is no longer that colour. Every “one step darker” walk slides onto someone else’s place. Stop count is a shipping contract: changing it is not tinting; it is a break that ripples through every reference.

Why it happens

References come in two kinds. An explicit blue.600 may still point at the old name after an insert, but that stop’s place on the scale has moved — the name did not break, the appearance did. A relative reference (“one step darker than default”) slides onto a new neighbour, and behaviour breaks. Both explode at once in themes, charts, mail templates and third-party skins, because they read the same table. Blast radius is reference count, not “we only changed blue”.

Inserting, deleting and renumbering are all a change of count. Editing one stop’s hex without changing count is a colour fix, much smaller, so long as roles still point at the same index.

Where it stops holding

  • An unreleased internal table with no external consumers can change count; the cost is one internal migration.
  • Adding a new hue family is not a change of count; inserting stops into an old family is.
  • If dark and light share indices, changing light’s count drags dark with it. Independently numbered tables can migrate one set, but components must know which table they read.

Applying it

  • Treat stop count as frozen before ship, decided together with the resolution trade-off — not as “two more stops after launch”.
  • If count must change, migrate: a map from old index to new, named edits at each reference, a deprecation window. No silent inserts.
  • Use relative steps sparingly; pin an index when you can, to reduce sliding.
  • How to check: on the branch that changes count, list every scale-index reference and spot visual regressions. Any “untouched” component that looks different is ripple, not coincidence.

Related

  • Same group: F5.13.1 How many stops a scale has trades fine control against upkeep · F5.13.2 Name stops with index numbers, not semantic words, so meaning does not drift across versions · F5.13.3 Algorithmic ramps still need hand correction where a stop jumps
  • Nearby: F5.09 Perceptual requirements of palettes · F5.03 Brand colour and functional colour
  • Search terms: breaking palette change · scale migration · colour tokens

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/F5.13.4