Point of view
Is the source of truth moving from design to code?
AI and the future of design systems
For years we treated the design file as the source of truth. In an AI-native workflow that no longer holds, and the shift is already underway in the tools we use. This lays out why the mock was never really the truth, what replaces it, and what changes for designers.
1 · The problem
The mock was never really the source of truth
We said the design file was the source of truth: Figma held the canonical screens, engineering implemented them, and if the build did not match the file, the build was wrong. But a picture under-specifies intent. It cannot fully express logic, states, data, or behavior, so every handoff is lossy and engineers end up reverse-engineering what we meant. The file drifts from the build, and the thing everyone trusts is never the thing the user actually experiences. The file was treated as the source of truth. It never quite was.
2 · Why it bites hardest for the design system
A design system trapped in Figma cannot enforce anything
A design system that lives only in Figma is a library of pictures. It is not typed, linted, or tested, engineers re-create it by hand, and parity quietly drifts. Worst of all, a generator can ignore it: a design system that exists only as a drawing is a suggestion, not a rule.
The pattern is already here. Ask today's AI tools to build a UI and they reach for a code-first component system by default, chosen by the tool, not by us. (shadcn is the current example, but the point is the pattern, not the project.) If our system is a Figma library, the machine now building most interfaces is already skipping it.
3 · The shift
The truth did not move. It untangled.
We say the source of truth is moving from design to code. That is close, but not quite it. The truth never lived in one place, we just kept it tangled inside a single file. Pull it apart and it becomes a relationship between two truths, held together by a contract. Each answers a different question:
The work lives in the gap between intent and code, where AI agents build from the contract: they generate the code and render what we look at. Two things are never the truth: the visual layer (Figma or a quick HTML render) is how we see the gap, a surface to discuss, never the contract. The continuity layer (a shared git and branching system) keeps intent, contract, and code in sync over time and across teams. It is plumbing, not truth.
Truth is a relationship, not a place
4 · What this unlocks
Ambiguity out, leverage in
Putting the contract in code removes the lossiness from step 1 and the no-enforcement problem from step 2 in one move. The spec is the handoff, so nothing is reverse-engineered. Change one token and it cascades to every screen. The agents produce on-spec UI instead of guessing. And because the prototype is real code, we test actual logic with users from day one rather than testing a picture of it.
Rebuilding on a real contract also opens flexibility that was painful to maintain by hand. These stop being per-screen chores and become capabilities we define once and get everywhere:
5 · What it means for designers
The function of design does not change. The medium does.
Product designer
Design system designer
Judgment, advocacy for the user, exploration, and craft all stay. Only the medium changes. Still, this changes how most product designers work day to day, and it can feel threatening, so it needs care and empathy. The answer is a dual path: run the old and new models side by side and let people cross over when the new way earns their trust, rather than forcing the switch.
The cost
A strong default quietly narrows variety
The trade-off of a contract this strong is sameness. When everything is generated from one foundation, products drift toward looking alike and the long tail of variety gets quieter. The answer is not to weaken the contract but to be deliberate about where novelty lives: divergent, off-contract exploration (lo-fi, throwaway, where taste roams) matters more. The contract governs production, while intent exploration can still happen outside via lo-fi mocks.
Next steps
From point of view to pilot
This is a point of view, not a plan. The natural next step is a pilot, run as a dual path so the new model can prove itself next to the old one rather than replacing it overnight. After running a concrete experiment from code back to Figma, the early results are promising, since the visual layer is re-created with utmost fidelity to what exists in code, and allows for a discussion and deliberate rendering and correction of visual bugs.
My evolving AI posture V3 · Darío Fidanza