Features I Would Like To Use In Sketch
As designers, we want to move as fast as our ideas and design without restraints. We need to experiment freely and explore all the possibilities. Sketch supports this kind of creativity because it’s an universal drawing-based tool. The possibilities of visual expression are almost limitless.
However, maintaining large projects can become quite difficult with no automating options. That’s why I would like to share my ideas of what to add. I’m aware that some of these features already exist in plugin form (like Fluid), but I developed them further and improved them based on my experience and my needs. I hope that someday, we’ll see some of these features finished and implemented in the official Sketch app.
Elements and Element Types
We need something more customizable and powerful than symbols. Symbols cannot be used in cases when the content changes the size of an element — for example inline buttons, labels, lists of comments, lists of e-mails with attachments, etc. Imagine you need to design a list of notifications that varies in height.
“I could do that with 9-scale slicing” you say, but here’s an idea: elements of various types — you can call them components, atoms, molecules or objects, it’s the same. For the sake of this article let’s call them elements.
Definition Of Elements
An element can be created from at least one layer. By grouping various elements together you can make bigger elements.
Unlike symbols in Sketch that share everything (except of text, thanks to handy text overrides), elements would share only the properties you choose. We also need to define which ones and under what circumstances. That’s why element types are necessary. You can call them classes or object styles. I think of them as various multi-use classes that define what kind of element I am creating. Every type of an element would define some specific properties.
The element will always be defined by its core properties — the ones that don’t change in any of the element types. By defining a new type for the element and changing some properties you are defining a special rule that will be used only for this specific type. You could also change or add subelements to define new types of elements (like adding a favourite icon into a list item). Which means:
For every list item that has a “favourite” state type, I just want to have a star icon in the right corner. That’s all.
Examples Of Types
Types of objects should be universal. You could use them as:
- sizes: extra small/small/medium/large/extra large/etc.
- many types of states: default/hover/active, default/off, default/saved, default/pinned, default/favourite, default/bookmarked, default/seen, default/archived, etc.
- background: light/dark/photo/etc.
- content (for example for icons): search/menu/back/exit/more/etc.
You could combine types together to create every possible combination of element instances without even individually creating them. If you define a hovered state for an icon element, it’s ready to use in every instance of icon element you have.
Lists and Grids
All apps and websites are build from lists and grids. Therefore we need an automated option to repeat elements. You could set the repeating of elements vertically (number of columns) or horizontally (number of rows), which elements to repeat and how many types of elements you want to use. All repeating elements can still be overridden, like for example inserting an ad into a feed of posts.
I have never used Global Colors or Document Colors in Sketch, because it doesn’t sync my values in a document. It seems like this feature assumes that you won’t need to change a color. This lack of syncing doesn’t only apply to colors, but all the repeating values in designs as:
- Font Sizes
- Line Heights
- Border Colors
- Border Widths
Not only do we need an option to set our properties as variables that sync the values, we should also be able to organize our sets of the properties better and visualize this system we’ve meticulously created.
Text styles are not enough — what about all those inline links, mentions, highlights, code and keyboard elements? We are in dire need of character styles. One way to go would be to use elements as character styles.
Using all the previously mentioned features with manually adjusting the layout feels like something important is missing. Even if you could change element sizes universally, you would still have to reposition each one of them.
Height and Weight
You could use pixels or percent. Using percent in height or width properties would always be relative to the parent layer when in a group or to the artboard when not in a group.
Margins and Paddings
Margins and paddings are a must. Using them would limit the positioning of other elements by a fixed distance.
You could define how do you want the layer to behave on a x and y axis — no alignment, aligned left, centered or right.
What do you think about these features? How would you use them? Are there other features you would like to use?
Big thanks to Ivana Ziskova for proofreading