Andrew's Digital Garden

Components, recipes, and snowflakes in a design system

Some vocabulary on different 'levels' of components to helps avoid cluttering the design system:

  • Snowflakes: one-off components that are used sparingly, often for a particular page [[20220704125509-design-systems-snowflakes]]
  • Recipes: reusable components (usually at an organism level) often scoped to a product. A specific composition of a design system component.
  • Design system component: your base components - button, table, select, etc.

![[DS component hierarchy.png]]

Feel free to move components up/down as required, but avoid cluttering the design system with new components that are product-specific. It's still hard to move things out. [[20211108153157-design-system-boundaries]] [[20220704124529-design-system-harvesting]]

https://bigmedium.com/ideas/design-system-ecosystem.html goes into a bit more detail and provides 5 tiers:

  • Core design system layer – which contains the common, organization-wide UI building blocks for both design and development.
  • Optional technology-specific layer – which contains framework-specific and native implementations of those common UI components.
  • Optional recipe layer – which contains composed UI components to be used consistently across specific contexts (like a product or product family), but aren’t reusable across the entire organization.
  • Optional smart components layer – which contains UI components wrapped in logic, functionality, or other smarts to make the integration of common components and services easier for product developers.
  • Product layer – the actual websites and apps that we ship to customers (aka the whole reason we’re doing all of this!)

This idea leans into composition - recipes are often created using composed DS components, usually using some sort of 'slots' or [[compound components pattern]]

Rule of thumb is to aim to build for the bottom layer, as it helps you build components that are as reusable/agnostic as possible.

[[architecture]] [[components]] [[designsystem]] [[designsystemapi]] [[designsystembranding]] [[product]]

Components, recipes, and snowflakes in a design system