Blog
Newsletter
Tip jar
Shop
Filters
Auto layout
(
N
)
Branches
(
N
)
Composability
(
N
)
Dev mode
(
N
)
FigJam
(
N
)
File memory
(
N
)
Free Resource
(
N
)
Icons
(
N
)
Layer architecture
(
N
)
Libraries
(
N
)
Live embeds
(
N
)
Naming things
(
N
)
Organizing-things
(
N
)
Plugins
(
N
)
Properties
(
N
)
Prototyping
(
N
)
Variables
(
N
)
Workarounds
(
N
)
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Why I don't use icon fonts in Figma
SVGs are the way
Read time:
5
minutes
minute
//
Tags:
Icons
Plugins
10 common component architecture mistakes in Figma design systems
and what to do instead
Read time:
9
minutes
minute
//
Tags:
Variables
Auto layout
File memory
Icons
Layer architecture
Live strokes VS flattened filled paths for icons in Figma
It doesn't matter! Use both! You can have it all!
Read time:
4
minutes
minute
//
Tags:
Icons
Layer architecture
Managing icon component sizes
It's time to retire that icon wrapper component
Read time:
8
minutes
minute
//
Tags:
Icons
Properties
Variables
I've stopped flattening icon layers, and my color overrides are working perfectly
Collapsing SVGs into one layer is expensive, risky, and makes for a more fragile icon collection
Read time:
5
minutes
minute
//
Tags:
Icons
Properties
Variables
Library file page-organization strategies (pros and cons)
one component per page is not the only (or best) solution
Read time:
3
minutes
minute
//
Tags:
Libraries
Organizing-things
11 uses for variables beyond light and dark mode
tired: light/dark, wired: density
Read time:
2
minutes
minute
//
Tags:
Variables
Preserve directional icons' orientation on swap
Why swapping arrow-right for arrow-down still shows an arrow pointing to the right
Read time:
1
minutes
minute
//
Tags:
Icons
Remove the "direction" property on your arrow icons
And thumbs, chevrons, trend lines...
Read time:
2
minutes
minute
//
Tags:
Icons
Properties
Prevent icons from cracking when outlining strokes
there's two different workarounds!
Read time:
3
minutes
minute
//
Tags:
Icons
Use branches to keep file memory low
It turns out layers and large variant sets aren't the only things eating up file memeory
Read time:
6
minutes
minute
//
Tags:
Branches
File memory
3 reasons to use variables for validation styling (instead of variants)
reduce memory usage, improve component usability, and a third thing!
Read time:
6
minutes
minute
//
Tags:
Variables
Tutorial: build WORKING radio buttons, tabs, pagination, and breadcrumb sets in your Figma library
A workaround for managing prototype-ready materials in your library
Read time:
7
minutes
minute
//
Tags:
Prototyping
Libraries
Should library components come with prototyping interactions? Only sometimes...
Checkboxes, yes. Radios, no.
Read time:
4
minutes
minute
//
Tags:
Libraries
Prototyping
Organize your variables in 3 levels of collections
alt title: how to make sense of variable collections in Figma
Read time:
4
minutes
minute
//
Tags:
Naming things
Variables
Teaching "Intro to graphic design" at American University, Fall 2023
wish me luck!
Read time:
3
minutes
minute
//
Tags:
Config 2023 Reflections
How the new features and enhancements affect my past blog posts
Read time:
5
minutes
minute
//
Tags:
Dev mode
Variables
Auto layout
I have beef with status emojis in component library Page names
The concept is useful, but I have beef with the execution.
Read time:
6
minutes
minute
//
Tags:
Naming things
Libraries
Edit the width of nested components using zero-frames as resizers
Here's a hint: space between is an overrideable attribute...
Read time:
6
minutes
minute
//
Tags:
Workarounds
Auto layout
Layer architecture
20+ FigJam cursor-chat trigger words and 5 secret emotes
Spice up your FigJam communication game
Read time:
1
minutes
minute
//
Tags:
FigJam
✂ Placeholders are for people who know trying to predict the future is a losing game
reject the allure of the crystal ball, embrace not knowing, and know peace
Read time:
18
minutes
minute
//
Tags:
Composability
Properties
How to rescue your Figma file from the depths of hell and live to tell the tale
Let's get your file memory back.
Read time:
16
minutes
minute
//
Tags:
File memory
Layer architecture
The 6 Auto Layout stumbling blocks you need to understand to master this feature once and for all.
Because "just practice" and "learn flexbox" aren't good enough.
Read time:
12
minutes
minute
//
Tags:
Auto layout
How to customize the size of Figma embed iframes
For when the default 800x450 just doesn't cut it
Read time:
1
minutes
minute
//
Tags:
Live embeds
⍚ Base components are still useful, just not in your UI library
Just because they've fallen out of favor with design system folks, doesn't mean they're not useful!
Read time:
15
minutes
minute
//
Tags:
Composability
◈ Interface Representatives are the center of the Figma component universe
And understanding how they relate to the other 6 types will unlock a whole new level of workflow precision
Read time:
19
minutes
minute
//
Tags:
7 types of Figma components, named and explained
You're already use first type... but what about the other 6?
Read time:
6
minutes
minute
//
Tags:
12 ways to make your Figma components more delightful to use
Designers strive to make usable products. And components are themselves tiny products... let's make 'em usable!
Read time:
21
minutes
minute
//
Tags:
Auto layout
Composability
Naming things
Properties
Layer architecture
When to use variants, component props, variables, or separate components
Variables, variants, component swapping, and component properties all offer different advantages. Choosing the right feature is key to building a strong component library.
Read time:
16
minutes
minute
//
Tags:
Properties
Variables
File memory
Composability
This is probably why your Figma variant's "size" property isn't working
"it works fine on the canvas, but not when it's nested inside another component?!"
Read time:
4
minutes
minute
//
Tags:
Icons
Properties
Layer architecture
There are only 3 ways to build components in Figma
The techniques are: "basic", "starter-kit", and "slot"
Read time:
8
minutes
minute
//
Tags:
Methods for building and managing your Figma components
Confidently choose a building method that will benefit you in the future
Read time:
5
minutes
minute
//
Tags:
Review: Kitchen Sink Figma component architecture
Let's look at the tradeoffs between file performance and component management and maintence that come with this method of building components
Read time:
6
minutes
minute
//
Tags:
Auto layout
File memory
4 signals that something should definitely be a component
Spoiler: almost everything you make should be a component... almost...
Read time:
6
minutes
minute
//
Tags:
Yes, there actually IS a way to add layers to instances of Figma components
According to Figma’s documentation this isn’t possible, but I’ve found a way to get around it. No plugin required.
Read time:
5
minutes
minute
//
Tags:
Composability
Layer architecture
What's the optimal level of detail for a wireframe?
No matter how much time you're spending on a wireframe, you need it to effectively communicate an idea. How do you optimize for fidelity?
Read time:
3
minutes
minute
//
Tags:
Figma web browser mockup resource
Chrome, Safari, and Firefox, for both Windows and Mac, all utilizing Figma's auto-layout feature
Read time:
2
minutes
minute
//
Tags:
Auto layout
Free Resource
I cleaned up my site styles
Upgrading from willy-nilly class names to B-E-M naming conventions
Read time:
3
minutes
minute
//
Tags:
How I organized my job searching process
If Bon Appetit asked me to do a "Making Perfect" for job searching.
Read time:
8
minutes
minute
//
Tags:
document.addEventListener("DOMContentLoaded", () => { const items = document.querySelectorAll(".filter"); const container = document.getElementById("tag-groups"); const groups = {}; items.forEach(item => { const name = item.querySelector(".filter-item-label").textContent.trim(); const category = item.getAttribute("tag-category"); if (!groups[category]) groups[category] = []; groups[category].push(name); }); Object.entries(groups).forEach(([category, tags]) => { const group = document.createElement("div"); group.innerHTML = `
${category}
${tags.map(t => `
${t}
`).join("")}
`; container.appendChild(group); }); });