The Design System Is Not a Library. It Is a Decision Engine
Hatched by min dulle
Aug 06, 2026
10 min read
2 views
78%
What if your design system is not a library of components, but a library of decisions?
That question changes what a styleguide is for. A page that merely displays buttons, colors, and screenshots can look polished while leaving the hardest work untouched: helping people make consistent choices when the original designer is not in the room.
The deeper opportunity appears when two practices meet. A styleguide can bring together brand context, design files, code examples, and live component stories. A recipe system can encode combinations of styles into reusable, typed patterns. Together, they suggest a more ambitious model: documentation should not simply describe a system. It should make the system usable as a set of decisions.
This is the difference between a catalog and a kitchen. A catalog tells you what exists. A kitchen helps you produce something reliable.
The hidden problem with component libraries
Most teams say they are building a design system when they are actually building an inventory. They collect a button, a card, a modal, a text field, and a set of color tokens. They attach names and usage notes. Then they publish the collection and hope consistency follows.
It rarely does. The existence of a component does not explain when to use it, what it should be combined with, or how it should change under different conditions. A button component may support several sizes, tones, and visual treatments, but the user still has to decide which combination fits a destructive action, a secondary workflow, or a compact mobile form.
This is a familiar problem in cooking. Having flour, salt, vegetables, and a pan does not mean you have a meal. Ingredients are capabilities. Recipes are decisions about sequence, proportion, context, and purpose.
In interface work, components are ingredients and recipes are compositional knowledge. A component answers the question, “What can this object render?” A recipe answers the more valuable question, “What should render here, given this situation?”
Consider a product team creating a notification panel. Its raw materials might include a surface color, spacing values, an icon, a heading style, a button, and a dismiss control. A component library can provide all of them. But a recipe can define a coherent pattern:
- An informational notification uses a calm tone and an optional action.
- A warning notification increases visual urgency without overwhelming the page.
- An error notification explains what happened and gives the user a recovery path.
- A success notification remains visible long enough to confirm the result, then recedes.
The difference is not cosmetic. It is a transfer of judgment from individual developers and designers into a reusable structure.
A mature design system does not eliminate judgment. It preserves good judgment so that it can be repeated.
This also explains why documentation needs more than a visual presentation layer. A logo and customized interface can create a sense of ownership. Design uploads can connect intended visual behavior to the system. Code examples and component stories can show what the implementation actually does. Each layer answers a different question, and the system becomes valuable only when those answers agree.
Documentation is an interface, not an archive
Documentation is often treated as a place where information goes after the real work is finished. That framing is backwards. A design system guide is itself an interface, and its users are trying to complete tasks inside it.
A designer may ask: “Which pattern should I use for this workflow?” A developer may ask: “What is the supported API for this component?” A product manager may ask: “Why does this interaction behave this way?” A contributor may ask: “How do I know whether a new pattern belongs in the system?”
These are not requests for the same kind of information. A gallery of screenshots may satisfy recognition, but not implementation. A code example may satisfy implementation, but not intent. A design file may show visual ambition, but not necessarily production behavior. A useful styleguide connects these views rather than presenting them as isolated shelves.
Think of each representation as a lens:
- Brand and interface context explain what the system feels like and who it belongs to.
- Design artifacts reveal intended composition, hierarchy, and visual behavior.
- Code examples reveal available inputs, constraints, and implementation details.
- Live stories reveal states, variations, and behavior under real conditions.
- Written guidance explains purpose, boundaries, accessibility considerations, and failure modes.
A user should be able to move between these lenses without losing the identity of the thing they are investigating. If a designer sees a component in a design tool and a developer sees a different set of states in code, the documentation has not merely become inconvenient. It has created two competing versions of reality.
This is where recipes add an important dimension. They can act as the connective tissue between individual components and actual product situations. A recipe can describe a composition in a way that is close enough to design intent to be useful and precise enough for code to enforce.
Imagine a page header recipe. It may accept a title, an optional description, a navigation control, and one or two actions. It can encode spacing, responsive layout, emphasis, and action hierarchy. The design representation can show the intended visual arrangement. The code representation can expose the allowed inputs. The written guidance can explain when a page header is appropriate and when a simpler section heading is better.
The documentation is no longer saying, “Here are several objects.” It is saying, “Here is a reliable way to solve a recurring problem.”
Recipes turn taste into infrastructure
The word “recipe” can sound modest, even domestic. In a technical system, however, a recipe is a powerful middle layer between raw primitives and finished experiences.
At the bottom are tokens and primitives: color values, typography scales, spacing units, borders, shadows, and basic elements. At the top are pages and workflows: account settings, checkout, search, onboarding, and reporting. Recipes sit between them. They package recurring decisions without pretending that every page is identical.
This middle layer solves two opposite problems.
First, without recipes, teams compose primitives from scratch. That produces local creativity, but also repeated mistakes. One engineer uses a four unit gap, another uses five, and a third invents a special margin for a similar context. The result is not just visual inconsistency. It is a system that becomes harder to learn because every screen contains private knowledge.
Second, without flexibility, teams force every situation into a rigid component. A single “card” becomes responsible for profiles, metrics, articles, alerts, and forms. Its API fills with exceptions. The component appears reusable, but its meaning becomes unclear.
Recipes offer a more balanced abstraction. They standardize a meaningful arrangement while leaving room for context. The goal is not maximum reuse. The goal is maximum reuse of decisions that are genuinely the same.
A useful test is this: if two interfaces share the same user goal, hierarchy, and behavior, they may deserve a recipe even if their content differs. If they merely look similar but serve different purposes, forcing them together may create false consistency.
For example, a “stacked action group” might be useful across forms, dialogs, and mobile navigation if it encodes the same priority rule: the primary action is visually dominant, the secondary action remains available, and destructive actions are separated from routine completion. But a generic “blue panel” is not a meaningful recipe. It describes appearance without preserving intent.
This gives us a practical definition:
A recipe is a named, documented decision about how several primitives and components should work together for a recurring user need.
That definition also reveals why recipes must be documented alongside their implementation. If the code captures only the visual arrangement, the reasoning disappears. If the prose captures only the reasoning, the pattern drifts. The recipe becomes trustworthy when intent, design, and behavior reinforce one another.
The system should teach judgment at the moment of choice
The strongest design systems do not merely help experts move faster. They help less experienced people make better choices without requiring constant supervision.
That requires documentation to appear at the moment of uncertainty. A developer choosing a component needs more than a link to a page. They need to know what problem the component solves, what alternatives exist, which variations are supported, and what happens in edge cases.
A recipe can make that decision surface explicit. Suppose a team needs to design an empty state. The system can offer a recipe that includes an illustration or icon, a concise explanation, and a primary recovery action. The documentation can distinguish between a first use state, a no results state, and an error state. The code example can show the supported composition. The live story can demonstrate long text, missing actions, and narrow screens.
The result teaches a pattern of thought:
- Identify the user’s condition.
- Choose the appropriate pattern, not merely the nearest visual component.
- Select the permitted variation.
- Verify the behavior in realistic states.
- Extend the system only when the existing recipe cannot express the need honestly.
This is much more valuable than a collection of isolated examples because it gives users a decision procedure. It helps them understand not only what to copy, but why the copy is appropriate.
There is also a governance benefit. When a new pattern is proposed, the team can ask whether it represents a genuinely recurring decision or just a one off arrangement. If it is recurring, the pattern may deserve a recipe. If it is local and unlikely to repeat, it may belong in the product rather than the shared system.
This prevents a common failure mode: treating every new variation as a reason to expand a component. A system becomes healthier when it distinguishes between new content, new configuration, and new conceptual behavior.
New content usually needs no system change. New configuration may require a supported option. New conceptual behavior may deserve a new recipe or component. Making that distinction explicit protects both flexibility and coherence.
A practical architecture for decision based systems
Teams can apply this model immediately by organizing their system around a chain of increasing meaning.
1. Foundations
Document the raw values and rules: color roles, type scales, spacing, elevation, motion, and accessibility requirements. Foundations should explain purpose, not just list values. “Surface muted” is more useful than a mysterious hexadecimal value because it communicates the role the value plays.
2. Components
Document independent objects and their states. Show the supported properties, interaction behavior, content constraints, and accessibility expectations. Include examples that reveal boundaries, not just ideal conditions.
3. Recipes
Document recurring compositions. Name the user problem, identify the ingredients, describe the decision rules, and show variations. A recipe should make clear what is fixed, what is configurable, and what should not be changed casually.
4. Stories
Use live examples to prove that the documented pattern survives reality. Test loading, empty, error, long content, keyboard navigation, localization, and responsive conditions. A component that works only in a carefully cropped screenshot is not finished.
5. Product contexts
Show where the recipe appears in actual workflows. Context prevents the system from becoming a world of disconnected specimens. It also reveals when the same pattern behaves differently because the user’s goal has changed.
This architecture creates a feedback loop. Foundations constrain components. Components enable recipes. Recipes clarify product patterns. Product usage exposes missing states and poor abstractions. Those discoveries then improve the foundations and documentation.
The loop matters more than the hierarchy. A styleguide should not be a museum where finished artifacts are preserved. It should be a workshop where the relationship between rules, examples, and outcomes remains visible.
Key Takeaways
- Treat components as ingredients, not solutions. Ask what recurring user problem a composition solves before adding another component variation.
- Document decisions at the point of choice. Explain when to use a pattern, when not to use it, and what alternatives are available.
- Connect every important pattern across representations. The design view, code example, live story, and written guidance should describe the same behavior.
- Use recipes as a middle layer. They prevent teams from composing everything from scratch while avoiding oversized components that try to serve unrelated purposes.
- Test documentation with real tasks. Give a designer or developer a problem to solve and observe whether the system helps them choose, implement, and verify the right pattern.
The most important shift is conceptual. A design system is not successful because it contains many assets, supports many options, or has an attractive interface. It is successful when people can make good decisions quickly, and when those decisions remain legible to the next person who encounters the work.
The future of documentation is therefore less like a reference shelf and more like a set of well designed recipes. It should preserve the reasoning behind a pattern, connect intention to implementation, and make quality repeatable without making creativity impossible.
A library tells you what has been collected. A recipe system tells you what can be made. The best design systems go one step further: they teach you how to recognize what should be made in the first place.
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