The better, brighter future for UI designers on Windows is here.
If you are a UI designer on Windows, until recently your only options were Photoshop, Illustrator, or online tools like Webflow. Well, things have changed and now there are three new tools you can use for UI design: Adobe Experience Design (XD), Figma and Affinity Designer.
To get you up to speed, here is what has happened over the last few months:
- In September 2016 Figma was first released to public
- In November 2016 Affinity Designer was released as beta for Windows
- In December 2016 Adobe XD was first released as beta for Windows
- In February 2017 Figma added components and constraints
- In June 2017 Adobe XD added symbols and caught up Mac version
Why are these tools better for UI design than Photoshop or Illustrator?
Some people say that tools cannot make you a better UI designer, saying “the tool is just a tool,” like a pen is to a writer. However, I believe it’s much more than just that.
A better tool will make you a better UI designer.
Why is that?
- A tool that makes common UI design tasks easier and faster allows you to try more iterations of design.The time you previously spent on fighting the tool, you can now spend on elaborating your design.
- Limited set of visual effects in modern UI tools allows you to focus on basic design principles instead of decoration effects.
- Modern UI tools emphasize usage of components, which help you to be more consistent in your designs.
- The tools make collaboration and getting feedback easy, which is crucial for good UI design.
- Last but not least, these tools better support modern UI workflows.
Modern UI design workflow
Traditionally, user interfaces were designed as high-fidelity mockups in Photoshop. They were then delivered to stakeholders for approval. With the expansion of mobile apps and websites becoming more and more complex, such approach isn’t sustainable anymore.
- We start with low fidelity mockups so we can quickly move to the prototyping and testing phase.
- As individual components emerge in our mockups, we start to build a pattern library (also called design system or style guide). A library allows easy reuse of components across the project.
- We try to design for constraints to which our components are exposed instead of designing for endless screen resolutions.
- We design new features by composing existing components. If features require new components, we can design them in the context of the new feature and add back to our library.
Common characteristics of modern UI design tools
Modern UI tools like Figma or Adobe XD try to keep up with this speed of the modern workflow. Here are some common characteristics of them:
- They are lightweight and fast
- They have limited functionality with focus on UI design (sometimes too limited, as they are often beta versions)
- They are vector based
- They have an advanced and easy to use artboards functionality to allow many design versions. Figma takes this even further with frames (more on them below)
- They implement components (Figma) or symbols (Adobe XD, Affinity Designer) which allow the reuse and easy update of common visual elements across the project
- They use constraints (Figma, Affinity Designer) to control behaviour of child elements
- They allow sharing designs for online viewing and feedback
- They implement prototyping (Adobe XD, Figma) or integrate with 3rd party prototyping tools
Let’s get to designing
Let’s compare Adobe XD, Figma, and Affinity Designer on a small design project. Our goal is to create a team page that would display team members and allow a new team member to apply.
This is what I created in Adobe XD:
…and for comparison, this is the same design made in Figma:
Let’s break down how we got to these designs and describe some differences in the process of particular tools.
Getting to know the tools
We will start by exploring the tools’ user interfaces.
You can install Adobe XD from the list of apps in the Creative Cloud application. If you don’t have a Creative Cloud subscription, you should still be able to download Adobe XD beta for free, you just need to sign in.
Once you open XD you will be welcome by a minimalist, modern interface:
The hamburger menu on the top left hides menu for the files operations. Right from it there are two tabs for switching between the Design and Prototype mode.
Below, starting from left, there is a tool box with common tools like Select, Rectangle, Ellipse, Line, Pen, Text, and Artboard. On the bottom there are icons for Layers and Symbols.
In the middle, there is a canvas to which you can add an unlimited number of artboards. Once you select the artboard tool you can choose from predefined artboard sizes, like ‘iPhone 7’, etc.
On the right, there is a property inspector, which displays all options of the currently selected item. The property inspector cannot be hidden for now.
A small disadvantage is that XD doesn’t use tabs for different files, so if you have more files opened they will be grouped under the application icon in the taskbar.
Adobe XD doesn’t have guides or rulers at the moment.
While Figma is a web based tool, I strongly recommend getting a desktop app. Not only does it allow the use of keyboard shortcuts more consistently, but working with the desktop app gives you a somewhat more realistic feeling. Even though Figma is fast as a web app, it feels even faster as a desktop app.
On the top we have the application menu, which is a duplicate of the hamburger menu used in the web app. Below there is a row with the clock icon linking to the dashboard with your files, then the tabs with opened files.
Next to the hamburger menu there is a toolbox with Move tools (Move, Scale), Shape Tools (Rectangle, Line, Arrow, Ellipse, Polygon, Star and Place image), a Pen tool, Text tool, Team Library, and Comments. In the middle you can rename a file, and on the right there is a Share button, View settings, Zoom level, and Export functionality.
Below is the Objects panel, with frames, groups, and layers, followed by the canvas and Properties Panel.
Figma has rulers and guides.
Sign up to get a 10 day trial version of Affinity Designer. If you’d like to continue using Affinity Designer it will cost you $40 USD; however, this is a one time fee.
The slightly more complex interface of Affinity Designer is reminiscent of Photoshop or Illustrator. We can see this is a multipurpose tool oriented on illustrators too.
Contrary to Figma and Adobe XD, it allows you to reorganize panels. It also has advanced grid and guides managers.
Framing your design – artboards
When you create a new file in one of the tools, you will start with an empty canvas. On the canvas, you can create an unlimited number of artboards. An artboard is like a frame for your design.
You can choose from predefined artboard sizes – like Desktop/Web, iPhone, iPad, Android/Google phone and tables – or create a custom one.
Figma takes the concept of artboards even further – instead of artboards, it uses frames, and you can nest one frame within another.
Frames in Figma is one of its most powerful features.
A frame creates a new context for its child elements – you can align them to the frame bounds and also set constraints in that respect. For example, if the parent frame expands, the child element can stick to one side of it, scale with it, etc.
This is very much like front-end development, where child elements are nested in parent elements in the DOM tree. Designing in Figma is a lot about creating frames to group elements or components.
As you can see in the following image, you can manipulate the frame in many ways and also set constraints.
Contrary to that of Figma, in Adobe XD you can only group related elements, as group options are quite limited. You cannot align child elements within a group, and Adobe XD doesn’t implement constraints. However, it’s quite likely it will come with them or with a similar system quite soon.
Affinity Designer is somewhere between Figma and Adobe XD. It uses group and also implements constraints. The groups create bounds for the child elements.
Connecting the dots – prototyping
When someone submits our contact form, they get to the ‘Thank you’ page. In Adobe XD we can describe this relation in the Prototype mode. In the design mode we can duplicate the ‘Team list’ artboard and change it to the ‘Thanks’ artboard; then we can set connection from one artboard to another.
This allows us to think about the flow on our website or in our application from the beginning of the design process, because it helps us think of questions, like “How does the user gets back from the thank you page?” This way we can often remember missing UI parts or tweak the UI in a way that working with static screens wouldn’t allow us.
Figma has recently introduced prototyping mode, too. Affinity Designer doesn’t have prototyping at the moment.
Designing effectively – symbols and components
In the previous section we have duplicated the ‘Team’ artboard to make the new ‘Thank you’ page. Notice how both the Team and Thanks page share some parts, like header and footer; we will make these parts reusable so later we can update them easily.
In Adobe XD we can achieve this by using symbols. For now, the symbols implementation in Adobe XD is pretty basic, it means you can only override texts and bitmaps in symbol’s instances. When you update any other property of any instance, like color, all symbols update as well.
Symbols cannot be shared across different files, but this is a feature Adobe has already started to work on.
Figma not only calls the reusable parts differently (‘components’) but also implements them in other ways, which allows for much more customization of them. The main difference is that when you convert an element to a component in Figma, it becomes a master component. Instances are true instances, and any overrides to them do not automatically update the master component.
Figma also has a special feature called Team Library, which allows the sharing of components across the files. If you add a component to the Library, it becomes available in other files and you can update your components from the libraries.
This is a great feature to build a components library or a design system. Note, that since July 1st, this feature is only available in the paid plans. If you’d like to use components on the free plan, you will have to store them in the same file when they are used.
Symbols in Affinity Designer work similarly to those in Adobe XD, but you can override more properties of the instance. Components cannot be shared across more files either.
Designing effectively, pt. 2 – repeat grid and layout grid
Adobe XD implements Repeat Grid for easy replication of elements. Check out a small demonstration that shows how easily we can update and repeat elements:
Figma doesn’t have a functionality for repeating elements, but it has Layout Grids, which allow you to define a custom grid and allows control alignment and behaviour of the elements on the grid.
Designing for constraints
Figma’s constraints allow you to resize the master frame and control position, scale, etc. of the child elements. Always try to think about and set constraints of the child elements right away to save you time later.
Constraints can be partially used with a layout grid, but the grid itself doesn’t change when the parent element is resized (unlike, say, how Flexbox would do it). To change the position of elements on the layout grid, you need change the number of rows and reposition the elements.
Adobe XD doesn’t have constraints implemented, at the moment. When you resize artboards, elements on it don’t resize. When you resize groups, their content resizes, but sometimes in a way you don’t intend them to.
Luckily, resizing a repeat grid is very easy and intuitive.
Affinity Designer implements constraints in similar way as Figma.
Once you have the basics of your design done, you may want to give it a few bells and whistles here and there.
All three tools can accomplish most of the task you may need for UI, but of course, they cannot fully compete with Photoshop or Illustrator. On the other hand, however, using colors, gradients, effects like shadows or background blur, or masking is often easier and more intuitive in these tools.
If there is some feature lacking that is easier work with the text styles. Currently only Affinity Designer allows you to define text styles, although their usage is a bit cumbersome.
If you want to reuse text in Adobe XD, you have to use symbols. In Figma you can use text components, and use them inside other components.
Cooperation, exports, and hands off to developers
Adobe XD has advanced sharing abilities, too. You can export specific assets or artboards as PNG, SVG and PDF files for web, iOS and Android. However, Adobe XD currently doesn’t have a way to copy CSS styles from layers.
Affinity Designer falls short here as it doesn’t allow online sharing files or getting feedback for them.
Conclusion – the ideal tool
For me, the ideal tool would be a Figma with two features added from Adobe XD – repeat grids and a prototyping functionality. Figma’s frames/constraints system is superior to anything I’ve seen in UI design tools so far. Once you get used to it, it’s hard going back to anything less advanced. It shouldn’t be difficult to add basic prototyping to Figma, or at least an integration with more prototyping tools, and I expect we will see it this year.
Updated 7/28/2017: Figma added prototyping and developer handoff.
Because Figma is web based, it was immediately available on all operating systems. Adobe XD “lost” over the last few months trying to catch up on the Mac version; during this time, new features were rarely added. Hopefully, the next months will bring more new features, especially constraints or a system similar to them.
Affinity Designer is a bit on its own – it’s a powerful tool and its focus is not solely on UI design. This can be both an advantage or a disadvantage for someone. Together with Affinity Photo it can be a great combo for a designer who doesn’t work very often with other designers. For many people, the one time fee can also be attractive.