How to safely upgrade and deprecate components in Figma

While keeping things simple for your design teams.

Nov 16, 2022 - 11:44
Jan 28, 2023 - 20:03
 0  213
How to safely upgrade and deprecate components in Figma

How to safely upgrade and deprecate components in Figma

While keeping things simple for your design teams

The Figma component properties update has been out since May 2022 and has the capability to transform how components are created, organised and maintained across complex systems.

Let’s take a quick look at ways we might want to upgrade an existing component to start using properties. If you’re not familiar with how properties work and how to use them check out this great guide to get you started.

Then, we’ll look at releasing the upgraded component with properties (or even without) with the goal of as little friction as possible for our end-users — our design teams.

For this post, we’ll look at an alert-block designed by Klarna’s design systems team.

A screenshot from Figma showing an example of the old way variants were set up vs the new properties based set up
Down from 24 to 4 components — It’s easy to see why using the new variant properties is beneficial

Our constraints/goals for releasing an upgraded component

  • We don’t want to break any instances of the older component
  • We don’t want to force designers who have files extensively using the older component to need to upgrade
  • We want all new designs going forwards to use the newer component
  • We want it to be easy for designers to upgrade from the old component to the new when they have the time

Upgrading the component

So, your team have identified a component that has waaaay too many variants and it’s a strong candidate to reduce down using the new properties feature — you have two options:

  1. You try and modify the existing variants and inevitably break all instance overrides in the process, affecting all the feature files containing those components upon publishing.
  2. You accept defeat and duplicate the component (creating another version), starting with the component variant that displays the most variants within it (to leverage the addition of Booleans) and applying the 4 properties; Type, Size, State & Icon where applicable.

Now, we know that we don’t want to break overrides so we’re going to go with option 2 and effectively fork the component —however, this will mean living with both the original and newer version for a while.

An animated gif showing component instance overrides being preserved when moving from and older component to a new one that has been set up with properties
You can preserve the text & icon overrides when moving from the original version of the component to the newer by making sure they both use the same layer names — However, this won't work if you’re using base components.

How to release the component without disrupting your team

Now we’ve created the new component, we don’t want to delete the original version of the component as it’ll break the “Go to main component” link which is useful for designers looking for more information about the new component/changes.

An animated gif showing a designer pressing on the “Go to main component library” and reaching a dead-end
Deleting the old component immediately is a dangerous move as it leads to a dead-end for anyone that uses the “Go to main component in library” link

For now, we’ll want to add a full-stop to the beginning of the old component name — this will stop it from appearing in component searches in any files where it doesn’t already exist as an instance, however, it will continue to appear in search in files where it's used.

When someone does come to visit the library, we can also visibly mark the components with a title or a short description to ensure they don’t copy and paste from the older version.

A screenshot from a Figma file showing an old version of a component next to a newer version
Labelling components in the library can help designers know which component they should be picking

Alternatively, you can choose to hide the old component completely — it and the instances will still exist, but you won't have designers accidentally copying from the older component.

An animated gif showing the older version of the component being hidden in Figma
Hiding the component along with adding a full stop can help prevent designers accidentally copying and pasting from the original component

Next, we’ll mark the original as deprecated using the description and component name — using a name that’s similar helps ensure that finding the new version when swapping instances is easier.

An animated gif showing a component with a description stating the component is outdated
Descriptions are powerful — They appear on each component instance and in search and can be a great way to add context as to design system changes.

You’re now ready to publish the library updates — at this point, it’s best to communicate with your team that changes have been made and they should look to use the newer version from now on and update the old version when they have the time.

Finally removing the old component

Once we’ve encouraged the team to use the newer version of the component using the subliminal messages throughout, we might need to find out how many files are still using the original component before choosing to actually delete it.

If you’re on an organization or enterprise plan, you can do this by looking at the library analytics.

A screenshot of the Library Analytics panel from Figma’s settings
Library analytics are a great way to keep track of older components that you’re phasing out

If you’re on a starter or professional plan, you’ll need to use an old, rather manual trick from the Sketch days to highlight the specific instances of a component that we want to identify and potentially remove — the big red box.

By placing the red box on the component and publishing the library, it makes it easier to identify old components in design files.

A screenshot of a Figma component with a large red box in the middle of it
The big red box can be a little abrasive, so be careful before you place it on all the old versions of components. (Tip: You can use absolute positioning to ensure the red box works on auto layout components)

From there, if the component is used sparingly, you may choose to finally delete the original component. For any designers whose designs do fall prey to the big red box and need to remove them, they can always select and hide them in the file one by one, or use a plugin like Similayer to bulk select and hide them across the file they’re in.

To summarise

  • Duplicating the original component you want to use with variant properties is your safest bet to avoid instance override hell ????
  • When creating the new component, start with the variant that has the most visible variants so you can leverage booleans right from the get-go.
  • Don’t delete the old component, instead — look to rename, add a description, make the difference between the old and new visible in the library and lastly, hide it if you have to.

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow