The lifecycle of a brand color system
Brand colors are born in a workshop, adolescent in a style guide, and middle-aged in a codebase with forty shades of 'primary'. Here's how to manage every stage deliberately.
Every brand color system goes through predictable stages. The teams that handle them well aren't the ones with the best initial palette; they're the ones who expect change and build a way to absorb it.
Stage 1: Genesis
A color system begins as a strategic decision disguised as an aesthetic one. Why teal and not navy? Usually because a competitor owns navy. Why copper? Because research showed the audience found the old red aggressive. These reasons matter enormously, and they are almost always lost. Nobody writes them down; the person who knew them leaves.
The single most valuable thing you can do at genesis is write a one-paragraph rationale for each role. That's why Palettos' System module has a usage note beside every role and a journal attached to every version.
Stage 2: Codification
The palette moves into a brand book and then into code. This is where the translation from 'five nice colors' to 'a functional system' happens — tonal ramps for hover states, tinted surfaces, disabled variants. It's also where most drift originates. Designers add a lighter blue for a hover state in Figma; engineers pick a slightly different one in CSS. Neither is wrong, but now there are two.
Above: a real-world style of drift. The first pair is the approved primary and a well-intended 'accessibility tweak'; the second is the approved accent and a muted variant that crept in after an audit. Each change was reasonable. Without a record, nobody can tell which is canonical.
Stage 3: Growth and pressure
As the product grows, the system is asked to do things it wasn't designed for: data visualization, marketing campaigns, dark mode, sub-brands. Each pressure tempts teams to add colors. A healthy system says yes by extending ramps and roles, not by adding orphan hex values.
The question to ask of every new color is not 'does it look good?' but 'what role does it fill, and why can't an existing role fill it?'
Stage 4: Audit
Periodically — we recommend every six to twelve months — someone should inventory every color actually in use and map it back to the spec. Tools can scan CSS; the harder work is deciding which deviations to adopt and which to eliminate. Palettos' drift detection flags any role whose current value differs from its approved spec, and the usage tracker shows which screens and components would be affected by reverting.
Stage 5: Evolution or refresh
Eventually the brand changes. A refresh is far less painful when the system is role-based and versioned: you're changing values in known slots, with a documented history of why the old values existed. Treat it like a major version bump in software — v2.0 — with release notes explaining what changed and what consumers need to update.
Practical habits
- Commit changes with reasons, not just values.
- Keep an explicit 'spec' value distinct from the 'working' value, so drift is visible.
- Tag where each role is used before changing it.
- Export to a machine-readable format (W3C tokens) so code and design share one source.
Put it into practice
Version a system in Palettos →
Sources & standards
- W3C Design Tokens Format Module
- Semantic Versioning 2.0.0 (semver.org)
- Brad Frost, 'Atomic Design' (2016)
Mira Okonkwo-Lind
Editor-in-chief, color systems
Mira spent eleven years building design systems for banking and public-sector products in Copenhagen and Lagos. She leads Palettos' editorial program and reviews every article before publication.