Design methods are on the tip of each designer’s tongue, however the narrative within the business primarily focuses on why you want a design system and its significance somewhat than the truth of limitless upkeep and inner politics. The reality is that design groups spend years creating these methods solely to search out out that few individuals adhere to the rules or keep throughout the “guardrails.”
I’ve been lucky with Figma to host and run workshops at numerous conferences throughout Europe that middle on one very particular side of product design: parts.
I really like parts! They’re the beginning, the top, the hair-tearing-out center, the “constructing blocks,” and the inspiration — the every little thing inside each nice product design group.
The rationale they’re so essential to me is as a result of, firstly, who doesn’t like effectivity? Second, and extra importantly, they’re confirmed to extend the time-to-delivery from design to engineering, and right here comes a buzzword — they provide a path to return on funding (ROI) inside design groups. That is changing into more and more essential in a troublesome hiring market. So what’s to not love?
Observe: You could be concerned about watching Matt Gottschalk’s speak from Figma’s Config 2023 convention, which was devoted to the subject of ROI inside small design groups. The speak explored how small design groups can use design methods and design operations to assist designers have the fitting setting for them to ship higher, extra impactful outcomes.
Effectively, let me inform you a bit secret: parts are onerous, however not truly onerous to create. In reality, it’s arguably too simple to create a element on the design aspect. Have you ever ever seen a neighborhood element in your design recordsdata, one {that a} member of your staff created to hurry up their ideation and workflow? And talking of pace…
“It’s a signature trait of design system groups to consider they’re transferring too sluggish and should transfer quicker. Truly, profitable design methods transfer extra slowly than the merchandise they help.”
— Josh Clark, “Ship Sooner by Constructing Design Programs Slower”
There’s nothing stopping anybody from creating extra parts exterior of your design system every time they need. Nothing even stops individuals from creating parts which are an identical to those you already have! Don’t fear, we’ve all been there.
I’d personally favor to not use phrasings comparable to “good” or “dangerous” parts as a result of, as curious creatives, everyone knows that there’s no such factor as “one dimension matches all of them” on the subject of design. That lovely person interface package you paid $99 for? It wasn’t designed for your corporation, so it’s a must to recreate or manipulate a whole lot of the work to make it match. That superb ReactJS calendar widget your engineers discovered? It seems it’s not accessible inside display screen readers, and it’s a must to rework it after which undergo one other spherical of high quality assurance (QA) testing anyway.
Parts are inherently a part of a system that spans design and engineering — and sometimes model and advertising, too. We, as designers, are seemingly on a mission to name this a design system, however I’d a lot favor for us as an business to steer away from making use of the phrase “design” to actions which are cross-functional by nature. It would enhance collaboration and assist to foster a tradition of shared duty. It’s essential to remind ourselves that everybody is an issue solver, no matter job title! Possibly we may conform to name them merely… methods? (Let’s possibly not argue over that simply but; we’ve solely simply begun.)
As proof of this, a designer might help craft an API (utility programming interface) construction, and an engineer might help fine-tune a person circulation for a posh kind. That is collaboration in its purest kind and one thing we shouldn’t attempt to make tougher by making use of one self-discipline’s space as a stamp on cross-functional output.
Moreover, with the inherent flexibility of our design instruments, we’re usually setting ourselves up for failure with our creations.
In the end, all we would like are parts that are:
- Flexible,
- Repeatable,
- Adoptable,
- Indexable,
- Logical,
- Specific.
For now, let’s name this the FRAILS framework.
Observe: You’re in all probability pondering: “versatile” and “particular,” aren’t they a bit conflicting? And also you’d be form of proper. Nonetheless, this is likely one of the objectives of virtually each design staff I’ve spoken to. There’s a world the place each versatile and particular can stay aspect by aspect, however the problem we face is the necessity to determine on a mannequin of a system that’s both versatile or inflexible or lives in a “midway home.” (I’ll clarify a bit later how we will sort out both of those approaches.)
On this article (Half 1), we’ll take the primary two factors, Versatile and Repeatable, and we’ll take a look at constructing methods with these objectives in thoughts. Prepared? Let’s go.
Versatile
When requested to outline “consumable parts,” I usually discover that the commonest reply by the design groups is “a element that’s versatile.” This will imply a couple of issues!
Versatile: The Element Cases Can Be Modified
When planning for scale, the best method (from a upkeep perspective) is to create a small batch of parts that may be modified infinitely on the occasion degree. This makes a whole lot of sense! Reusability — or don’t repeat your self (DRY) — is a key idea in software program engineering. Why wouldn’t we need to borrow from this established norm?
“Don’t repeat your self (DRY) is a precept of software program growth aimed toward decreasing repetition of knowledge that’s more likely to change, changing it with abstractions which are much less more likely to change. The DRY precept is acknowledged as: “Every bit of data will need to have a single, unambiguous, authoritative illustration inside a system.”
— “Don’t repeat your self” (Wikipedia)
However there’s a aspect impact to flexibility, and that’s when one thing is modified to a degree that you just, the maintainer, don’t need. As I stated earlier, it’s extremely simple to make adjustments in design software program, which may generally imply you’re setting parts as much as be too versatile.
For example, let’s take the unfavourable (warning) state of your kind enter fields, the one usually with a pleasant crimson border if some information is lacking or incorrectly entered into them. What occurs if a designer in your staff adjustments that to a somewhat good inexperienced colour? That is flexibility in its core, and we will by accident promote this by creating generic parts that require customization with each utilization.

