Atomic Design — fundamentals, atoms, molecules and organisms in UI

Author: IT Sectr Published: 2026-02-21 Reading time: 11 min

Explaining what Atomic Design is — a UI design methodology proposed by Brad Frost in 2013, which borrows the metaphor of atoms, molecules, and organisms to build a hierarchy of UI components. Unlike the page-based approach where the interface is designed screen by screen, Atomic Design breaks the UI into the smallest reusable elements (atoms) and assembles them into more complex structures. According to Brad Frost (2016), the methodology is used in design systems of 67% of large companies, including IBM, Airbnb, and Google.

Key Takeaways

  • Atomic Design — a methodology that divides UI components into five levels: atoms, molecules, organisms, templates, and pages.
  • Atoms are basic HTML elements (button, input, label); molecules are combinations of atoms (input field with label); organisms are complex blocks (login form).
  • The methodology was proposed by Brad Frost in 2013 and described in the book "Atomic Design" (2016).
  • Atomic Design is the foundation of modern design systems: Material Design, Carbon (IBM), Lightning (Salesforce).
  • In mobile development, Atomic Design integrates with component frameworks — Jetpack Compose and SwiftUI — where custom components naturally describe atoms and molecules.

What is Atomic Design?

Atomic Design is a methodology for creating hierarchical interface systems, where each UI element belongs to one of five levels: atoms (basic elements), molecules (combinations of atoms), organisms (complex blocks), templates (page wireframes) and pages (specific screens with data). The analogy is borrowed from chemistry: atoms combine into molecules, molecules into organisms, organisms into templates, templates are filled with content and become pages.

The methodology was proposed by web designer Brad Frost in 2013 as a response to the problem of "page thinking" — when each new screen is designed from scratch without considering existing components. In the book "Atomic Design" (2016), Frost describes the implementation of the methodology in projects of large companies: IBM, GE, Starbucks. According to Nielsen Norman Group (2022), Atomic Design reduces the time for designing new screens by 30–50% through the reuse of ready-made components.

Atomic Design is not so much a technology as a philosophy of UI organization. It is not tied to a specific framework and is applicable both in web (React, Vue) and mobile development (Jetpack Compose, SwiftUI). At IT Sectr, we use Atomic Design to build design systems for clients: we identify atomic components at the design stage and transfer them into code components in Compose/SwiftUI.

Five levels: atoms, molecules, organisms, templates, pages

Each level of Atomic Design solves its own problem and has a strict area of responsibility. Atoms are the smallest building blocks of the interface that cannot be broken down further without losing meaning: button, text field, icon, label, checkbox. Atoms contain no business logic and do not depend on context. They define basic visual characteristics: color, size, spacing, typography.

Molecules are combinations of two or more atoms that form simple functional units. An input field with a label and an error message is a molecule. A product card with an image, name, and price is a molecule. Molecules can contain basic logic (show/hide error), but do not contain business processes. Molecules are the first level at which components become reusable across different screens.

Organisms are complex interface blocks consisting of molecules and atoms that implement a specific application function. A login form (email field, password field, submit button, "forgot password" link) is an organism. A header with logo, search, and navigation is an organism. Organisms can contain business logic and access the API, but only within their function.

Templates are page wireframes that define the arrangement of organisms on the screen without specific content. A template defines the grid, columns, content areas — a wireframe at the code level. Templates contain no data, only placeholders. They allow evaluating the page structure before filling it with content.

Pages are specific application screens where the template is filled with real data. At this level, it is verified how components look with real content (long strings, missing data, errors). Pages are the only level that the end user sees. Changes at the page level should not affect atoms, molecules, and organisms — if a component needs to be changed, the change is made at its level, and the page automatically picks it up.

Benefits and limitations of Atomic Design

Benefits of Atomic Design become apparent when scaling interfaces. A single component library guarantees visual consistency: a button looks the same on all screens because it is the same atom. According to Brad Frost (2016), companies that implemented Atomic Design reduce the time for developing new screens by 30–50% through reuse of ready-made molecules and organisms.

CharacteristicAtomic DesignPage-based approach
Component reuseHigh (atoms, molecules, organisms)Low (each screen from scratch)
Visual consistencyGuaranteedManual control
Speed of creating new screensHigh (assembly from ready blocks)Low (design + markup from scratch)
Implementation complexityHigh (requires component catalog)Low (familiar model)
TestabilityHigh (each atom is isolated)Integration (entire screen at once)

Limitations — Atomic Design does not describe how to manage application state. The methodology only answers the question "how to organize UI components" but does not address business logic, routing, or data management. The second limitation is the difficulty of defining boundaries: where does a molecule end and an organism begin? In practice, boundaries are blurred, and different teams may classify the same component differently. It is recommended to establish rules in design tokens and a component catalog (Storybook, Jetpack Compose Preview).

The third limitation is excessive abstraction for small projects. If an application consists of 5 screens, creating a hierarchy of atoms and molecules is unnecessary work. Atomic Design becomes beneficial when the number of screens exceeds 20 and components are reused across different pages.

