Component-Driven Development
A methodology for building UIs bottom-up by developing components in complete isolation before assembling them into pages.
Building Bottom-Up
Historically, developers built pages "top-down." You would create a /dashboard route, then build the layout, then the sidebar, then finally the tiny buttons inside it.
**Component-Driven Development (CDD)** reverses this. You build the smallest, most atomic components first (buttons, inputs), test them thoroughly, then assemble them into larger components, and finally into pages.
The Storybook Sandbox
Building a complex error state for a CheckoutForm can be annoying if you have to actually fill your cart and trigger a backend error just to see the UI.
Tools like **Storybook** provide an isolated sandbox. You can render your CheckoutForm in isolation and manually pass it an error="Card declined" prop to instantly see how it looks, without needing the rest of the application or backend to run.
Writing Stories
In Storybook, you write 'stories' to capture the different states of your component.
For a Button, you might write a Primary story, a Secondary story, a Disabled story, and a Loading story.
This acts as both a development environment and living, interactive documentation for your entire team.
The Component Sandbox
Explore a mocked Storybook interface. On the left is the code defining the 'stories'. On the right is the isolated sandbox where you can visually tweak the component's props without running a full application.
| Name | Control |
|---|---|
| variant | |
| size | |
| disabled |
A mocked Storybook environment. The developer can define isolated stories (left) and non-technical stakeholders or designers can tweak props in the sandbox canvas (right) to see all states of the component without needing the full app to run.
Check yourself
Pick an answer to lock it in, then read why. Getting one wrong is part of how it sticks.
Remember this
- Component-Driven Development means building bottom-up (atoms to pages).
- Tools like Storybook provide an isolated sandbox for UI development.
- Stories document the different visual states of a single component.
- Developing in isolation makes it trivial to test hard-to-reach UI states (like loading or error states).
- Deeply coupled data-fetching components require API mocking (MSW) or a Presentational/Container split to work in isolation.
Done with this concept?
Mark it complete to track your progress. No login needed.