Like in most issues, an answer to that is schooling and communication. If you happen to aren’t comfy with modifications on kinds, chances are you’ll need to arrange your parts in such a approach as to point this. For instance, utilizing emojis in layers is the quickest technique to say, “Hey, please don’t edit this!” or “You may edit this!”.
Or, take into account delivery out parts which are named for intention. Would separating parts completely (parts named for intention) work higher? An Enter/Error, somewhat than a customizable Enter?

When contemplating the emoji title method, right here’s a set that I’ve relied on previously:
- Parts
- 🚨 Deprecated
- 🟠 Not prepared
- Element cases
- 🔐️ Not editable
- ✍️ Overwritten title
- Layers
- ✍️ Editable
- 🚨 Necessary
- Element properties
- ◈ Kind
- ✍️ Edit textual content
- 🔁️ Swap occasion
- 🔘 Toggle
- ←️ Left
- →️ Proper
- 🖱 Interplay
- 📈 Knowledge
- ↔️ Dimension

Versatile: Responsive Design
Ahh, our outdated good friend, responsive design (RWD)!
“The management which designers know within the print medium, and sometimes need within the internet medium, is just a operate of the limitation of the printed web page. We must always embrace the truth that the online doesn’t have the identical constraints and design for this flexibility. However first, we should settle for the ebb and circulation of issues.”
— John Allsopp, “A Dao of Internet Design”
Because it stands, there isn’t any native answer inside Figma to create absolutely responsive parts. What I imply by “absolutely responsive” is that format instructions and contents change in response to their breakpoint.
Right here’s an instance:

Observe: It’s technically doable to attain this instance now with auto format wrapping and min/max widths in your parts, however this doesn’t imply that you would be able to construct absolutely responsive parts. As an alternative, you’ll seemingly find yourself in a magic numbers soup with a prolonged listing of variables to your min and max widths!
With this limitation in thoughts, we might need to rethink objectives round responsive design inside our element libraries. This may increasingly take the type of adapting their construction by introducing… extra parts! Do we would like to have the ability to ship one element that adjustments from cellular all the way in which as much as the desktop, or wouldn’t it be simpler to make use of, discover, and customise separate parts for every distinct breakpoint?
“Regardless of the enjoyable sounding title, magic numbers are a nasty factor. It’s an old-fashioned time period for ‘unnamed numerical fixed,’ as in, just a few numbers put into the code which are in all probability very important to issues working accurately however are very tough for anybody not intimately conversant in the code to grasp what they’re for. Magic numbers in CSS consult with values which ‘work’ beneath some circumstances however are frail and susceptible to interrupt when these circumstances change.”
— Chris Coyier, “Magic Numbers in CSS”
By no means be hesitant to create extra parts if there’s a chance that adoption will enhance.
Then, what does this seem like inside Figma? We’ve got a couple of choices, however first, we have to ask ourselves a couple of questions:
- Does the staff design for numerous display screen sizes/dimensions? E.g., cellular and desktop internet.
- Does the event staff construct for a particular platform/display screen dimension(s)? E.g., an iOS staff.
- Do you construct apps aligning with native fashion guides? E.g., Materials Design.

The solutions to those questions will assist us decide how we should always construction our parts and, extra importantly, what our library constructions will seem like.

