Why Most Storybook Setups Fail
A design system team decides to build Storybook. They spend two weeks installing, configuring, theming, and customizing. They document every component. They create intricate interaction stories. Six months later, a new engineer joins. The designer asks: "Check Storybook." The engineer opens it. Clicks around. Closes it. And builds the button from scratch anyway.
Why? Because Storybook felt like busy work, not a tool. The stories were beautiful but dry. The setup required too much maintenance. Components shipped in production, but the Storybook stories fell out of sync immediately. No developer trusts outdated documentation.
The problem isn't Storybook. Storybook is excellent. The problem is thinking of it as documentation-first instead of workflow-first. For a startup, Storybook should be a development aid, not a museum. You're building it so your team ships faster, not so you have a beautiful design artifact.
The "Starter, Not Full Library" Principle
Here's the mistake: You think Storybook is a monolithic project. You decide to document everything. You end up with 200 stories across 50 components, most of which are rarely referenced, many of which are outdated within two sprints.
Better approach: Build a starter library with 8–12 core components. Not every component, just the ones your team builds with most frequently. Button, Input, Card, Modal, Badge, Checkbox, Select, Textarea, and maybe Dropdown and Tooltip. That's it.
Why? Because 80% of your development time is spent building with 8 components. The other 50 components are context-specific, rarely reused, and don't need Storybook presence. Document them in code comments if you must. Save Storybook for the critical path.
Components to add first (priority order):
- Button (appears in 90% of pages)
- Input (every form page)
- Card (layout primitive)
- Modal (critical UX pattern)
- Badge (status indicators)
- Checkbox/Radio (form control)
- Select/Dropdown (form control, complex)
- Textarea (long-form input)
Components to skip in month one: Tabs, Pagination, Calendar, Date Picker, Advanced Table, Virtualized List, Infinite Scroll, Charts. These are specialized. Add them only when you've built three pages that use them.
Which Components to Add First
The criteria is simple: Reuse frequency and complexity.
If a component is simple and you only use it once (like a custom header), don't add it to Storybook. Live in the codebase.
If a component is complex and you use it everywhere, it needs Storybook. Button. Input. Modal. Form controls.
The components in Storybook are your "contract components"—the ones your team has committed to reusing, maintaining, and documenting.
For fintech specifically, add these early:
- Form inputs with error states (validation is critical in fintech)
- Modal for confirmations and sensitive actions
- Badge for transaction status (pending, complete, failed, etc.)
- Button with loading state (async forms are everywhere in fintech)
State Documentation That Developers Actually Read
Most Storybook documentation is prose. "This button has a loading state." Developers don't read that. They skim. So write stories that show, not tell.
Bad story documentation:
Good story documentation:
Developers understand code. They don't understand sentences. Show states as separate, visually distinct stories. Name them clearly. Done.
For each core component, create stories for:
- Default state
- All variants (if applicable)
- All sizes (if applicable)
- Disabled state
- Error state
- Loading state (if interactive)
That's it. You don't need interaction knobs for every prop. You don't need accessibility audit overlays. You need code examples. Copy-paste ready.
Storybook + Figma Code Connect
Here's where Storybook becomes truly valuable: linked to Figma Code Connect.
A developer opens a component in Figma. Code Connect shows the React code. Below the code, Code Connect embeds a Storybook preview showing all variants of that component. The developer never leaves Figma. Never has to navigate to Storybook. Never has to figure out where the component lives.
This is when Storybook stops being overhead and becomes infrastructure. Your team uses it because it's embedded in their workflow, not because they have to remember to check it.
To set this up:
- Build Storybook for your 8 core components
- Publish Storybook (Vercel, Chromatic, etc.)
- In Code Connect, link each component to its Storybook story URL
- Test it: Open Button in Figma, verify the Storybook preview loads
Maintenance Without Burnout
Storybook maintenance kills most design systems. The library ships. The code changes. The stories don't. Six months later, they're useless.
Prevent this with three rules:
1. Stories live in the component folder
Not in a separate stories/ directory. Store Button.stories.tsx next to Button.tsx. When an engineer refactors Button, the story is right there. One file to update, not two.
2. Stories are test fixtures
Write stories that match your component tests. If your test checks "button renders with loading state," you have a Loading story. Stories become your visual test suite. Easier to maintain because it's one set of code, two uses (testing + documentation).
3. If the component changes, the story changes immediately
Make this a code review requirement. If a PR changes component props or behavior, the story must be updated in the same PR. Not a follow-up. Not a "nice to have." Same PR.
This is the only way Storybook stays in sync. Make it part of the definition of done.
Getting Started This Week
Set up Storybook for Button and Input. Write 4 stories each: default, disabled, loading, error. Push to main. Tell your team: "Check these out." See if developers start referencing Storybook instead of asking questions.
If they do, add Card and Modal. If they don't, pause. Storybook isn't your priority yet. Fix it when it's actually solving a problem.
Build it as a tool, not a monument.