Skip to content

Overview

Atomic Design is a methodology for creating design systems with five distinct levels of components, from basic building blocks to complete pages.

Created by Brad Frost, Atomic Design draws inspiration from chemistry, breaking interfaces into fundamental building blocks and combining them to form increasingly complex structures.

The basic building blocks of matter applied to web interfaces - HTML tags like labels, inputs, buttons, and other elements that can’t be broken down further.

Examples:

  • Buttons
  • Input fields
  • Labels
  • Icons
  • Typography elements

Simple groups of atoms functioning together as a unit. Molecules take on their own properties and serve as the backbone of design systems.

Examples:

  • Search form (input + button)
  • Card header (title + icon)
  • Form field (label + input + error message)
  • Navigation item (icon + text)

Complex UI components composed of groups of molecules and/or atoms and/or other organisms. Organisms form distinct sections of an interface.

Examples:

  • Header (logo + navigation + search)
  • Product card (image + title + price + button)
  • Comment section (multiple comment molecules)
  • Footer (navigation + social links + newsletter)

Page-level objects that place components into a layout and articulate the design’s underlying content structure.

Examples:

  • Blog post layout
  • Product listing page structure
  • Dashboard layout
  • Authentication page template

Specific instances of templates showing what a UI looks like with real representative content.

Examples:

  • Home page with actual content
  • Product detail page with real product
  • User profile with real user data
  • Blog post with actual article

Consistency - Reusable components ensure consistent design ✅ Scalability - Easy to build complex interfaces from simple parts ✅ Maintainability - Changes to atoms propagate throughout system ✅ Communication - Shared vocabulary between designers and developers ✅ Efficiency - Faster development with reusable components ✅ Testability - Test small components in isolation ✅ Documentation - Clear hierarchy makes documentation easier

Build complex components by combining simpler ones rather than creating variations through inheritance.

Each component should do one thing well. If a component does too much, break it down.

Design components to be reusable across different contexts and use cases.

Components should accept props/configuration to adapt to different scenarios.

Each component should be self-contained and not depend on its context.

Good For:

  • Large-scale applications
  • Design systems
  • Component libraries
  • Multi-product organizations
  • Teams with designers and developers

Consider Alternatives For:

  • Small projects
  • Rapid prototypes
  • Single-page marketing sites
  • Tight deadlines with small teams
  1. Start Small - Begin with atoms, then molecules
  2. Document Everything - Create a component library/storybook
  3. Stay Consistent - Follow naming conventions and patterns
  4. Iterate - Refine your components based on usage
  5. Review Regularly - Periodically audit for unused or redundant components
  • Storybook - Component development and documentation
  • React Styleguidist - React component documentation
  • Pattern Lab - Original tool by Brad Frost
  • Figma - Component-based design
  • Sketch - Symbol-based design
  • Adobe XD - Component states and variants
  • React - Component-based UI library
  • Vue - Progressive framework with components
  • Svelte - Compiled component framework
  • Web Components - Native browser components