If the reply to questions 1. (Design for numerous display screen sizes/dimensions?) and 2. (construct for a particular platform/display screen sizes?) is “No,” and to 3. (Construct apps aligning with native fashion guides?) is “Sure,” to me, which means that we should always cut up out parts into separate element library recordsdata. We don’t need to enter right into a world the place an iOS element is by accident added to an online design and pushed to manufacturing! This turns into more and more frequent if we share element naming conventions throughout completely different platforms.
If the reply to query 3. (“Will we construct native apps, utilizing their design tips?”) is “Sure,” this undoubtedly requires a separate element library for the platform-specific kinds or parts. You could need to examine an choice the place you’ve a world set of kinds and parts used on each platform after which a extra localized set for when designing in your native platforms.
The instance under, with an instance mapping of library recordsdata for an iOS design challenge, is impressed by my Figma neighborhood file (“Easy design system construction”), which I created that can assist you arrange your design system extra simply throughout completely different platforms.
→ Get “Easy design system construction” [FigJam file / Luis Ouriach, CC-BY license]

In case you are designing throughout a number of platforms in a device-agnostic method, you’ll be able to deliver parts so much nearer collectively! If you happen to aren’t at the moment working with an agnostic codebase, it is perhaps price checking Mitosis (“Write parts as soon as, run all over the place”).
A typical problem amongst growth groups is utilizing the identical language; whereas one sub-team could also be utilizing Vue, one other maybe is utilizing React, inflicting redundant work and forcing you to create shared parts twice. In “Create reusable parts with Mitosis and Builder.io,” Alex Merced explores intimately Mitosis, a free instrument developed beneath the MIT license. Mitosis can compile code to plain JavaScript code along with frameworks and libraries comparable to Angular, React, and Vue, permitting you to create reusable parts with extra ease and pace.

Utilizing A Variant
This may increasingly seem like a variant set, with a particular property for machine/dimension/platform added. For instance,

As you’ll be able to think about, as these parts enhance in complexity (with completely different states added, for instance), this may grow to be unwieldy. Combining them into the identical variant is beneficial for a smaller system, however throughout bigger groups, I’d advocate splitting them up.
Utilizing Sections
You may take into account grouping your parts into completely different sections for every platform/machine breakpoint. The method could be the next:
- Use pages inside Figma libraries to prepare parts.
- Throughout the pages, group every breakpoint into a piece. That is titled by the breakpoint.
- Title the element by its semantic, discoverable title.

There’s a caveat right here! I’m positive you’re questioning: “However couldn’t variables deal with these breakpoints, eradicating the necessity for various parts?” The reply, as all the time, is that it’s all the way down to your particular implementation and adoption of the system.
In case your designer and developer colleagues are comfy working throughout the variable workflow, you could possibly consolidate them! If not, we could also be higher served with many parts.
Moreover, the split-component method means that you can deal with parts in a structurally completely different method throughout these completely different sizes — one thing that isn’t at the moment doable with variants.
Auto Structure
No matter how we manage the parts, responsiveness could be pushed very far with using auto format at each degree of our screens. Though it may be intimidating at first, the auto format makes parts work equally to how they’d be structured in HTML and CSS, transferring design and engineering groups nearer collectively.
As talked about earlier than, we will get very near responsive design with Figma through the use of variables and auto format, however ought to your format construction or typography kinds differ considerably between every breakpoint, chances are you’ll be higher off sustaining a number of parts as an alternative of 1 hyper-flexible one.
Repeatable
Of their essence, each element is repeatable. The problem with how reusable a element is arises once we begin to consider its specificity. Specificity usually means the next:
- Textual content material: labels, titles, or textual content content material usually.
- Imagery/media: cropping, side ratios, fashion.
- Association: the order of parts inside parts.
Textual Content material
Overrides for textual content are sometimes a big hurdle to leap over when beginning your design system journey, however there are two most important issues we will do to cut back potential losses and keep override preservation inside our cases.
“Override preservation” is sort of a mouthful, so let’s outline that first.

Let’s take a easy instance: a generic enter area. In your most important element, you’re more likely to have a textual content label inside it with the textual content, e.g., “Label.” Generics are helpful! It implies that we will swap this content material to be particular to our wants at an occasion degree.
Now, let’s say you insert this element into your design and swap that “Label” content material for a label that reads “E mail handle.” That is our override; to date, so good.

Nonetheless, in case you then determine to vary your most important element structurally, you place that label vulnerable to dropping its overrides. For example of a structural change, your authentic “Placeholder” now turns into a “Label” above the enter area. Instinctively, this may increasingly imply creating a brand new textual content component for the label. However! Do you have to do this, you’re dropping the mapping between your authentic textual content component and the brand new one.

This might doubtlessly break your present signed-off designs. Despite the fact that this looks like it may work — layer names are a good way to protect overrides — they’re separate parts, and Figma gained’t know the best way to switch that override to the brand new component.
At this level, introducing element properties can save us from this hassle. I’d advocate including a textual content element property to all your textual content layers with a purpose to attempt to forestall any lack of information throughout the design recordsdata by which we’re utilizing the element.