Atomic Design vs Feature-Sliced Design

Atomic Design and Feature-Sliced Design (FSD) solve different problems and can be used together. Atomic Design is a methodology for organizing UI components, FSD is a methodology for organizing business layers and the application as a whole. Atomic Design answers the question "how to break UI into reusable parts", FSD answers "how to organize code around business features". They are not competing: you can have an FSD structure with features and entities layers, and within each layer use Atomic Design for organizing UI components.

CriterionAtomic DesignFeature-Sliced Design
ScopeUI componentsApplication architecture
Grouping unitChemical metaphor (atom → molecule → organism)Business feature (slice)
DependenciesFrom atoms to pages (bottom-up)From app to shared (top-down)
Data handlingNot describedVia model + api segments
ScalingHorizontal (more components)Vertical (more features)

Typical combination: FSD defines the modular structure of the application (layers, slices), Atomic Design defines the internal structure of UI components within each slice. For example, the feature.auth slice contains molecules (LoginForm, PasswordInput) and organisms (AuthPage) assembled according to Atomic Design rules. The shared layer contains atoms (Button, Input, Label) reused across all features.

Atomic Design in mobile applications: Compose and SwiftUI

Jetpack Compose and SwiftUI naturally support the Atomic Design hierarchy through component composition. Atoms in Compose are basic @Composable functions: AppButton, AppTextField, AppCheckbox. Each function accepts customization parameters (color, size, state) and contains no business logic. Atoms are defined in the shared layer and exported as a UI-kit.

Molecules are @Composable functions that combine several atoms: LabeledTextField (label + input field + error message), ProductCard (image + name + price). Molecules can contain basic state (field validity) but do not access the API or ViewModel. They are reused across different organisms.

Organisms are @Composable functions at the feature level: LoginForm (LabeledTextField for email + LabeledTextField for password + submit AppButton + recovery link). Organisms work with ViewModel through Intent functions and can contain business logic. In SwiftUI, a similar hierarchy is built through @ViewBuilder and custom View structures.

In SwiftUI, an atom is a custom View structure AppButton, a molecule is an input field with a label on HStack, an organism is a login form. This structure allows reusing components across all screens — changing an atom (button color) automatically applies to all screens. The combination of Atomic Design with a design system guarantees interface consistency without manual control of each screen.

Frequently Asked Questions

Do I need to strictly follow the five levels of Atomic Design?

The five levels are a recommendation, not a law. Many design systems (Material Design, IBM Carbon) use 3 or 4 levels: basic components, composite components, and templates. The main rule is that each component belongs to one level and can be reused at higher levels. If you find that the "molecule" and "organism" levels in your project are not distinct — merge them. Atoms and pages are the only mandatory levels.

How to test Atomic Design components?

Atoms are tested visually (Snapshot tests, Compose Preview) — it verifies that a button with given props renders correctly. Molecules are tested as a combination of atoms — state is checked (error, success, disabled). Organisms require integration tests — interaction with ViewModel is checked (form submission, data loading). At IT Sectr, we use Compose Test for Android and XCTest for iOS; for visual testing — Paparazzi (Android) and SnapshotTesting (iOS).

Can I use Atomic Design without a design system?

You can, but efficiency decreases. Without a design system and design tokens, atoms have no unified style — each developer creates their own atoms with arbitrary colors and spacing, leading to visual inconsistency. Atomic Design and a design system are complementary concepts: Atomic Design defines the hierarchy, the design system defines the visual language. It is recommended to implement them together: first design tokens (colors, typography, spacing), then atoms, then molecules and organisms.

How to deal with the "atomic zone" (too many atoms)?

The "atomic zone" is a situation where the number of atoms exceeds reasonable limits (100+), and finding the needed component takes longer than writing it from scratch. The solution is colocation of atoms by features: an atom used by only one feature should be stored inside that feature, not in shared. Only global atoms (Button, Text, Input) are placed in shared. According to Brad Frost, colocation reduces the number of shared atoms by 60–70% without losing reusability.

Is Atomic Design only for UI or for code too?

Atomic Design was originally a UI design methodology, but in modern practice it is also used for organizing code. In design tools (Figma, Sketch), atoms are library components; in code, they are functions and classes. The methodology does not distinguish between design and code — the atom is the same in both the mockup and the implementation. At IT Sectr, we use supernova.io to synchronize design atoms and code atoms, eliminating discrepancies between the mockup and the finished interface.

Summary

  • Atomic Design is a methodology for hierarchical organization of UI components, using the metaphor of atoms, molecules, organisms, templates, and pages.
  • Atoms are basic elements (button, input); molecules are their combinations (field with label); organisms are complex blocks (search form).
  • Templates define the framework, pages — specific data filling.
  • Atomic Design does not manage state or business logic — it only handles the organization of the UI layer.
  • In mobile development, atoms are naturally described by @Composable functions (Android) and View structures (iOS).
  • Atomic Design pairs well with FSD: FSD defines architecture, Atomic Design organizes UI within slices.
  • The main advantages are component reuse, visual consistency, and speed of creating new screens.

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also