Back

Portal Design System 2.0

Portal Design System 2.0

What is a component library? #

A design component library is a centralized collection of reusable user interface (UI) elements—such as buttons, forms, icons, headers, and navigation bars—that are pre-designed, pre-built, and documented for consistent use across digital products like websites and applications

Why is it needed? #

Component library is a part of a bigger design system which is used by alomost every medium to large company to streamline their software development process. It helps in:

Objective #

The objective of this project is to upgrade the running library so that component can be updated with newer properties and can be better maintained in the longer run.

Current state #

While browsing through the component library and updating the component on regular support work, I have encountered a few issues:

[Issue 1] Majority of our current component design structure is based on figma’s old DS structure #

This was a major release back in 2022, but our components were never updated with respect to this update

This lead to component level issues like:

TLDR; Figma’s latest properties were not leveraged to create best version of a component


Example of this structure (Banner):

First issue in Portal Design System

[Issue 2] Our component structure #

Because of the current structure of

Little or no focus is given to the WEB side of things

This lead to structure level issues like:

TLDR; Overly complicated component/file structure


Example of this file structure:

Second issue in Portal Design System

[Issue 2.1] Our component structure #

Non-related components present on the same file

This creates search issues and you always have to remember where the components are.

A lot of manual work is required just to find where the component is

Examples:

TLDR; Incorrect categorisation of components

Third issue in Portal Design System

[Issue 3] Absence of local component structure in some complicated components #

Issues with this gap in components:

TLDR; A complex component like segment control should be designed from a nested component to maintain the states and design of the main component.

Fourth issue in Portal Design System

Business impact #

Plan #

I saw and experienced this issue when I joined Tide.co 2 years ago. Since I was new at that time, rather than completely re-doing the entire component library, I decided to start small and build on things, and feedback presented before me.

Small start/win #

Bigger picture #

In one of the townhall meetings of 2024 with the leadership, I got to know about the future plans of tide and that’s when I decided to perform the little experiment on a larger scale so as to support the upcoming timelines of the features that would be offerred and the direction company is taking

Q1, 2025 #

I formally discussed this with the wider team and it was added as an OKR

Formal Plan #

I decided to setup a new component library to counter the issues of component and structure upgrades. And started the planing how it should be done? Pushing updates or making changes to old library vs new library

For that reason, I created a comparison table between creating a new library vs updating the old one

Transition to New system library #


ProCon
Clean Break = No Legacy Baggage You don’t need to update or fix old, inconsistent component instances — the old library can remain untouched for legacy files while the new one sets the future standard.Loss of Old Component Connections Old designs won’t auto-update with improvements from the new system. They’ll either need to be left as-is or updated manually if revisited.
Instant Access to Updated Components Once published, the entire team gets access to new, standardized components from day one — no need to wait for staggered updates or approvals.Initial Migration Takes Time Moving components from the old system to the new one requires planning and time, especially if there are many dependencies or active projects.
Avoids Complex Merge Conflicts Creating a new library avoids the technical risks of merging design files, which in Figma can lead to lost overrides, broken variants, or nested conflicts. 
Simpler to Adopt Gradually Designers and developers can start using the new system project-by-project without having to refactor existing designs immediately 
Better for Training and Onboarding - A clean, well-structured library is easier to document and teach than a legacy one that’s been iteratively patched over time. 

Managing releases on existing system library #


ProCon
Single Source of Truth is Maintained - No need to track two libraries or switch context. Existing projects stay connected and updates can technically be applied in-place via instance updates.Technical Complexity of Merge Conflicts - Figma lacks robust merging tools, and maintaining an existing library with updated branches introduces conflicts, overwrites, and broken components.
Lower Immediate Overhead - Teams don’t need to manually swap out libraries or components. Only instances need updating — assuming everything merges correctly.High Maintenance Overhead - Keeping the old system up to date requires continuous effort: precise merging, cleanup, renaming, and testing across files.
 Inconsistent Behaviour Across Projects - Even after merging, instances across different files/projects need to be manually updated — increasing chances of inconsistencies or broken UI.
 Nomenclature Conflicts
- Updated component names or structures (e.g., separating Banner into ProductBanner and AlertBanner) may break compatibility with existing usage patterns.
- Eg: A new comp (Alert) has been added. This has to be replaced by the current versions of banner in our running designs
- Context: Currently we only have banner as a comp for product & alert messages. The newer setup divides them into TWO separate comps
 Figma Debt Will Accumulate Further - The more patches and updates you apply to an old system, the more “figma debt” builds up — slowing teams down and risking further divergence from the design vision.


TLDR;

Outcome #

Here are some exapmples of the changes that I did (before and after)

Previous state of Portal Design System Changes in Portal Design System More Changes in Portal Design System Some More Changes in Portal Design System

Design communication and migration plan #

In our weekly design meetings, these updates were shared with the whole team and “Why” we are doing the changes.

This exercise would:

Roll out plan #


On a common team call, a document was shared which includes #


Rollout plan for Portal Design System

Early outcomes #