As I confirmed earlier than, I discover including a writing emoji (✍️) to the property title is a pleasant technique to hold our element properties panel as scannable as doable.
Content material Specificity
A call then must be made about how particular the default content material is throughout the element.
And that is the place we should always ask ourselves a query: do we have to change this content material incessantly? If the reply is sure, abstracting particular textual values from parts implies that they are often interpreted extra extensively. It’s a bit little bit of reverse psychology, however a textual content layer studying “[placeholder]” would immediate a designer to vary it to their native use case.
![Two examples are shown. On the left is ‘Fixed content’, on the right is ‘Flexible content’. In the flexible content example (on the right), a text layer reading ’[placeholder]’ below ‘[Label]’ would prompt a designer to change it to their specific local use case.](https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/building-components-consumption-not-complexity-part1/14-input.png)
If the reply is no, we’ll bake the fastened worth we would like into the element. Going again to our enter area instance, we’d set the default label worth to be “E mail handle” as an alternative of “placeholder.” Or, we may create a wholly new electronic mail handle element! (It is a name we’d have to make based mostly on anticipated/recorded utilization of the element.)
Imagery / Media
When establishing a content material system inside Figma, a couple of completely different questions instantly pop up:
- How do you utilize particular media for particular parts?
- How do you repair side ratios for media?
Inside Figma, a picture is actually a fill inside a form somewhat than its personal content material kind, and this impacts how we handle that media. There are two methods to do that:
- Utilizing kinds.
- Utilizing element units (variants).
Earlier than we take a look at kinds and parts, although, let’s check out the format that each one belongings inside Figma may take.
![There are six boxes in the image. The top row is Media format: [Domain] / [Type] / [Name]; and the bottom row is Media example: Figma.com / Logo / FigJam.](https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/building-components-consumption-not-complexity-part1/15-media.png)
Virtually, I’d advise establishing your media belongings as their personal library inside Figma, doubtlessly even establishing a couple of libraries in case you work throughout numerous merchandise/manufacturers with completely different approaches to media.

For instance, the imagery your product staff makes use of inside design recordsdata and advertising supplies is more likely to be very completely different, so we’d look to set these up as completely different Figma libraries. A designer utilizing these belongings would toggle “on” the library they should create an asset for a particular intention, retaining the fitting media in the fitting place.
As a result of this media is identical as another fashion or element inside Figma, we will use slash naming conventions to group forms of media throughout the names.
Area examples:
- Firm web site,
- Product,
- Advertising,
- Sub model/s.
Media varieties:
- Brand,
- Icon,
- Illustration,
- Picture,
- Video.

Instance names, utilizing the format:
Figma.com/Brand/Figma
,Figma.com/Icon/Variable
,Figma.com/Illustration/Parts
,Figma.com/Picture/Workplace
,Designsystems.com/Brand/Stripe
,Designsystems.com/Icon/Hamburger
,Designsystems.com/Illustration/Orbs
,Designsystems.com/Picture/Modular grid
.
These are cut up into:
- Library:
Figma.com
orDesignsystems.com
, - Media kind:
Illustration
orBrand
, - Media title: e.g.,
Element libraries
,Iconography
.
Though I’m utilizing photos for the examples right here, it really works with video belongings, too! This implies we will transfer within the course of successfully utilizing Figma like a mini DAM (digital asset supervisor) and iterate quick on designs utilizing brand-approved media belongings, somewhat than counting on dummy content material.
“A digital asset administration answer is a software program answer that gives a scientific method to effectively storing, organizing, managing, retrieving, and distributing a company’s digital belongings. DAM performance helps many organizations create a centralized place the place they will entry their media belongings.”
— IBM, “What’s digital asset administration?”
Utilizing Fill Kinds
Fill kinds aren’t only for colour! We are able to use them for photos, movies, and even illustrations if we need to. It’s price taking into consideration that due to the versatile nature of fills, chances are you’ll need to take into account working inside fastened sizes or side ratios to make sure cropping is saved to a minimal.
Figma’s redline “snapping” function lets us know when the unique asset’s side ratio is being revered as we resize. It’s a reasonably cool trick!
Utilizing Element Units (Variants)
Instinctively, this may increasingly not make a lot sense. Pictures as parts? However they’re photos! Nonetheless, it supplies us with way more management over how photos are used throughout the system.
Pictures as parts is the tactic you’ll need to use if you’re designing in a world of fastened side ratios for design, e.g., 16:9
, 4:3
, 1:1
, and so forth. That is sometimes outlined by the grid you utilize in designs and is most helpful for individuals who aren’t utilizing media as a background for a versatile object.
It’s additionally the very best technique for belongings like logos, illustrations, and icons, the place chances are you’ll want variations of the unique for various use instances. For instance, a crammed and an overview model or completely different stroke widths for various sizes.

