All posts

Design Systems

8 min read

22 March 2024

The ROI of a design system for a 5-person startup

Spoiler: it pays off faster than you think - if you build it right from the start.

The conventional wisdom is that design systems are for big companies. Google has Material. Apple has Human Interface Guidelines. Airbnb has DLS. Five-person startups have a Figma file with an inconsistent button library and a developer who just eyeballed the padding.

We think that's wrong. A well-scoped design system is one of the highest-ROI investments a startup can make - but only if you build it at the right moment and scope it correctly.

Why small teams need systems more, not less

At a 200-person company, design inconsistency is embarrassing. At a 5-person startup, it's a compounding tax.

Compounding inconsistency. Every time a developer implements a UI component from scratch - because there's no shared library - they make slightly different decisions than the last developer. Buttons drift. Spacing varies. Input field heights subtly differ. Six months in, your product looks assembled from parts rather than designed.

Onboarding friction. When a new engineer joins, they have to reverse-engineer the implicit design language from existing components. There's no reference. They make choices. Some are right, some aren't.

Designer-developer friction. Without a shared component vocabulary, designers spec individual screens. Developers implement them slightly differently. Designers go back to fix it. This loop is expensive at any team size; at five people it consumes a disproportionate amount of the week.

Rebranding pain. When you decide to refresh your visual identity - and you will - changing a colour token in a design system updates it everywhere. Changing a hardcoded hex value requires a global search-and-replace across thousands of files.

What a design system is not

A design system is not a Figma component library. It's not a Storybook. It's not a style guide PDF.

A design system is the combination of:

  1. Tokens - the named values that define your visual language: colour, spacing, typography, border radius, shadow, motion
  2. Components - reusable UI building blocks that consume those tokens
  3. Patterns - documented conventions for combining components to solve common problems (forms, empty states, error handling)
  4. Governance - who can change what, and how

For a startup, you need 1 and 2. You probably don't need 3 and 4 yet. Building them before you need them is premature.

The right moment to build one

The trigger for a design system is usually one of three things:

You're building the second product surface. The moment your product has both a web app and a marketing site, or a web app and a mobile app, you need a shared token layer at minimum. Without it you'll have two visual identities that drift apart.

You're hiring your second frontend developer. Two developers making independent component decisions doubles the rate of divergence. A component library with basic documentation prevents this.

Your design iteration speed has dropped. If your designer is spending more than 20% of their time fixing "implementation inconsistencies" rather than designing new things, that's the signal.

If none of these apply to you yet, you probably don't need a formal design system. You need good naming conventions and some discipline about component reuse. That's achievable without a dedicated system build.

What to build first

When the moment is right, scope matters enormously. We've seen teams try to build "complete" design systems that stall at 30% done and never ship. Build less, finish it, use it.

Phase 1: Token layer (1–2 weeks)

Define named values for everything visual:

// tokens/color.ts
export const color = {
  brand: {
    primary: '#00C4B0',
    primaryHover: '#00E5CC',
  },
  neutral: {
    0: '#FFFFFF',
    50: '#F6F5F1',
    100: '#E5E4DE',
    900: '#111111',
  },
  text: {
    primary: '#111111',
    secondary: '#64748B',
    disabled: '#B0B8C4',
  },
};

// tokens/spacing.ts
export const spacing = {
  1: '4px',
  2: '8px',
  3: '12px',
  4: '16px',
  6: '24px',
  8: '32px',
  12: '48px',
  16: '64px',
};

This alone - a shared token file - will cut 80% of the inconsistency problems. Everything downstream can reference these values rather than hardcoding.

Phase 2: Core components (2–4 weeks)

Build only the components you use constantly. For most web products, that's:

  • Button (with variants: primary, secondary, ghost, destructive)
  • Input / Textarea / Select
  • Typography scale (H1–H6, body, caption, overline)
  • Card / Surface
  • Badge / Chip
  • Modal / Dialog
  • Tooltip
  • Loading / Skeleton states

Don't build components you don't have a current use for. A DateRangePicker that you'll need "eventually" should wait until you need it.

Phase 3: Document the patterns you actually use (ongoing)

As you build product features, document the component combinations you find yourself repeating. Empty states. Form validation patterns. Table structures. This documentation lives close to the code - in Storybook, in README files, or in a simple Notion page.

MUI as a foundation

For React projects, we recommend building on top of MUI (Material UI) rather than from scratch. MUI provides:

  • A complete, accessible component base
  • A robust theming system built for token-level customisation
  • TypeScript support throughout
  • Active maintenance and a large community

The common objection is that "everything looks like Google." This is a myth at this point - MUI's theming system is expressive enough that a well-customised instance looks nothing like the default Material theme. We've built systems on MUI that reviewers couldn't identify as MUI at all.

The real benefit: you're not maintaining a date picker, a modal focus trap, or a combobox. MUI's team handles accessibility edge cases that take weeks to get right from scratch. You extend and customise; you don't rebuild.

Measuring the return

The ROI of a design system is mostly measured in time recovered:

Design time: Designers stop re-specifying the same button in every mockup. They compose with existing components. A screen that took 4 hours now takes 40 minutes.

Development time: Developers stop implementing the same input field variant for the third time. Component usage drops implementation time from 2 hours to 15 minutes.

Review time: Design reviews stop being about "this button is 2px too wide" and start being about user flows and content. That's a better use of everyone's time.

QA time: Fewer visual bugs. When a component is tested once in isolation, it doesn't need re-testing every time it appears in a new context.

For a team shipping 3–4 features per week, a design system typically pays back its build cost within 8–12 weeks. After that, it's pure ROI - compounding every week you use it.

Common mistakes to avoid

Building for hypothetical scale. Don't design a token system for 50 themes when you have one. Don't build a component API for all possible variants when you need three.

Treating it as a project, not a product. A design system needs a maintainer. If no one is responsible for it, it rots. Even at a five-person startup, someone owns the system - even if it's one hour a week.

Skipping the tokens layer. Some teams jump straight to building components without a token layer. Then changing a brand colour means updating every component. Don't do this.

Building in isolation from the product. Design systems built in abstraction drift from real product needs. Build the system by extracting patterns from real product work, not by speculating about what you'll need.

This is exactly the kind of work covered under our Design Systems service - token layer, core components, and a scoped rollout plan.


If you're ready to build a design system for your product, or if you've inherited a messy one and need help restructuring it, get in touch. We'll tell you what your specific situation actually needs.

Work with us

Want us to do this for your product?

We build sites that hit 100 on Lighthouse by default, not by accident. Tell us about your project.