I’ve read a lot of comparison articles about the two, but I don’t think they really do Figma justice. Some of them briefly mention the team features, the browserness, the components, and constraints, but they don’t really focus on how they’re better than versions in Sketch. At best, they make it seem like both are about the same. The reason I’m writing this is because they’re not. This is a battle of nuance, and there’s VERY few things that Figma does worse than sketch. Even where those happen, they’re barely worse. But when they’re better… it’s not even close.
I would have never contemplated writing this a few months ago. Not even remotely. I’m a die hard Sketch fan. Every day, almost 8 hours a day, in and out, through and through, I love Sketch.
Well… I loved Sketch.
Until I started working on a cross-platform design system. Until I tried to implement nested symbols to keep my UI consistent. Until I tried to work with Sketch files in a team environment. Until I tried to hand off Sketch files to developers and had to pay for an additional subscription to a different tool. Until I had another sketch plugin or program that I rely on a little bit too much forget to update itself with a new release. Until I tried to figure out how to design with constraints in mind. Until the painstaking constraints that I had made didn’t work in this or that situation, and I had no way to fix them. Until a new Sketch version came out and my design files suddenly didn’t open, or layers changed attributes, or the nested masked symbols that I had so lovingly created, named, and edited got overridden with said update. Until I followed those tips and tricks that you find here on medium and realized that most of them just… don’t… scale.
Basically, until I tried to use it for creating a product in the way that I thought should be possible.
Don’t get me wrong. It has been a FANTASTIC tool for making UI. I wouldn’t be in the role, job, or have the knowledge I do today without Sketch. I owe it a huge debt for pulling me away from the shudder-inducing Adobe UI design ecosystem that was Illustrator and Photoshop.
On that note, I distinctly remember a time 3 years ago when I would have punched… well, maybe not punched, but for sure furrowed my brow aggressively at anyone who talked trash about Illustrator. I LOVED that tool. Past tense.
Is no longer currently in the present.
Illustrator was put out to pasture.
Today I tentatively do the same for Sketch. It’s been a good run, old pal. But I think we’re growing apart. It’s not you, it’s me. Well. Maybe it is you, but we can still be friends.
Because a little over a month ago I logged into Figma. Yup. Logged in. TO THE CLOUD, EVEN.
I know, I know, it’s browser based. Say what you will, make your objections about how that can never be as good as a desktop application. I balked at first as well. But it’s fast.
Reason #1: It’s slap yo momma fast
Is that a saying? Whatever, I’m running with it.
Crazy fast. I-have-no-idea-how-this-is-possible fast. Just-as-fast-if-not-faster-than-sketch fast. At least it is right now. I’m throwing everything I have at it. Inception level component nesting, background blurs (these do seem to chug it a bit, but Sketch has that issue too, so I’m not gonna count it against Figma.) Layers, upon layers, upon layers. I’ll update this if things change, but right now, it’s like butter on a bald monkey. Slippery.
But that’s not everything. After all, I’m willing to put up with a bit of chug in place of better features. Not much chug, but a ‘lil chug here and there is just fine by this guy. I’ll deal. I’ll cope.
But let’s get into the real meat and potatoes. You’re not going to switch for performance alone. You’re going to switch for:
Reason #2: Holy mother of nested components
I seem to be having a maternal theme here…
Anyways, take what you know about nested symbols in sketch and throw it out. Symbol overrides??? PAH! No more. This is serious business. Figma takes the ideas that were started in Sketch and turns them up to 11. 12 even.
Components are not the same as symbols. Not even close.
But at first glance, these seem about the same. Same workflow, similar name, easy to grasp. That sameness makes things easy to understand, the inferences are familiar, but then you start using them.
Let me throw a Sketch hypothetical at you:
- You’ve got a symbol with black text in it.
- In some situations that text needs to be red.
- In some situations that text needs to be 40% opacity.
- In some situations that text needs to be 40% opacity red.
- You also want to show the design at different levels of device zoom, because, accessibility, yo.
- Oh, you also are designing an night mode version.
- Also… speaking of accessibility, you have a high contrast version of those colors.
- Oh, and all of a sudden you did some user testing and realized that you need to add an icon to that symbol.
- Oh, and that icon changes.
- … and the icon… changes… color.
Wouldn’t it be nice if every layer in a symbol could be modified without breaking the original or needing to nest another one inside of the master?
Well, in Figma every layer in component instance can be modified. Every layer in a nested component can be modified. Every layer in a nested component inside of another component can be modified. And on and on and on.
All of them can be overridden without screwing up the master. (Well, most. Rotation, x y coords, height & width can’t, but that makes sense.)
I’ve tried to make this work in Sketch. I really have.
The great tips that the guys over at UX Power Tools recommend like using symbols as masks, having colors be symbols, adding emoji to symbol layers and overrides… They’re all good workarounds. But we shouldn’t have to go to all of that trouble to make something as simple as a header.
I tried the whole schtick, but I ended up with this:
The problem with this method is the overrides panel. As soon as you nest that many times, you lose the ability to control the order and name of the layers within the nested symbols. As a result, things all start to look the same and you get like 40 overrides to choose from, mostly from states that have no relevancy to your symbol. It’s a real pain, and really hard to try to fix, tweak, or update. Maybe I was just doing it wrong, but I’ve yet to come across a better solution.
How does this work in Figma? Here’s how I set up the same exact thing:
My default body style is black, but my action color is green. Instead of having to have Body / Main and Body / Action components, I just made one component, and then overrode the color on Left action. That override flows all the way up, but only the override that I’ve made for that instance. If I were to every change my body style to, say, all caps, each of these components would fall in line, but still keep their alignment & color.
ITS A MIRACLE. Try it, you’ll see what I mean.
Reason #3: Team Library
This one is big, and not just for teams. This has the potential to give us all access to the default styles and layouts as intended. If Google and Apple were to make their own component libraries and share those with the world, we’d all be speaking the same design language for the first time since the iPhone.
Imagine not having to download another template file when iOS updates. Imagine having access to all of the default material design specs. Imagine not having to manually go through and re-create everything when a new control is added.
As an example, let’s talk about the humble table cell.
It’s used everywhere, in almost every app, in every OS. It has thousands of permutations and restrictions and nuances. On iOS, a top row has a slightly different appearance than a middle or a bottom row.
How do you solve this?
Do you make each table row transparent with a rectangle behind them all? Good luck getting that bottom row to not have 2 overlapping lines without a few too many layer overrides. Oh, you want to add another row? Ha!
Do you add those hairlines by using a 1px no-blur shadow? Yeah right, the left side padding of the table row changes position depending on the implementation. Also, those aliasing issues on unshadowed edges aren’t THAT noticeable… right?
Do you have a rectangle for the hairline? Have fun aligning a .5px tall element to the grid when it resizes. Oh wait, you design in 2x? What is this, 2014?
Do you use a line?….. Please tell me you don’t actually use lines. *shudder*
Maybe there’s a solution out there. I haven’t found it. Until Figma.
All I have to do is make one component with a nested table background component, which contains my 4 states of a table row, and in each instance of the row, I can just turn on the one that makes sense.
But that’s not the coolest part. After I made this bad boy, I added it to the team library, and if I ever update this root component, it’s changes will flow to EVERY INSTANCE THAT EXISTS.
It will notify people in other files of the change, allow them to review those changes, and also allow it to only be updated when the time is right to do so. This is basically like GIT for my design files.
Previously, with Sketch, I could get some of this functionality. But here’s the rub. Every time you create a new Sketch file, you have to bring in the symbols from elsewhere. If one file gets updated, or if you realize that one symbol isn’t quite right, there’s no way to push those changes everywhere. As a result, you’re forced to add too much to one sketch file, so that everything can stay up-to-date.
There are entire teams of people at companies like AirBnB who are making tools just so that component libraries can be usable with Sketch. I just don’t have budget for that. Figma makes it so I don’t have to.
I have a project which contains all of my global elements. I have one for icons. YES ALL ICONS ARE FROM THE SAME PLACE. I have one for fonts, one for iOS, one for Android.
I thought Invision Craft would do this. WRONG. I bought icon jar. Yeah… no. Great for tagging and finding, no so much for updating and using.
This works, and it works damn well. For the first time in 2 years, I can know that all of my icons, all of my fonts, and all of my OS controls are uniform and maintainable. No more duplicates, no more mess.
I mean, check out how easy (and organized) it is to make this settings page:
If that doesn’t get you pumped… well then I suppose this article isn’t for you.
Reason #4: Support and Updates
I’m very excited about Figma, but it’s not without it’s shortfalls. I’ve run into quite a few bugs in my weeks with the tool that range from the team library not updating, rendering issues on other machines, layers not closing when clicked, etc.
But here’s the thing. I cannot think of a week in the last 2 years that I didn’t run into a Sketch bug. I’ve become accustomed to hiccups, most of which are minor.
Biggest difference here? I’ve actually had them fixed. I’ve had support staff respond to my issues within an hour. Hour. With an h. On top of that, they actually been able to push updates to my problems in the same week as my request.
Now, I’m sure that Figma is benefitting from a smaller user base, and is able to make bigger changes more quickly. But it goes without saying that having a tool that is ALWAYS up to date is far better than seeing a fat ‘update available’ dialogue when you log in. Those days in Sketch were always exciting, terrifying, and frustrating all at once.
Exciting because you get to read about all of the new updates, many of which will save tons of time.
Terrifying because you know, you just KNOW, that something will be broken, and you most likely won’t know when or why or sometimes even notice before it’s too late.
Frustrating because there’s no fix. Or the fix is long in coming. Or you can’t use the new shiny feature that everyone else is stoked about because it breaks too many parts of your workflow. Or that this release still hasn’t fixed that long-standing issue that you’ve had.
Also, can I just give a shout-out to Intercom here? Having that as a support tool inside of an app is just killer. No need to find the right email or the right website, it’s just all seamless, and it’s something that you cannot do inside of a desktop app.
Reason #5: Version History
Let’s be real. This is not version control.
If you have put faith in this system… you are going to get burned. I used to trust it. I don’t anymore. THIS is version control:
I can see when an edit was made. I can see who made it. I can go back to it. I can fork a file from a specific point in time. I don’t need Invision, I don’t need Dropbox, this is built in.
No need to say more.
Sketch is still better at some things. For now.
It’s better at integrations, dev handoff, prototyping, 3rd party tools, extensions, templates & resources, and it can all be stored locally. But none of those are deal breakers right now for me.
- For prototypes I already start from scratch in Principle because the Sketch import doesn’t work with symbol overrides and the structure isn’t the same.
- Dev handoff is my biggest concern at the moment, as I’m worried about giving the reins to people who are not familiar with the tool. Comments are not robust enough for documentation, and Zeplin really is easy to use. That being said, Zeplin it doesn’t communicate constraints, responsive layouts, object states, different screen sizes, and only shows one screen at a time. Also, I’ve read about other teams giving their devs read-only visibility, but that makes it so they can’t see colors, constraints or other information, just margins… What am I missing here? That’s not really useable, yet.
- I don’t use all that many integrations in sketch, but I know many out there do. Craft has always looked nice, but I seriously cannot figure out how you all use it. Also, I don’t design for the web inside of Sketch, so I have no need for tools with faux-flexbox. I design for the web in Webflow, because it’s incredible. Also, it has real flexbox.
- Figma has no 3rd party extensions right now. Sketch has too many, if you’re interested in my opinion. So it’s a pro and a con. Most of the ones in Sketch haven’t been updated recently, most of them don’t work with each other, and for Pete’s sake, can WE ALL JUST STOP USING THE SAME SHORTCUTS??? GAH! I mean really, Sketch, figure out a way for us to easily change those damn shortcut keys or see when 2 extensions are conflicting with each other. Ugh.
- Templates… I really hate templates. Unless your task is to design a UI kit, a UI kit can make more issues than they’re worth. Every time I’ve wanted to use a good one mid-project, I’ve had to break all of the styles, colors, symbols, and everything, just so I can paste the darn thing into my document. Half the time it takes me as long to use the template as it would have for me to design it from scratch.
- Local storage is an issue for some of the more security-conscious orgs out there. I know some of you can’t use offsite tools because your designs are under strict non-disclosure or you need them totally under your control. This is something I don’t have to deal with, but if you do, then I get it. Sorry Google and Apple designers.
There’s more features I could have mentioned. Some of these will resonate more with others.
- You can use it on Windows
- Their vector network thingy is pretty awesome
- You can use the same file at the same time as someone else
- Every click is undoable (YOU CAN UNDO ACCIDENTALLY CLICKING ON THE WRONG THING)
- Text can align to the top, bottom, and middle of itself.
- On that note, TEXT HAS A BOUNDING BOX.
- You can leave comments (This has a bunch of potential, but it’s not a killer feature yet)
- You can draw shapes that are on top of, but not inside of an artboard.
- Artboards don’t have to clip their child elements.
- Layout Grids. Sketch has got nothing on these. Components can have their own grids!?!? WHAT????
- Outlines mode. Like it was in Illustrator, but better. SO GOOD.
- Layer snapping works with bounding boxes.
There’s more, I know, but these are just the ones off the top of my head. And it will continue to improve over time.
It’s not perfect. It’s not the end solution. It’s still not everything that I’d like a product design tool to be. But it’s better, WAY better than I think we give it credit for. A few months ago, I would have judged another designer for using something other than Sketch. Now, I judge them for sticking around.
Note: We would like to thank Tom for contributing to our blog with his article.