You will get the above instance from Figma’s neighborhood:
→ “Mounted side ratio photos with variants” [Figma file / Luis Ouriach, CC-BY license]
For this world, although, I’d advise towards attempting to hack Figma into establishing absolutely responsive photos. As an alternative, I’d advocate working with a predefined fastened set of sizes in a element set. This may increasingly sound like a limitation, however I strongly consider that the extra time we spend inside Figma, the additional we get from the manufacturing setting. “Can we take a look at this within the precise product?” is a query we ought to be asking ourselves incessantly.
Virtually, this appears like making a element set the place we set the fastened sizes alongside one dimension and the side ratio alongside the opposite. Making a matrix like this implies we will use the Element Properties panel to toggle between sizes and side ratios, preserving the media contained in the element.
This can be utilized in tandem with a separate set of parts particularly for photos. If we mix this with Figma’s “nested cases” function inside variant parts, we will “floor” all the popular photos from our element set inside each occasion on the side ratios wanted!

Association
That is the toughest factor to foretell once we assume by way of the usability of customizable parts. The only instance right here is our outdated enemy: the shape. Instinctively, we might create an entire kind in a element library and publish it to the staff. This is sensible!
The difficulty is that when a designer engaged on a selected challenge requires a rearrangement of that construction, we’re form of in hassle.

This drawback extends to virtually all element teams that require manipulation. Tables, menus, lists, varieties, navigation… we’ll hit this wall incessantly. That is the place I’d prefer to introduce the idea of fastened vs versatile content material inside parts, which ought to assist to handle the long run issues of a world the place we put the DRY (don’t repeat your self) ideas in danger.
As design system maintainers, we naturally need to hold parts as composable as doable. How can this one element be utilized in a number of alternative ways with out requiring us to ship an infinite quantity of variations? That is the central theme of the DRY precept however could be difficult in design instruments due to the dearth of element order administration inside the principle parts.
Because of this, we frequently find yourself in a world the place we construct, keep, and ship limitless variations of the identical element in an try to sustain with snowflake implementations of our core element.
“‘When ought to we make one thing a element?’ is a query I’ve been fielding for years. My robust reply: proper from the beginning. Creating issues with a component-based mindset proper out the gate saves numerous hours — every little thing is a element!”
— Brad Frost, “Design system parts, recipes, and snowflakes”
For instance, the shape we spoke about earlier than could possibly be one for:
- Logging in;
- Registering;
- Signing as much as the e-newsletter;
- Including billing data.
These are all clearly varieties that require completely different information factors and performance from an engineering perspective, however they are going to most definitely share frequent design foundations, e.g., padding, margins, headings, labels, and enter area designs. The query then turns into, “How can we scale back repetition while additionally encouraging combinatorial design?”

An idea that has been long-used within the developer world and loosely agreed upon within the design neighborhood is termed “element slots.” This method permits the design system maintainers to ship element containers with agreed properties — sizing, padding, and kinds — while permitting for a versatile association of parts inside it.
Taking our earlier kind examples, we will then summary the content material — login kind, register kind, e-newsletter kind, and billing data kind — and supply a a lot easier shell element from the library. The designers utilizing this shell (let’s name it a “kind/wrapper”) will then construct their varieties regionally and change the slot element contained in the shell with this new customized most important element.
That is finest defined visually:
The query then turns into: “The place ought to these customized parts stay?” The method turns into the identical as it could for any element, which ought to hopefully align along with your staff’s coverage already.

Does this tradition element have to stay in a number of recordsdata? If sure, we transfer it to the subsequent degree up, both team-level libraries or world, if engaged on a smaller system. If not, we will comfortably hold that element native to the particular Figma file on a web page (I prefer to name it “❖ Parts”).
Necessary: For this premise to actually work, we should make use of auto format at each degree, with no exceptions!
Conclusion
That was so much to course of (over 5 thousand phrases, truly), and I believe it‘s time for us to cease staring on the pc display screen and take a bit break earlier than strolling by way of the subsequent set of ideas.
Go seize a drink or take some relaxation, then meet me in Half 2, the place you’ll be taught much more in regards to the adoptable, indexable, logical, and particular parts.

(mb, yk)