The correct approach is not to tear down and rebuild, but to gradually replace each part while the product is still running.
You do not need to stop the product or discard all old source code. The right way is to keep the old interface running, gradually transitioning each part to the new system in a phased replacement, starting from tokens to components. Only when a part is stable in the new system should you turn off the corresponding old part.
The most frequent question Sinh Vũ hears when clients start building a design system is: "The old interface has hundreds of screens, do we really have to redo everything?" Not at all. Redoing everything at once is the most expensive and risky approach. There is an alternative, proven in practice, called incremental replacement.
The approach of starting over (often called "big bang rewrite", meaning rewriting everything at once) creates a parallel code branch that can last for months. During this time, the actual product must still run and receive modification requests. As a result, the two branches diverge increasingly, the team becomes exhausted fixing both at once, and the launch date for the new system keeps getting pushed back.
More dangerously: a design or technical error discovered late will spread throughout the entire refreshed interface, with no simple way back.
The foundational principle is the Strangler Fig Pattern (a gradual replacement model, named after the strangler fig tree that grows around an old tree and gradually replaces it), recognized by the Microsoft Azure Architecture Center as one of the safest ways to transition running systems. Applied to the design system, the roadmap consists of three phases:
When scaling, renaming components or changing the source code structure manually can easily lead to oversights and take time. Codemod (an automated code modification tool, a script that changes code according to predefined rules) helps execute this quickly and consistently. Atlassian and MUI are two organizations that have published how to use codemod in the design system transition process.
Additionally, feature flags allow you to enable a new system for a small group first, observe the results, and turn it off immediately if there are issues without needing to redeploy. This is an important fallback when implementing on a live product.
In practice, the most time-consuming part is not building new components but the initial inventory and standardization of tokens. The team often wants to skip this step because it is less "visible" compared to having shiny new components. But if the tokens are not stable, everything built will need to be revised.
Sinh Vũ also recommends clearly defining the boundaries between the old and new components from the start: which documents are part of the new system, which components have officially transitioned, and which are still in the transition phase. Without clear boundaries, after six months, you will no longer know which system you are using.
Keep the old system running while gradually transitioning each part. Do not tear everything down and rebuild at once.
Strangler Fig Pattern, Microsoft Azure Architecture Center
Topic: Transitioning from an old interface to a new design system without starting from scratch. Sinh Vũ guide, sinhvu.com
Select each item you find appropriate, then print or save as PDF to take with you.
If you have marked most of the signs above, this is the time to discuss in more detail. Sinh Vũ can help you review and propose a direction.
Microsoft Azure Architecture Center, Strangler Fig Pattern. Atlassian and MUI codemods, practical operational documentation. A three-phase roadmap perspective: Sinh Vũ's practical experience.
You might consider it if the product is truly small, has few users, and you are about to replace the entire underlying technology. However, even in that case, inventory the old interface first to avoid missing important design decisions. In most cases, a gradual transition is safer as it preserves history and reduces the risk of launch.
Tokens (design variables) are foundational values such as colors, font sizes, and spacing, named and used consistently instead of hardcoding them everywhere. Standardizing tokens first is essential because all components share this foundation. If the tokens are not stable, the components built on them will also deviate from the standard and require multiple revisions.
Codemod (automated code transformation tool) is a script that changes source code in bulk according to predefined rules, for example, renaming an old component to a new name throughout the project. Using codemod requires an experienced frontend engineer. Sinh Vũ recommends that you work with the technical team to assess the scope before applying it, and not to run tests directly on the main branch.