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.

You cannot use these list items as a symbol

“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.

An element consisting of other 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.

A button element with 3 defined element types: category, size and state

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.

By selecting the “favourite” state you are editing now only list items with this state.

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.
Examples of types of objects

Combining Types

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.

Define a hover state for an icon element once and it’s ready to use in any other instance of icon

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.

List example
Grid example

Variables

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
  • Margins
  • Paddings

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.

Character Styles

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.

Look at those styles!

Automatic Layout

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.

Element fills the entire width of a parent element, in this case a card element

Margins and Paddings

Margins and paddings are a must. Using them would limit the positioning of other elements by a fixed distance.

Using paddings in a card element constraints the positioning of inner elements

Alignment

You could define how do you want the layer to behave on a x and y axis — no alignment, aligned left, centered or right.

No alignment — element is moving freely
Aligned to left — element is moved vertically
Aligned to left and bottom — element is locked

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