Genesys icons library
My Role
I co-created a React and TypeScript-based icon library that streamlined how teams use and manage icons consistently. Focused on defining the icon set, the architecture, integrating it into the design system, designing and coding the documentation in SB, and establishing the workflow for designers and developers alike.Overview
The library was created to streamline and standardize iconographyacross product and engineering teams, providing a unified, reusable set of SVG and font-based icons, as well as React components built in TypeScript.
This initiative was part of a broader effort to strengthen the design system's foundations, ensuring that visual language, accessibility, and implementation were coherent across platforms. The result was aversatile icon library capable of evolving alongside the company's design language and development needs.
The Challenge
Before this project, icon usage was fragmented and inconsistent. Multiple teams used different icon sets, naming conventions, and formats, causing visual clutter, confusion, and duplication. This also slowed development, as engineers often had to import or recreate assets manually.
The main challenge was to design a system that would centralize all icons while maintaining flexibility. It needed to work across technologies, support accessibility, and scale easily while remaining maintainable by designers and developers.
Process & Collaboration
Designers can easily add new icons by uploading SVG files, while an automated script handles conversion into React components.
We built a living documentation site in Storybook, where each icon is organized, previewed, and explained. It includes a gallery with advanced search based on SVG attributes like title and description.
This process reduced handoff friction and ensured designers and developers remained aligned, always working with the same up-to-date assets.
Development Approach
The library was built entirely in React and TypeScript for type safety and scalability. Each icon component is lightweight, reusable, and performance-optimized, letting developers import only what is needed. This keeps bundle sizes low while maintaining flexibility.
This is the main structure of the project:
/ (root)
├─ .github/
│ └─ … (workflows, templates)
├─ .storybook/
│ └─ … (Storybook config)
├─ icons/ (the SVG icon set)
├─ scripts/ (to generate components from SVGs)
├─ src/ (React components, utils... etc.)
│ ├── /components
│ │ ├── /IconBase
│ │ │ ├── IconBase.test.tsx
│ │ │ ├── IconBase.tsx
│ │ │ └── index.ts
│ ├── /context
│ └── index.ts
├─ stories/
├─ test/
├─ vendor/
│ └─ original_project/
├─ .gitignore
├─ .prettierrc
├── package.json
├── tsconfig.json
├── README.md
└── … other configuration files (config, oxlintrc, …)
Anyway, this is just an excerpt of the project structure to give you an idea of how it's organized. This is the link to Github repository in case you want to check more details
We also implemented automated testing and version control through GitHub Actions, ensuring safe deployments via npm. This maintained visual and technical integrity as the system scaled.
Impact & Outcomes
Consistency and collaboration
The new icon library immediately improved cross-team collaboration, and the centralized system accelerated onboarding for new contributors.Reduced developing time
Development time for adding or updating icons dropped over 50%, while visual inconsistencies across products were nearly eliminated.Improved the design system
The design system became more robust and reliable, contributing to a cohesive user experience and consistent brand perception.Learnings & Next Steps
This project highlighted the importance of creating a shared language that empowers designers and developers. Automating repetitive tasks, such as component generation and documentation, freed time for creative problem-solving and higher-level system thinking.
Looking forward, next steps include expanding the library with new icon sets, and especially enhancing the Storybook gallery search through semantic naming and accurate, descriptive tags.