Atomic Design is a mental model for building UI as a system—not a pile of pages. It breaks interfaces into five levels—atoms, molecules, organisms, templates, pages—so teams can design, build, test, and ship consistently. Below is how I explain and actually use it on real projects, plus pitfalls to avoid and concrete examples for each layer.
Key idea: don't treat the five levels as a linear assembly line. Use them concurrently to shape final UIs and the system underneath.
Why Atomic Design still matters
- Shared language across designers and developers.
- Reusability & consistency as features grow.
- Faster iteration with a structured component library (e.g., Pattern Lab/Storybook).
That said, teams fail when they follow the labels blindly or force every component into a "chemistry box" without context. Use the model as a guide, not dogma.
The Five Levels (with practical examples)
1) Atoms
What they are: The smallest, indivisible building blocks with a single responsibility. Think native elements or design tokens.
Typical atoms
- Buttons (base
<button>with minimal API) - Inputs, labels, icons
- Color palette, typography scale (design tokens)
- Spacing tokens (e.g.,
--space-2,--space-4)
Examples
- React:
Button,Icon,TextField(unstyled or lightly styled primitives) - Design tokens:
tokens.csswith CSS variables for colors, fonts, radii
Tips
- Keep atoms dumb and styleable; expose props (size, variant, disabled).
- Centralize tokens; version them.
2) Molecules
What they are: Small groups of atoms working together as a meaningful unit (e.g., input + label + help text).
Examples
- Search field:
{Label, TextInput, ClearButton} - Nav item:
{Icon, Label}with active/hover states - Form field:
{Label, Input, ErrorMessage}
Tips
- Encapsulate accessibility (label association, aria-* attributes).
- Limit external styling needs—make sensible defaults.
3) Organisms
What they are: Compositions of molecules (and atoms) forming distinct UI sections. More complex and context-aware.
Examples
- Header:
{Logo} + {Nav} + {Search} - Product card:
{Image, Title, Price, Rating, CTA} - Comment list:
{CommentItemĂ—N, Pager}
Tips
- Stabilize data contracts. An organism should know what data it needs, not where it came from.
- Start adding interaction states (loading/empty/error).
4) Templates
What they are: Page-level layouts that place organisms and molecules into a structure—no real content yet. Think wireframe with live components.
Examples
- Blog post template:
{Header, Breadcrumbs, ArticleBodySlot, RelatedPosts, Footer} - Dashboard template:
{SideNav, TopBar, ContentSlot, ToastArea}
Tips
- Keep templates mostly presentational; they define regions (slots) and layout rules.
- Useful for visual regression testing at "page skeleton" level.
5) Pages
What they are: Concrete instances of templates populated with real data/content. This is what users see and interact with.
Examples
/blog/atomic-design-in-practice/product/sku-12345/account/settings
Tips
- Validate copy length, translations, and real-world images.
- Capture analytics events here; test page performance in realistic data states.
A quick mental checklist
- Is it reusable and testable alone? → It's likely an atom or molecule.
- Does it feel like a cohesive section? → Probably an organism.
- Am I arranging regions of a page? → That's a template.
- Is this a real route with real content? → It's a page.
Remember: this is a mental model, not a rigid pipeline. Build across levels in parallel.
Folder structure that works well
/ui
/tokens # colors, spacing, typography, radii
/atoms # Button, Icon, TextInput, Tag, Avatar
/molecules # SearchField, NavItem, FormField
/organisms # Header, Footer, ProductCard, CommentList
/templates # BlogPostTemplate, ProductTemplate
/pages # BlogPostPage, ProductPage
/stories # Storybook stories colocated or here
If you use Storybook, mirror these groups in the sidebar to teach the hierarchy to the team and review UI at multiple zoom levels.
Tooling that complements Atomic Design
- Pattern Lab for pattern-first development and data-driven component demos.
- Storybook for interactive docs, states, and visual regression with templates/pages.
To see these concepts come alive in practice, I've built a comprehensive Atomic Design Storybook Demo—my interactive component library that showcases real-world implementations across all five levels of the atomic hierarchy. This hands-on demo features fully documented atoms, molecules, and organisms with live interactive examples, multiple component states, and accessibility considerations. It's designed to bridge the gap between Atomic Design theory and production-ready code, demonstrating how teams can structure, document, and maintain scalable component systems that actually work in practice.
Real-world examples per level (beyond the basics)
- Atoms:
VisuallyHiddenhelper for accessible labelsSkeletonBlockfor loading shimmer
- Molecules:
FilterChip(removable tag + icon + label)InlineEdit(text + edit button + input)
- Organisms:
CheckoutSummary(line items, totals, promo, CTA)ProfileHeader(avatar, name, role, quick actions)
- Templates:
MarketingLandingTemplate(Hero, TrustLogos, FeatureGrid, CTA, Footer)SettingsTemplate(SideNav, ContentPane, SaveBar)
- Pages:
FeatureX AB test variants(same template, different content/ordering)Localized article pages(validate right-to-left, long words)
What to watch out for (pitfalls & how to avoid them)
- Rigid taxonomy wars — teams argue "is this a molecule or an organism?" and lose momentum.
- Over-abstracted atoms — super-generic primitives become hard to use.
- Templates with business logic — mixing layout with data fetching leads to tight coupling.
- "Build a library first, product later" trap — components without real use cases turn into shelfware.
- Design system drift — components diverge from production due to poor governance.
Guardrails
- Use labels as a communication aid, not dogma.
- Keep atoms minimal; promote patterns only when repeated.
- Fetch data in the page (or thin container), keep templates presentational.
- Build the system while shipping real pages—iterate both.
- Use Storybook/Pattern Lab as the single source of truth; add light governance.
How I roll this out on a new project
- Start from a real page (critical journey) and sketch a quick template.
- Extract obvious organisms, then molecules, then atoms (don't overdo it).
- Wire up Storybook and write basic stories for each state.
- Create naming conventions (
Button,SearchField,Header,ProductTemplate,ProductPage). - Add lint rules & visual tests (accessibility, snapshot/visual diffs).
- Iterate—when a pattern repeats in two places, promote/refactor it up the hierarchy.
Sources & Further Reading
- Brad Frost — "Atomic Web Design"
https://bradfrost.com/blog/post/atomic-web-design/ - Atomic Design (book site)
https://atomicdesign.bradfrost.com/ - Atomic Design Storybook Demo — Interactive component library showcasing real-world implementations
https://nickolaia.github.io/Atomic_design_storybook_demo/ - Storybook
https://storybook.js.org/ - Pattern Lab
https://patternlab.io/
💡 TL;DR: Atomic Design helps teams think in systems. Use the five levels as a shared language and sanity check—not as strict taxonomy police. Build pages and the system together, keep atoms simple, encapsulate accessibility at molecule level, stabilize organisms with clear contracts, and use templates to lock in structure.
đź’¬ Comments & Reactions