What a design system is
A design system is a shared library of design decisions and reusable components: colours, typography, spacing, icons, buttons, forms, tables, dialogs and the rules for using them. It exists in two linked forms — components in Figma for designers and matching coded components for developers.
Without one, every team reinvents the same button slightly differently, interfaces drift apart and simple changes take weeks. With one, new screens are assembled from tested parts, brand updates happen in one place and accessibility is built in once.
Problems we solve
- Inconsistent buttons, forms and colours across screens or products
- Designers and developers rebuilding the same components
- Brand updates that require changes in hundreds of places
- Accessibility issues repeated across the product
- Slow onboarding for new designers and developers
What’s included
Audit & inventory
Catalogue of existing patterns and inconsistencies.
Design tokens
Colour, type, spacing and radius defined once and exported to code.
Figma library
Components with variants, auto-layout and documentation.
Coded components
React, Vue or web components with tests and Storybook.
Accessibility
Components meeting WCAG 2.2 AA by default.
Governance
Contribution process, versioning and release notes.
From tokens to components
-
Audit1–2 weeks
Screens collected and patterns grouped to find what to standardise.
-
Foundations1–2 weeks
Design tokens for colour, typography, spacing, elevation and motion.
-
Core components3–6 weeks
Buttons, inputs, selects, tables, modals, navigation — designed and coded together.
-
AdoptionOngoing
Migrate existing screens gradually and support teams using the system.
Making the system stick
Many design systems are built and then ignored. Adoption depends on making the system the easiest option: good documentation with real examples, components that cover real product needs, quick responses to requests and a clear way for teams to contribute. We help set up lightweight governance and measure adoption by tracking component usage in code and Figma.
Build your own or adopt an existing system?
| Approach | Pros | Cons |
|---|---|---|
| Adopt an open-source system (Material, Fluent, Carbon) | Fast start, accessible components | Products can look generic; customising deeply is hard |
| Theme a component library (MUI, Chakra, shadcn/ui, Radix) | Solid foundations with your brand | Some constraints from the library’s structure |
| Build a custom system | Fully tailored to your brand and products | More upfront effort and ongoing ownership |
Many organisations take the middle path: accessible headless primitives underneath, with their own tokens, styling and patterns on top.
Signs you need a design system
- Several shades of the same brand colour and many button styles in production
- Designers redraw the same components for every feature
- Developers rebuild similar components in different parts of the codebase
- Accessibility fixes have to be repeated across many screens
- Multiple products or teams need to look and feel consistent
- Rebranding would mean touching hundreds of files
Measuring adoption
A design system succeeds only if teams use it. Track the share of UI built from system components, the number of local overrides and the time to build common screens. Regular office hours and a clear contribution process help teams adopt the system rather than work around it.
Versioning and governance
A design system is shared infrastructure, so changes need care. We publish components as versioned packages with semantic versioning and change logs, keep Figma libraries and code in step, and deprecate components with migration notes rather than removing them suddenly. A small core team owns quality, while a clear contribution process lets product teams propose new components or variants. This balance avoids both a bottleneck and a free-for-all.
What a design system contains
| Layer | Contents | Who uses it |
|---|---|---|
| Foundations | Colour, typography, spacing, grid, elevation, motion and icon tokens | Designers and developers |
| Components | Buttons, inputs, menus, tables, modals and more, with states and variants | Designers in Figma, developers in code |
| Patterns | Forms, navigation, empty states, error handling, onboarding | Product teams designing new features |
| Content guidelines | Voice and tone, terminology, button labels, error messages | Designers, writers and product managers |
| Documentation site | Usage guidance, do’s and don’ts, code examples, changelog | Everyone building the product |
How we build a design system
-
Audit1–2 weeks
Inventory existing screens and components, finding duplicates and inconsistencies.
-
Foundations1–2 weeks
Define design tokens and accessible colour and type scales.
-
Core components3–6 weeks
Design and build the most-used components first, in Figma and in code, with accessibility built in.
-
Documentationongoing
Publish guidance in Storybook or a documentation site alongside each component.
-
Pilot and roll out2–4 weeks
Use the system in one product area, gather feedback and then expand.
Timelines are typical for a first release; design systems keep evolving with the products they support.
Tooling we commonly use
Common design system mistakes
- Designing in Figma only. A system without coded components rarely changes how products are built.
- Building every component up front instead of starting with the ones teams use most.
- No owner. Without a named team or person, the system goes stale and teams fork it.
- Too rigid or too loose. Systems need clear rules plus documented ways to extend them.
- Treating accessibility as an add-on rather than building it into every component from the start.
Is your team ready?
- Two or more products or teams share the same brand
- Designers and developers rebuild similar components repeatedly
- Inconsistent screens are confusing users
- You can dedicate at least part of someone’s time to ongoing ownership
If most of these apply, a design system is likely to pay off. It works hand in hand with product design and UX research, and with accessibility testing to keep components compliant.
Accessibility built into every component
A design system is the most efficient place to get accessibility right, because every fix is inherited by every screen that uses the component. We design and build components to meet WCAG 2.2 AA from the start:
- Colour tokens tested for sufficient contrast in light and dark themes
- Visible focus states and full keyboard support for every interactive component
- Correct semantics and ARIA patterns for menus, tabs, dialogs and comboboxes
- Touch targets large enough for mobile use
- Motion that respects reduced-motion preferences
- Documentation explaining accessible usage, such as labelling icon-only buttons
Contribution model
Healthy design systems grow through contributions from product teams, not just the core team. We set up a simple process: propose a new component or variant, review it against existing patterns, build it with tests and documentation, and release it with a changelog entry. This keeps the system useful without becoming a bottleneck.
Typical first-release scope
A useful first release usually covers foundations plus the components behind most screens: buttons, links, form inputs, selects, checkboxes, alerts, modals, tables, cards, navigation and tabs. As a rule of thumb, these cover the majority of everyday interface needs; specialist components follow once teams start using the system and request them.
Related services
Part of UI/UX design. Implemented by our frontend engineers; see also product design.
This page is part of UI/UX Design Services — see the full overview for related services, approach and pricing.