← All work

Case study · Tillage · 2024

Tillage Design System

One accessible component library to replace four drifting UI kits across a digital bank's mobile web, onboarding and advisor tools.

Role
Lead Frontend Engineer
Client
Tillage
Year
2024
Duration
14 months
Laptop screen showing a code editor with a component library open in dark theme
Component API reviews happened in the editor, not in slide decks.

01

The problem

Four product teams at Tillage were shipping four different buttons. Over six years the bank's interfaces had picked up 212 near-duplicate components, three date pickers and a colour palette nobody could fully list.

An external audit found 61 WCAG 2.2 failures, and a simple brand tweak took three sprints because every team had to touch its own copy of the same pattern.

02

The approach

  1. 01

    Audit before building

    I inventoried every component in production with screenshots and usage counts. Only 38 earned a place in the new library; the rest were variations of the same idea.

  2. 02

    Tokens first

    Colour, type, spacing and motion live in one token source, compiled with Style Dictionary to CSS variables for web and to native values for the mobile team.

  3. 03

    Accessible primitives

    Interactive pieces are built on Radix primitives, then tested with keyboard-only Playwright flows and screen-reader scripts before a component is allowed to ship.

  4. 04

    Migration without a big bang

    A jscodeshift codemod swapped old imports for new ones. Teams migrated one screen at a time, and a lint rule stopped new copies of retired components from appearing.

Whiteboard covered in sticky notes and sketches during a design system planning session
The component audit, sorted on a wall before a line of code was written.

03

The outcome

Eleven months after launch every customer-facing surface at Tillage runs on the library, and the design team now ships changes through tokens instead of tickets.

212 → 38
components in production
61 → 4
open WCAG 2.2 failures
3 sprints → 2 days
to ship a brand-wide change

04

The stack

  • React
  • TypeScript
  • Radix UI
  • Storybook
  • Style Dictionary
  • Playwright
  • Chromatic
Next project · 2023Georgian Bay Ferries Booking

12 results

Made with Supacode