App
Design
Apprentice
By Prateek Prasad
App Design Apprentice
By Prateek Prasad
Copyright ©2021 Razeware LLC.
Notice of Rights
All rights reserved. No part of this book or
corresponding materials (such as text, images, or
source code) may be reproduced or distributed by
any means without prior written permission of
the copyright owner.
Notice of Liability
This book and all corresponding materials (such
as source code) are provided on an “as is” basis,
without warranty of any kind, express of implied,
including but not limited to the warranties of
merchantability, fitness for a particular purpose,
and noninfringement. In no event shall the
authors or copyright holders be liable for any
claim, damages or other liability, whether in
action of contract, tort or otherwise, arising
from, out of or in connection with the software
or the use of other dealing in the software.
Trademarks
All trademarks and registered trademarks
appearing in this book are the property of their
own respective owners.
Dedications
"In loving memory of my grandfather."
— Prateek Prasad
About the Authors
Prateek Prasad is an engineer and a self taught
designer. He started writing mobile apps when
he was in high school and has a soft spot for
beautifully designed products. He is a massive
comic book nerd (which might have even
influenced this book a little). He spends his free
time listening and playing music or thinking
about outer space.
About the Editors
Luke Freeman is a tech editor for this book and
also the Design Lead at raywenderlich.com. Luke
specializes in visual design, color, typography
and user experience design. When he’s not
designing and developing you can find him
cooking pasta, walking his hound Hunter,
watching Arsenal and playing football!
Lea Marolt Sonnenschein is a tech editor for this
book. Lea spent three years in New York, working
on the iOS application for Rent the Runway and
teaching Swift at General Assembly. Now, she’s
getting a masters in Innovation Design
Engineering in London, and spends most of her
time playing with sensors and microcontrollers.
She writes articles focused on design and
usability for raywenderlich.com, and is the
author of one of the most popular video courses
on the site, Reproducing Popular iOS Controls.
Sandra Grauschopf is the Editing Team Lead at
raywenderlich.com. She's an experienced writer,
editor, and content manager who loves to explore
the world with a book in her hand.
Matthew Morey is the final pass editor for this
book. Matthew is an engineer, developer, hacker,
creator, and tinkerer. As an active member of the
mobile community and head of technology at
Valtech he has led numerous successful mobile
projects worldwide. He’s the creator of Buoy
Explorer, a marine conditions app for water
sports enthusiast, and Wrist Presenter, an app
that lets you control presentations wirelessly
with your smart watch. When not developing
apps he enjoys traveling, snowboarding, and
surfing.
About the Artist
Vicki Wenderlich is the designer and artist of the
cover of this book. She is Ray’s wife and business
partner. She is a digital artist who creates
illustrations, game art and a lot of other art or
design work for the tutorials and books on
raywenderlich.com. When she’s not making art,
she loves hiking, a good glass of wine and
attempting to create the perfect cheese plate.
Book License
By purchasing App Design Apprentice, you have
the following license:
You are allowed to use and/or modify the
source code in App Design Apprentice in as
many apps as you want, with no attribution
required.
You are allowed to use and/or modify all art,
images and designs that are included in App
Design Apprentice in as many apps as you
want, but must include this attribution line
somewhere inside your app:
“Artwork/images/designs: from App Design
Apprentice, available at
www.raywenderlich.com”.
The source code included in App Design
Apprentice is for your personal use only. You
are NOT allowed to distribute or sell the
source code in App Design Apprentice
without prior authorization.
This book is for your personal use only. You
are NOT allowed to sell this book without
prior authorization, or distribute it to
friends, coworkers or students; they would
need to purchase their own copies.
All materials provided with this book are
provided on an “as is” basis, without warranty of
any kind, express or implied, including but not
limited to the warranties of merchantability,
fitness for a particular purpose and
noninfringement. In no event shall the authors
or copyright holders be liable for any claim,
damages or other liability, whether in an action
of contract, tort or otherwise, arising from, out of
or in connection with the software or the use or
other dealings in the software.
All trademarks and registered trademarks
appearing in this guide are the properties of
their respective owners.
Before You Begin
This section tells you a few things you need to
know before you get started, such as what you’ll
need for hardware and software, where to find
the project files for this book, and more.
What you need
To follow along with this book, you'll need the
following:
A Mac running El Capitan (10.11) or later, or
a Windows machine running Windows 8 or
later in a 64-bit environment.
An iPhone, iPad or iPod touch running iOS
10.0 or later, or an Android device running
Android 7.0 or later.
At least build 85 of Figma. While learning
how to use Figma is an important part of
this book, the most important thing to come
away with is an understanding of the
foundational design principles that you can
leverage with any version of Figma or any
tool.
Book Source Code &
Forums
Where to download the materials for this
book
The materials for this book can be cloned or
downloaded from the GitHub book materials
repository:
https://github.com/raywenderlich/mad-
materials/tree/editions/1.0
Forums
We’ve also set up an official forum for the book at
forums.raywenderlich.com. This is a great place
to ask questions about the book or to submit any
errors you may find.
Acknowledgements
Content Development
We would like to thank Rajiv Patel for his
advisory role in overseeing the development of
this book's curriculum and sample projects.
Rajiv is designer with over 19 years of working
experience. He graduated from the Stanford
Design Program, ran a design consultancy
company for several years working with startups
and companies such as Google, Autodesk, and
Dropbox. He was the original designer of the
Fitbit mobile app. He is now the design director
at Capital One labs.
Image Credit
We would like to credit the following image for
its use in Chapter 1, "Book Overview & App
Preview."
"iPad Notes App w/software keyboard" by
bm.iphone is licensed with CC BY 2.0. To view a
copy of this license, visit
https://creativecommons.org/licenses/by/2.0/
Found here:
https://search.creativecommons.org/photos/
3101ae9a-6816-486a-b8bb-1736a15b3c13
Section I: App Design
Apprentice
Start your journey through designing modern
mobile-app UI and UX using fundamental design
principles!
Chapter 1: Book
Overview & App
Preview
The past decade has seen significant
technological innovation. Smartphones, which
were considered a luxury not long ago, have
become mainstream, and internet connectivity is
accessible to a broader demographic. Not only
has this enabled users to express themselves in
new ways, it’s drastically skewed what
“computing” means by moving these capabilities
out of an office and into the palm of their hands.
For many users, a smartphone is their very first
computer.
This is nothing short of a paradigm shift that has
fundamentally altered numerous aspects of our
lives. It’s made the world a smaller place by
bringing people closer to one other. It has
altered our social behavior and caused entirely
new industries to spring up. It’s mind-blowing to
realize that the phones we have on us at all times
are exponentially more capable than the
computers that landed humans on the moon.
Looking back at how this ecosystem has evolved,
we can see that even the entry-level devices
available today are significantly more capable
than their premium counterparts were in the
early days. Smartphones now have more
sophisticated interfaces, graphics and
animations and ship with many more sensors to
accurately analyze the world around us.
This translates into smarter, more capable apps
that solve a host of problems — and do it with
delight. It’s hard to find an industry that apps
haven’t impacted. It’s far easier to reach out to
your audience and offer your services if you have
an app. This has made distribution more
effortless and has leveled the playing field for
everyone. But it’s also made it more important to
know how to design an app that goes beyond
pure utility.
Why design matters
With smartphones becoming mainstream, our
perception of design and how design impacts us
daily has changed as well. With the original
iPhone, apps tried to mimic the real world with
what’s called skeuomorphic design. And they did
this for a good reason. The iPhone was an
entirely new device, the first in its category, so
the only mental model users had when they came
to it sprang from using real-world objects.
Notes were literal sheets of paper with tears at
the top. Contacts looked like a physical address
book and there was liberal use of wood and
leather across the board. Looking back at it now,
it looks dated and maybe even childish to some
of you. But it was revolutionary at the time.
As humans, we rely on habits to interact with the
physical world. We don’t need to learn how to
use a notebook every time we buy one because
we’re already familiar with them. The original
iPhone leveraged these tendencies. Coming as
close as possible to real-world objects made it
easier for users to transfer their habits to a thin
sheet of glass and make that cognitive leap.
Ten years later, we no longer need to mimic the
real world — but it’s invaluable to reflect upon
the journey. As technology has advanced, user’s
expectations from apps have also changed. An
app doesn’t just need to work. It has to look
good, feel intimate and familiar, and be
delightful while still being unique enough to
attract attention and establish its identity.
That’s where this book fits in. It will teach you
how to integrate design decisions to your apps.
You’ll learn how to go beyond merely functional
apps to create well-made, well-considered ones.
About this book
The book starts from the beginning, assuming
you have no prior experience. It covers all the
basics, such as layout and composition, color and
typography, flow and transitions, and more.
You’ll use Figma, a modern design app, to learn
the fundamentals of the craft while learning how
to use the tool itself. You’ll apply the lessons you
learn to a sample app for a single point of
reference throughout the book.
Movie tracking app
In this book, you’ll design Cinematic, an app for
tracking movies. The app allows users to view
trending and top-rated movies and make a list of
movies they wish to watch. Here’s how it looks:
Assumptions about the audience
This book is for you if you are:
Someone with no prior design experience or
training.
Someone with no familiarity with
specialized design tools like Photoshop,
Sketch or Figma.
Unable pay for design tools, unless you can
use them as a regular part of your workflow.
Unable to hire a designer for your projects.
Someone who wants to do more of the
design on your own or level up your skills.
Chapter summaries
Here’s a synopsis of each chapter as a preview of
what to expect:
1. Book Overview & App Preview: This is the
chapter you’re currently reading. Get an
overview of the book including a brief look at
what’s coming up in each chapter. Set up
your Figma design workspace and learn how
to access the project files. Jump in and get
started right away with a quick project.
2. Tour of Workspace & Figma Fundamentals:
Get an introduction to key tools in Figma
like shapes, frames, sizing, alignment, colors
and layers and apply your learnings to
design a screen from scratch.
3. App Teardown: Trace over provided
screenshots for two popular apps to study
their layout and identify patterns and
structures used to build them.
4. Wireframing & Screen Layout: Learn about
the importance of wireframing and how to
incorporate it into your design process.
Create wireframes of a few screens and their
components and build a scaffold of the app
flow by defining the navigation between
screens.
5. Reusable Elements & Data: Learn to build
reusable components for common UI
elements like buttons, toolbars and content
cards. Incorporate sample text and image
data for more realism. Leverage resuable
components for faster iterations and to build
more flexible designs.
6. Typography: Learn typography basics for
communicating hierarchy, order and
emphasis.
7. Colors: Gain an overview of color basics by
learning common practices and creating
palettes. Create visual styles for consistency
throughout the app.
8. Transitions & Animations: Explore the
prototyping tools to create a full app
walkthrough. Create different transitions
between screens to communicate the
relationship among elements.
9. Feedback & Testing: Explore the
collaboration tools to test designs on
multiple devices and solicit feedback about
the app goals and overall user experience.
10. Design Systems & Visual Language: Learn
how to build a design system to establish
brand consistency. Gain insights into
fundamental design decisions by analyzing
Apple's Human Interface Guidelines and
Google's Material Design.
11. Recap & Next Steps: Review of the lessons
learned and how to apply them when
starting from scratch. Sources for
inspiration and useful resources.
Suggestions for continued learning and
mastering design skills.
Starter files
Each chapter comes with starter files to make it
easier for you to focus on the topic lessons,
rather than fiddling with setup issues.
The files are Figma files with a .fig extension.
You’ll also have access to final versions of each
chapter file for reference.
Setting up Figma
Figma is a relatively new design app that’s
rapidly gaining popularity. It’s comparable to
Sketch or Adobe Photoshop, with standard tools
for drawing shapes, using fonts, images, colors,
etc. It also has built-in prototyping features to
simulate interactive walkthroughs.
Some of Figma’s best features are that it:
Is a cross-platform app.
Is free to use for up to three projects, which
is sufficient for this book.
Has a vibrant third-party plugin ecosystem
to enhance your workflow.
Has apps on iOS and Android, which means
you can view and interact with the projects
on whichever device you use.
Sign up
Create an account at figma.com.
Launch the app
While Figma comes with native apps for both
Mac and Windows, for the purposes of this book,
you’ll use Figma on the browser to keep things
consistent across chapters.
Log in to your newly created Figma account on
figma.com
Install the Mirror app
Finally, download the Figma Mirror app for your
iOS and Android devices. You can find links at
figma.com/downloads or search for Figma Mirror
in the iOS App Store or the Google Play store.
Taking Figma for a spin
Here’s what you’ll learn in this first chapter:
Importing a design to Figma
Creating a prototype
Adding a button element to your design
Getting started
Log in to Figma, if you haven’t yet. If you’re
inside a new file that Figma created for you, click
the top-left navigation button and select Back to
Files.
Select the Drafts tab, where you’ll find three pre-
installed projects from Figma. You’ll see
something similar to this image:
Next, find chapter-1-starter.fig in the book
downloads and drag it into the Figma app
window to import the project.
Double-click chapter-1-starter to open the
project.
The project has three frames that represent three
screens of the app. The movie-list frame shows a
list of movies under the Trending category, while
two movie details frames show the details of the
movies “Birds of Prey” and “Frozen 2”.
These screens may look static, but it’s an
interactive prototype.
Viewing as an interactive prototype
To interact with the prototype, click the Present
button from the Toolbar. You’ll find it at the top-
right corner of your screen.
A new browser tab will open with the movie-list
screen inside an iPhone 11 Pro Max device
frame. The list is scrollable, but the status bar
and the bottom navigation stay anchored.
If you click anywhere on this browser tab, the
interactive components will flash, indicating
where you must click. In this case, it’s the Birds
of Prey movie card, which is the first item on the
list.
Clicking the card takes you to the details screen
for the movie. You can scroll through the screen
and see the different sections.
Having the ability to design and prototype the
interactions in one tool is powerful and reduces a
lot of friction and back and forth in typical
design workflows.
As a quick-start exercise, you’ll link the Frozen 2
movie screen to its detail screen. Also, there’s no
way for you to navigate back to the movie-list
screen as of now. You’ll build a Close button to
exit the details screen.
This quick exercise will get your hands dirty and
give you a feel for the process. The upcoming
chapters will go deeper into individual aspects of
the tool and the process but for now, go have
some fun!
Creating a link between two screens
Go back to the Figma editor window and click on
the Prototype option in the Properties panel on
the right.
In the Layers panel on the left, expand the
movie-list frame, and select the frozen-2 group
as shown below.
You’ll see a o button on the right edge of the
card.
When you hover over the o it will turn into a +.
Click on the + and drag the arrow to the movie-
details-frozen-2 frame. This links the Frozen 2
card to its details screen.
An Interaction Details menu will appear,
detailing the animation, navigation and
transition properties. Leave everything at their
default values and close the menu by clicking the
X at the top-right.
Click the Present button again to view the
interactive prototype. You’re now able to
navigate to the Frozen 2 movie details screen by
clicking the card in the list.
Awesome job building your very first interaction!
You’ll now create a Close button to go back to the
movie-list screen.
Adding a button to the details screen
Go back to the Editor tab and click the Design
option in the Properties panel on the right.
From the Toolbar on top, click Shape Tools and
select Ellipse (O).
Now, click anywhere on the movie-details-birds-
of-prey frame. This will add a 100x100 circle to
the screen. You’ll find this option in the Layers
panel to your left, as well.
Select the circle by clicking it, then give it the
following properties:
X = 16
Y = 60
W = 60
H = 60
Note: X and Y values define the X and Y
coordinates of this circle, while W and H
represent its width and height.
You’ll now change the color of the button. To do
so, select the Fill option from the Properties
panel on the right and give it a white (#FFFFFF)
fill.
Instead of manually creating the X symbol using
lines, you’ll cheat a little and use the letter X to
keep things simple. Sneaky right?
From the Toolbar at the top, select Text (T) and
click inside the circle to add a text layer.
Type X in uppercase in the text layer.
From the Text section of the Properties panel,
give this layer a font size of 32 and use the
Roboto font with the Regular weight.
The X is not centered in the circle yet. To fix that,
hold Shift and select both the circle and the text
layer.
Now, select Align Horizontal Centers to align the
two layers horizontally.
Next, select Align Vertical Centers to bring the
text into the circle’s center.
It’s time to group the layers. Keeping both the
circle and the text layer selected, right-click and
select Group Selection.
Note: Grouping two layers wraps them into
one entity, letting you move and resize all
enclosing layers collectively. This comes in
handy when working with UI elements that
consist of many smaller parts.
Double-click on the group in the Layers panel
and name it close-button.
Great job building your first button! Now, it’s
time to link your button to the movie-list screen
so you can go back to the list from the details
screen.
Start by clicking the Prototype option from the
Properties panel. Now, select close-button from
the Layers panel and click on the ○ and drag a
link to the movie-list frame.
Go back to the interactive prototype by clicking
Present. You can now return to the movie-list
screen by clicking the Close button on the details
screen.
You need to add the Close button to the movie-
details-frozen-2 screen as well. Instead of
creating it from scratch, select close-button and
press Command/Control-C to copy the button.
Now, select the movie-details-frozen-2 frame
and press Command/Control-V.
Not only will this copy the button along with the
correct positioning, but it will copy the link you
created earlier as well.
Go back to the interactive prototype by clicking
the Present button and you’ll see the Close
button on the Frozen 2 details screen.
Previewing on a device
To take your prototyping to the next level, deploy
your prototypes to a physical device and interact
with them. Install the Figma Mirror app from the
App Store or Play Store and log in to your Figma
account.
All you need to do now is select the frame you
want to view on your device, and voilà, it will
appear. It’s fully interactive.
Note that the prototype may not fit perfectly on
your device due to the size differences, but Figma
Mirror still does an excellent job of scaling the
designs — close to perfection.
Great job with the quick-start exercise! You built
your first UI element and interaction from
scratch. This is quite an achievement and you
should be proud of yourself. Even though you
haven’t thoroughly dived into Figma yet, this
introduction hopefully gave you a quick look into
what you’ll finally be able to build from scratch
after going through this book.
Key points
You set up your workspace by creating a
Figma account.
You learned how to import designs into
Figma.
You went through a quick-start exercise to
add a Close button using shapes, text and
alignment.
You added an interaction to navigate back to
the main screen.
You deployed your interactive prototype to a
physical device.
Chapter 2: Workspace
Tour & Figma
Fundamentals
In the last chapter, you started by going over the
importance of design and how it can help you, as
a developer, to collaborate effectively with your
design team. You also set up your design
workspace in Figma and learned how to import
the project files that you’ll use going forward.
Now, you're ready to be part of the early
conversations that steer the direction of your
product’s development.
While learning how to use Figma is an important
part of this book, the most important thing to
come away with is an understanding of
foundational design principles that you can
leverage with any tool.
Tools come and go, and there will always be a
newer, fancier one you might want to use. But as
long as you approach design from the
foundational principles, you’ll be able to
translate your ideas into real-world designs,
regardless of which tool you use. The ultimate
goal of this book is to make the tools take a back
seat, becoming merely a means to your creative
expression.
You might wonder, why pick Figma instead of
Sketch, Photoshop or another popular tool?
There are a few strong reasons to use Figma:
It’s is free to start with, unlike other
programs that require an upfront purchase
or subscription.
Figma plays nicely with other popular tools,
like Sketch and Adobe XD, so you can bring
files created in those tools over to Figma
without issues.
But, by far, the biggest motivation behind using
Figma is that it’s a browser-based design tool,
which makes it universally accessible. As long as
you can open websites on your device, you can
use Figma, whether you have a Mac, a Windows
computer, a Linux machine or even an iPad!
While Figma comes with a fairly minimal
interface and toolset, it has powerful features
that make rapid prototyping and iteration
extremely easy. When designing, you want to
explore as many alternatives as possible and
iterate over them quickly. You don’t want your
creative exploration to get bogged down by
tedious revisions and adjustments. Learning how
to harness Figma’s features will help you get
more done with less effort.
In this chapter, you’ll go over Figma’s interface,
look at its fundamental features and play with
the different tools and options to get a feel for
how they work.
Now, it’s time for your introduction to Figma.
Exploring the Figma interface
Log in to Figma, if you haven't yet. Then create a
new Draft. Figma’s UI has four distinct sections:
1. The canvas: The main area in the middle of
the screen, where you’ll work.
2. Layers panel: Located on the left side, the
Layers panel houses all your screens and the
components that make them.
3. Properties panel: Find this panel on the
right side of your screen. You’ll use it to
tweak and change the attributes — height,
width, color, etc. — of the different elements
you’ll work with.
4. Toolbar: This sits on top of the screen as a
horizontal strip. You’ll find the basic
building blocks used to create designs —
shapes, texts, frames, etc. — on the toolbar
alongside options to navigate your
workspace and access Figma’s preferences
and files.
Now that you’ve gotten a look at the Figma
interface, it’s time to create the frame where your
design will live.
Starting with a frame
Frames are central to any design that you create.
You can think of them as containers that house
the different elements that make up your design.
Figma ships with frames that mimic the display
area of popular devices. For the screens you’ll
design in this book, you’ll use iPhone 11 Pro Max
as the frame. Select it by pressing F on your
keyboard or by clicking Frame in the toolbar,
then selecting the iPhone 11 Pro Max option.
It now shows up in your Layers panel on the left.
Note: The default frame options are handy,
but you can always create a custom frame by
pressing F and clicking and dragging
anywhere on the canvas.
Zoom in and out of the canvas by pressing
Command/Control and scrolling up or down.
Now that you’ve added a frame to work with, it’s
time to learn about another fundamental part of
Figma: shapes. In the next section, you’ll learn
how to work with and style shapes by creating a
simple sign-up button.
Adding shapes
Click the Shape Tools option on the toolbar to
reveal the different kinds of shapes available.
Note: If there’s a shortcut available for an
option in Figma, it will show up next to the
option. In this case, the shortcut to add a
rectangle is R, for an oval, it’s O, etc. Over
time, the more you use keyboard shortcuts,
the more quickly you’ll navigate through
Figma’s options.
Select the Rectangle option (R) and click
anywhere inside the iPhone frame you added
earlier to add the rectangle to your frame. You’ll
eventually turn this rectangle into your sign-up
button.
Note: Whenever you add a layer to a frame,
you’ll also see that layer enclosed inside the
frame in the Layers panel on the left.
To modify the rectangle’s size, drag the four
handles on the corners or edit the height and
width in the Design tab of the Properties panel
on the right. Move the rectangle by clicking and
dragging it.
Note: When using the handles to
manipulate a shape’s size, hold Shift to
maintain the proportions. Holding Shift
while dragging a shape will allow you to
move it in straight lines horizontally or
vertically.
Change the size of the rectangle to 252x55 and
give it a corner radius of 8.
Click the + icon in the Fill section of the
Properties panel and select a fill of #087FA5.
This gives the shape a nice blue color.
Note: A fill fills a shape with a specific color.
A stroke colors the shape’s border. The
stroke width determines the thickness of the
border.
For the final touch, click the + icon in the Effects
section and give your button a drop shadow. Use
the default values of the drop shadow for now.
Now, press T and click inside the shape to add a
text layer to the frame. Type Sign up.
In the Text section of the Properties panel on the
right, change the font to Rubik. Use a font-
weight of Medium and a font size of 18. In the
Fill section below, select #000000 as the fill color.
Your canvas should look like this:
Note: Figma comes with the entire Google
Fonts library, you just have to search for the
font by name.
Now that you’ve put the basic elements of a
button in place, it’s time to learn about
alignment.
Aligning layers
The first row in the Properties panel is made up
of six alignment options. These options help you
align your layers with respect to either your
frame or to each other.
Select the text layer and click the Align
Horizontal Centers option. This will align your
text layer to the horizontal center of the frame.
Next, click Align Vertical Centers to align the text
layer with the vertical center of the frame. Note
that this will move the text outside of your shape.
Don’t worry, you’ll fix that in a moment.
To be sure the vertical positioning is correct,
validate it by checking the positioning of the
layer. Select the text layer and bring your mouse
outside the text layer while still within the frame,
then press Alt/Option. Red lines will appear on
all four sides of the text field, showing the
distance from the frame edges on all four sides.
Now, do the same for the rectangle.
Once both the text layer and rectangle are in the
frame’s center, you’ll group them so you can
move them together as one.
Grouping layers
To group the layers, select the text layer, press
and hold Shift, then click the rectangle. You can
see that both layers are selected in the Layers
panel on the left.
Once you’ve selected both layers, right-click and
select Group Selection or press
Command/Control-G.
Now, you can move both layers collectively.
Note: You can use the four arrow keys to
move shapes and groups around in
increments of 1. This is extremely helpful
when you want to align things precisely. To
move in increments of 10, hold down the
Shift key while you press the arrow keys.
There are four more alignment options, which
you should play around with. They let you
position your shapes to the left, top, right and
bottom with respect to each other or the
enclosing frame.
Now that you know a bit about how to add
elements to your design, it’s time to create a
beautiful login screen for your app.
Creating Cinematic’s login screen
You’ll now leverage your knowledge of shapes,
text and properties to create the following
screen:
Change the fill of the text layer you created
earlier to white and change the text to I’m new to
Cinematic. You will notice that the text no longer
fits within the rectangle.
You could fix the alignment of the rectangle and
the text, but wouldn’t it be nicer to have buttons
that resize automatically?
This is where one of Figma’s most powerful
features comes into play: Auto Layout.
Auto Layout
Auto Layout lets you create frames that adapt to
the size of their contents. This makes it easy to
create responsive UI elements.
Press Command/Control-Z and change the text
back to Sign up, then make sure your text and
rectangle are horizontally and vertically aligned.
Once that’s done, select the group and click the +
icon under the Auto Layout section of the
Properties panel to add Auto Layout. You can
also use the keyboard shortcut: Shift-A.
Visually, nothing’s changed — but your button is
now an Auto Layout frame that dynamically
resizes based on the text.
To test it, change the text to I’m new to
Cinematic again. You’ll see your button grow
automatically while respecting the alignment.
You’ll use Auto Layout quite extensively in this
book. But for now, it’s time to set up your login
screen’s layout.
Creating a grid layout
The login screen’s final design has a grid of
movie posters in the background with a gradient
overlay. There are two posters per row.
Start setting this up by adding a rectangle (R) to
the frame. Give it a width of 414/2 — half of the
width of your frame — and a height of 283.
Note: Figma supports arithmetic
expressions in the fields that accept numeric
input. Use this handy feature to create
elements with precise dimensions.
Select this rectangle, then press and hold
Alt/Option and drag it to the right to create a
duplicate.
Now, select both of the rectangles and duplicate
the row vertically three times so you have eight
rectangles in total. Your last two rectangles
might go out of the frame, as shown in the
screenshot below.
That’s because, if a shape’s dimension exceeds
the frame bounds, it gets added to the canvas but
stays outside the frame. To fix this, just select the
two rectangles outside of the frame bounds in
the Layers panel and drag them back into the
frame.
Select all the rectangles you just created and put
them in a group. Then rename the group to
posters-grid by double-clicking the name in the
Layers panel.
While you’re at it, rename the button frame to
sign-up-button and move the layer above the
posters-grid layer to make it visible. Your Layers
panel will look like this when you’re done:
Now that you have your grid set up, you’ll fill it in
with gorgeous movie poster images.
Adding images to the background
Press and hold Command/Control and click the
rectangle on the top left. From the Fill section,
click the fill color and from the drop-down menu
at the top-left of the pop-up, click Image.
Click the Choose image button in the middle of
the pop-up and navigate to the movie-images
folder in your downloaded project files for this
chapter.
Pick any image and close the pop-up, then
repeat the same process for all the other
rectangles until you fill the grid with images.
Once done, click the lock icon next to posters-
grid in the Layers panel. Locking a layer prevents
you from accidentally changing it or moving it
out of place.
Next, you’ll add a background color to make the
images blend together seamlessly.
Adding a gradient
To create a gradient background, add a rectangle
to the frame and give it a size of 414×896, which
is the size of your frame, then place it at X = 0
and Y = 0. Place this layer between the sign-up-
button and posters-grid layers and name it
gradient.
Now, from the Fill section’s drop-down, click
Linear to give this layer a linear gradient.
Select the left handle in the gradient slider and
give it a color of #018AA8 and 50% opacity. Then
select the right handle in the gradient slider and
give it a color of #060D31 and 100% opacity.
Your gradient layer will look like this:
Displaying the Cinematic name
Next, add a text layer above the gradient layer
and enter Cinematic, the name of the app.
Give this layer a fill color of white, a font size of
77, and use the Pacifico font with a Regular
weight. Add a drop shadow to this layer, using
the default values, by clicking the + in the Effects
section and selecting Drop Shadow. Finally, align
it horizontally to the frame and position it 204
from the top by entering 204 in the Y field of the
Properties panel.
At this point, you have nearly all of the elements
you need for your log-in screen. Congratulations!
Adding a sign-in button
The last piece you need on this screen is the
sign-in button. You’ll add that now.
First, place the sign-up-button at a margin of
119 from the bottom.
Now, add another text layer with the text Sign in.
Give it a font size of 16 and use the Rubik font
with a font-weight of Medium. Give this layer a
fill color of white.
Align it horizontally and position it 36 below the
sign-up-button by using the arrow keys.
Remember, you can always see how far one layer
is from another by using the Alt/Option button
while the layer is selected.
Group the two buttons and rename the group:
buttons-group. Position this group 64 from the
bottom edge of the frame and align it
horizontally. Remember to use the Alt/Option
key to check the positioning.
Congratulations! You now have all the elements
of your log-in screen in place. Next, you’ll do
some polishing to ensure the screen always looks
great.
Constraining the layers
Right now, the log-in screen looks great. But
what happens if you use a different device than
the one you selected for your frame? The design
will shift out of place if the screen size is
different.
Since you always want the buttons to be on the
bottom part of the screen, you can use
constraints to configure the button group so that
no matter what your frame or device size is, the
group always aligns itself to the bottom.
Constraints are another powerful feature in
Figma. They allow you to configure how your
objects and layers are positioned relative to one
another, across different frames or screen sizes.
Constraints, along with Auto Layout, are
concepts that iOS developers will already be
familiar with, but using them in Figma doesn’t
translate exactly to how they work in code.
Auto Layout and constraints do similar things in
both environments, letting you build responsive
and adaptive UIs. For Android Developers,
Constraint Layout offers constraint and Auto
Layout features.
Click the frame and decrease the height to 759.
You’ll notice that the buttons get cut off.
Reset the frame to its original height and select
buttons-group. From the Constraints option in
the Properties panel, Select Left & Right for the
horizontal constraints and Bottom for the
vertical constraint.
Do the same for the Cinematic layer and pin its
position to the top of the screen.
Now, modify the frame height and you’ll see the
button group and Cinematic layers retain their
positions, no matter the size of the frame.
And that’s it! Reset the frame to its original
height of 896. Your screen in its final state will
look like this:
Great job with your first screen! Even though
you’ve only explored a tiny subset of Figma’s
capabilities, you managed to make a fabulous
screen. Pat yourself on the back.
Key points
You learned about the different parts of
Figma’s interface and explored the various
panels.
You learned about the concept of frames and
looked at the built-in frames within Figma.
You used the shape tools to create basic
shapes and styled them using the shape
attributes.
You learned about the different options to
align multiple layers.
You learned about Auto Layout and how to
create adaptive UI elements.
You explored constraints and learned how to
build responsive UI that adapt to frame size
changes.
In Chapter 3, “App Teardown”, you’ll look at two
popular apps and perform a design teardown.
You’ll break down their discovery screens into
their key components and recreate their scaffolds
by drawing over them with some basic shapes.
Chapter 3: App
Teardowns
In the last chapter, you explored Figma's
workspace and built a sign-in screen using
Figma's fundamental shapes.
Before diving deeper into Figma and building
more screens, you’ll now go through an app
teardown exercise to study the discovery screens
of two popular apps: Airbnb and Pocket Casts.
Part of developing your style and an eye for good
design is drawing inspiration from other apps.
Doing teardowns helps you understand why
things were built the way they were, while also
building your understanding of common layout
patterns and design decisions.
Tearing down an entire app is beyond the scope
of this chapter. Instead, you’ll limit your focus to
Airbnb and Pocket Casts’ discovery experience.
[TODO: FPE: "Discovery experience" doesn't
mean anything to me. Will it be clear to our
readers, or should we use another term?]
The primary motivation behind picking these two
apps is that their design is consistent across both
iOS and Android. This helps you look at the
broader picture without delving too much into
platform-specific nuances.
Loading the starter file
Start in Figma’s Files screen, then drag chapter-
3-starter.fig into the main Figma window to
import it. This file is in your downloaded
materials under Chapter-3/projects/starter.
Alternatively, click the Import button at the top
right to navigate to the file and import it.
Open the imported project. You’ll see two
screenshots that you’ll trace in this exercise.
While the two apps are drastically different,
they’re built on the same principles and patterns.
Sure, they use different typography, color
palettes and layouts to establish their visual
identity and brand. But, by looking at each app
more closely, you’ll notice the repeated patterns
and common building blocks that their designers
used to build these screens.
Tracing Airbnb’s explore screen
First, you’ll focus on the Airbnb app. To make it
easy to notice the patterns, you’ll focus on one
section of the app and break it down. In this
case, you’ll trace the list.
Start with the Top sellers section, which has two
distinct elements: the section header and the
horizontal scrolling list of cards. This section is
repeated vertically across the screen for different
categories.
Focus on the card element. It consists of:
Header image with a status tag and a
Favorite button
Ratings
Name
Details
Pricing
Now that you understand the composition, you
can see that the screen is made up of only a few
unique elements. What differentiates each
instance is the data it represents.
This will become even clearer once you trace out
the entire screen. Instead of replicating the app,
you’ll trace the component boundary to create a
low fidelity scaffold. The goal is to gain insights
into structure and layout, not to clone the UI.
In the airbnb-trace frame, select the screenshot
image, reduce its opacity to 10% in the Layer
section of the Properties panel, then lock the
layer. This will make your trace easier to see.
Select the rectangle tool, then trace over the first
section’s heading. In the Fill section of the
Properties panel, remove the fill for this
rectangle by clicking the - icon and give it a
stroke instead so you can see the element
boundaries. Give it a corner radius of 8.
Do the same with the first image card, giving it a
corner radius of 16.
Now, use rectangles to trace the four vertical text
sections and give them each a corner radius of 8.
To make this even more effortless, use Auto
Layout to maintain the margins while you create
the repetitions. You can duplicate a shape by
selecting it in the Layers panel and pressing
Command/Control-D.
When you’re done, group (G) all the layers that
make up the card.
Now that you’ve created one instance of this
trace, you can duplicate the group for other,
similar items in the section. Make sure that
they’re aligned correctly!
Once one section is complete, group (G) the list
with the section header. Take note of how you’re
composing smaller elements into larger
components that you can reuse.
Repeat the tracing for the remaining three
sections of the screen, then hide the screenshot
altogether and look at the trace now. Notice how
the section header rectangles visually divide the
list, even without the data.
The layout amplifies the screen’s core structure,
which, aside from the navigation bar on top, is
made up of only two components!
Tracing Pocket Casts’ discover screen
While the Pocket Casts screenshot doesn’t look
as straightforward as Airbnb, this method will
still work!
Unlike Airbnb, Pocket Casts uses different
section styles to surface different things within
the same list. The app uses a total of five section
styles. Check them out:
Most apps with a scrollable feed of items
compose multiple item types to create a list. For
this exercise, you’ll go top-down and trace the
list sections, one by one.
Start by reducing the screenshot’s transparency
and locking the layer.
For the top section, Featured, trace over the
thumbnail. Give it a stroke, remove the fill, and
change the corner radius to 4. Do the same for
the other text elements in the section, giving
them each a corner radius of 8.
Next, trace the Trending section’s heading and
the Show All text, then group (G) them into a
header. You can reuse this header component
across multiple other sections of the screen.
Trace over the list items, group them (G) and
name the group list item. Use Auto Layout to
duplicate the trace, adjusting the width of the
text layers accordingly.
Now, trace race the Sponsored section and group
it (G).
Note: It’s a good practice to maintain a top-
down visual order in your Layers panel,
which means that sections and items that
appear first on the screen should be on the
top of the Layers list. That makes it easy to
find elements when you have to search
through many layers and items in each
frame.
The Guest List section is interesting. Trace the
rectangle backdrop, giving it a corner radius of 8.
Next, trace the avatar image, giving it a stroke
width of 4 and placing the stroke outside. Make
sure your avatar layer is on top of the backdrop
layer.
You may notice that, since the shapes have no
fill, the backdrop’s stroke is visible through the
avatar circle. That looks a little out of place.
To fix this, first select the circle and give it a fill.
Now, select the circle and the backdrop and click
the Boolean operations’ drop-down on the
toolbar. Finally, click Subtract Selection.
You’ll notice that the circle gets punched out of
the backdrop.
Boolean operations help you cut one shape out of
the other or combine them in different ways.
Take a moment to play with them to get a feel of
how they work.
Now that you’ve punched out the avatar, create a
new avatar circle on top of the subtracted layer
with the same properties you used earlier.
Trace out the text layer and group (G) this
section. Call this group guest-list.
If you’ve been organizing your groups as
suggested earlier, your Layers panel should look
like this:
For The Little Ones section, follow the same
approach as you did with the Airbnb horizontal
scrolling list. Trace out the first card and then
use Auto Layout to construct the list.
For the Network Highlight section, duplicate the
Guest List section and adjust the trace
boundaries.
Finally, for the Popular in United States section,
duplicate the Trending section.
Now, hide the screenshot entirely and analyze
the repetition. Unlike Airbnb, Pocket Casts
reuses smaller building blocks across
components. They also stagger their repetitions.
Great job completing the app teardowns! By
leveraging your knowledge of basic shapes, you
traced these screenshots and uncovered the
fundamental pieces used to build the screens.
A large part of each app’s experience was crafted
by standing on the shoulders of reusable
components with unique data. This exercise lets
you see this in practice.
This is a significant realization at this stage, and
you’ll find that most apps work this way.
As you dive into future chapters, this idea will
become more apparent. While you’re at it, you’ll
also learn techniques that will help you fly
through Figma.
In the next chapter, you’ll start wireframing the
screen layout and work on the app flow for the
Cinematic app.
Key points
You learned about the significance of tearing
down an app.
You traced the Airbnb explore screen using
the shape tools and uncovered that it's
basically built with just two components.
You then traced Pocket Casts' discover
screen using the shape tools and learned
about Boolean operations.
You compared Pocket Casts' trace to Airbnb’s
trace to uncover how it staggers repetition of
components across sections.
Chapter 4: Wireframing
& Screen Layout
In the previous chapter, you went over Figma’s
basic shape and styling options and used them to
create a sign-in screen. You also went through an
app teardown exercise to uncover common
patterns across two popular apps. In the process,
you learned how to reuse and compose simple
building blocks to create unique design
variations.
Figma has many more tools to offer, which you’ll
look into eventually. For now, however, you’ll
leverage the skills you picked up in the last
chapter to start laying the foundation for your
movie app, Cinematic.
In this chapter, you’ll start wireframing the app
and build a scaffold that you’ll flesh out in the
upcoming chapters.
The importance of wireframing
Wireframing is essential in UI design. It allows
you to give structure to your ideas and
materialize them. Wireframing exposes the
rough edges in your thoughts early on so you can
iterate them without time-wasting changes and
revisions.
Diving directly into creating high-fidelity
mockups that look and feel real might seem
tempting at this stage, and for good reason. But
you are going to start with wireframes as working
in low-fidelity helps prevent wasting time and
effort.
Wireframing is particularly crucial when working
in a cross-functional team because it lets key
stakeholders get involved early in the ideation
phase to discuss different approaches. It opens
up the discussion about which direction to take
and promotes collaboration. Your collaborators
don’t need to know how a specific tool works to
provide valuable input.
When you’re wireframing an app, it’s essential to
keep customization and styling to a bare
minimum. Wireframes need to be generic
enough to allow for rapid iteration and
exploration while still having critical building
blocks in place to define the foundation of the
core experience. This stage in design focuses
more on function and less on form.
Establishing the core flow and functional
structure with wireframes will allow you to
modify and tune the app’s cosmetic aspects in
the future. In the chapters that follow, you’ll
build on top of the wireframe, adding the finer
details and polish like establishing a palette and
a typographic scale.
Defining the app’s concept
Before you turn to the drawing board, it’s helpful
to define the idea you’re working toward.
In this case, you’re building a movie tracking app
that lets users curate a list of movies they want to
watch and gives details about the movie, like the
cast, genre, duration, ratings and so on.
From the intent above, you can break down the
app into a few key features. It should:
Display a list of movies.
Show the movie details.
Let the user bookmark/favorite a movie.
Breaking the broad idea down into smaller
features helps you focus on them one at a time
without worrying about the big picture.
Now that you have defined these key features,
you’ll tackle them one by one. As you work, you’ll
keep the details and finish in the wireframes
low-fidelity so you can change things around
quickly and create multiple iterations.
Launch Figma and create a new file. Add a new
frame to the canvas by pressing F and selecting
the iPhone 11 Pro Max frame. Name the file
cinematic-wireframe by clicking on an empty
spot in the canvas and then clicking on the file
name in the toolbar.
Designing the movies list
For the first iteration, you’ll create a
conventional list, like the ones you’ve seen in
most of the apps you use. The list item will have
five components:
Movie poster
Movie name
Metadata (release year, director, etc.)
Genres
Rating
Start building this screen by adding a 414×224
rectangle (R) for the movie list item container,
then removing the fill and adding a black stroke.
Align the rectangle to the top and left of the
frame by either moving it manually or by setting
the X and Y fields to 0 in the properties panel.
Finally, name the frame container.
Now, add another rectangle (R) for the movie
poster measuring 125×192. Remove the fill, and
add a black stroke. Switch to the Line Shape Tool
(L) and add two diagonal lines. Align the ends of
each line to the corners of the rectangle to create
an x. Group the rectangle and diagonal lines and
name the group movie-image.
Position movie-image inside the container on the
left side. Give it a margin of 16 on the left, top,
and bottom from the sides of the container by
moving it manually or by setting the X and Y
fields to 16 in the properties panel. Your list item
should look like this:
Adding the movie name
For the movie name, add a text layer (T) with
SpiderMan Far From Home, a font size of 24 and
the font Roboto-Regular. Name this layer movie-
name, align it to the left of movie-image with a
left margin of 32, a right margin of 32 and a top
margin of 16.
Adding the metadata
For the next row, which contains the movie
metadata, add a text layer (T) with 2019 to
denote the movie release year. Give it a size of 14
and use the font Roboto with a Regular weight.
Then, duplicate the release year layer and
change the text to 1h 42 min denoting the
movie’s duration. Select both these text layers
and create an Auto Layout (Shift-A). In the Auto
Layout Properties, select Auto Height and a
horizontal spacing of 12. Add another text layer
(T) in the layout with Cathy Yan, denoting the
director.
The Auto Layout with the three text layers should
look like this:
Name the Auto Layout movie-info and place it
below movie-name with a top margin of 16.
Adding genres
For the genres row, create a rectangle (R)
measuring 51×18 with a default fill. Now, add a
text layer (T) on top of the rectangle with the
text set to Action, a font size of 12 and the font
Roboto-Regular. Align the text to the rectangle
horizontally and vertically. With both layers
selected, change the constraints to center.
Next, with both layers selected, create an Auto
Layout (Shift-A) and name it genre. This makes
the background rectangle resize according to the
text width.
Duplicate genre and change the text to Drama.
Place the duplicated genre to the right of the
Action genre with a margin of 8. Now, select both
genre auto layouts and create another Auto
Layout (Shift-A) to create a row. Name this auto
layout genres. Duplicate one of the genre auto
layouts and change the text to Fiction. Notice
that the margin and constraints stay consistent.
Place the genres row below the movie-info row
with a top margin of 16.
Adding ratings
For the rating row, select the Star from the Shape
Tools menu.
Add a 20×20 Star with a fill color of black.
Duplicate this layer five times and, with all five
star layers selected, use Auto Layout (Shift-A) to
create a row of five stars. Select Horizontal
alignment and add a margin of 8 between each
star. Change the fill color of the fifth star to gray.
Finally, name this auto layout rating.
Here’s what it should look like:
Place this row below the genres layer with a top
margin of 16.
Group all the layers in your frame and name it
movie-list-item. Duplicate the movie-list-item
four times and, with all four groups selected, use
Auto Layout (Shift-A) and name the result
movies-list. Inside each movie-list item, change
the name of the movie accordingly.
This list can be a category of movies like
trending, top-rated, etc. In this app, you’ll
display two types of movies along with a user-
curated favorites section. You can reuse the list
across the different sections to a great extent,
but you’ll need a way to navigate.
Creating the navigation
Start by adding a 414×52 rectangle (R) with a
default fill and a black stroke to the frame. Align
it to the bottom of the frame and place it on top
of the movies list. This rectangle will serve as a
container for the navigation destinations.
On top of this rectangle, add a 36×36 ellipse (O)
with a fill of #7A7575. Align the ellipse vertically
with the rectangle and place it to the rectangle’s
left with a margin of 29.
Duplicate the ellipse and align the new ellipse
horizontally to the rectangle, placing it in the
center. Select the two ellipses and use Auto
Layout (Shift-A).
Duplicate the ellipse one more time, giving you
three ellipses representing the three
destinations. Because the first two ellipses are
using Auto Layout the third ellipse should
automatically be positioned to the right side of
the navigation container.
Group the rectangle and the ellipses and name
the group bottom-navigation.
Great job creating your first wireframe! Even
though this screen isn’t fleshed out with real
data, you can see a preliminary structure taking
form.
Looking at the wireframe you just created, you’ll
notice that certain elements will probably stay
the same across different variations, for
example:
The movie poster element
The rating row
The genres row
You’d make the overall iteration much faster by
extracting them so you can reuse them. It’s time
to take a quick detour and learn about another
powerful Figma feature.
Components
Components in Figma are UI elements that you
can reuse across multiple design files. They allow
you to create consistent designs and make
changes quickly.
A great way to visualize this is to consider the
rating row in your current wireframe. Imagine
you’ve created ten different wireframes that
show the ratings in the form of stars. Each of
these iterations has seven movie cards. If you
later decide to change the icon from a star to a
heart, you’d have to make changes in 70 places!
That’s a lot of wasted time and unnecessary
changes.
This is where components shine. They let you
create consistent elements once, then reuse
them. When you make changes, you only need to
modify them in one place and those changes will
reflect across files.
You’ll try this out by converting the movie image,
genre row, the rating row and the navigation bar
into components.
Creating your components
Before creating your components, take a moment
to organize things by breaking them up on a
different frame. Press F and create a new
Macbook frame, which you’ll find under the
Desktop category in the Frames menu. Name this
frame components.
Note: You're using a Macbook frame just
because it is a good size to work in, not
because we will be making a wireframe for a
Macbook app. You also could have just
created a custom frame and set the size to
something large enough to provide ample
working space.
Now, copy one of the movie-list-item groups to
the components frame, then right-click and
select Ungroup. You can now freely move the
individual elements that make up the list item
around the canvas.
Duplicate the movie-image group, then click on
the Create Component option from the toolbar
on top. Alternatively, you can right-click on the
group and click Create Component.
Nothing has changed visually, but if you look at
the Layers panel, the movie-image group now
has a new icon shaped like four diamonds. This
icon denotes that the group is now a component.
Repeat the same process for the genres and
rating groups, duplicate them and clean up their
placement on the canvas so it’s easy to
differentiate between individual components on
the frame.
Copy over the bottom-navigation group and
create a component for it as well.
Implementing your components
Now, in the components canvas, rebuild the
movie-list-item card by replacing the movie-
image, genre, and rating groups with the
components you just created.
To reuse a component, duplicate it by holding
Alt/Option while clicking and dragging it, or
click on the Assets option in the Layers panel to
see a list of all your components, as shown below.
Drag and drop the components you select from
the Assets panel into the canvas.
Once you’ve replaced the movie-image, genres,
and rating groups with components, regroup the
movie-list-item layers you ungrouped previously.
Name this group movie-list-item and then turn it
into a component. Here’s how the component
will look in the Layers panel.
Note: An instance of a component has a
single diamond icon, while the main
component has a four-diamond icon.
Your canvas should now have five reusable
components, including the movie-list-item,
which is made up of smaller components. Here’s
what your components frame should look like:
Now, it’s time to use the components you just
created to clean up the wireframe. In the
process, you’ll see how powerful they are.
Trying out the components
Create a new iPhone 11 Pro Max frame (F) and
name it movie-list-wireframe. Add a bottom-
navigation component to this frame by dragging
it from the Assets panel then align it to the
bottom of the frame. Set the bottom navigation
constraints to Left and Bottom.
Now, add four instances of the movie-list-item
component to the frame. Change the movies’
names, and while selecting all four movie-list-
item components, use Auto Layout (Shift-A).
Name this auto layout movie-list.
Time for some magic! On the components frame,
select the movie-image component and give it a
fill of #DAD7D7. As soon as you add a fill to the
main component, notice that all instances
immediately reflect the change.
Now, select the individual genres in the genres
component and give them a corner radius of 12.
You will notice that all genre rows now use a
rounded rectangle.
Components are a powerful feature that makes
iteration and revisions extremely fast. The next
chapter goes into components in more depth and
uses them far more extensively. If you like what
you saw here in this brief introduction, you’ll
enjoy working with components in the next
chapter.
Reviewing the current list
implementation
The list looks good, but before proceeding, it’s
important to spend some time with the
wireframe and see how it fits in the grand
scheme of things. This is also a good time to
refine your ideas and see if your strategy needs
any course correction.
You started with the idea of building a movie
tracking app that lets users curate a list of
movies they want to watch and that gives details
about the movie.
You then broke down the idea into the
overarching goals of:
Showing a list of movies.
Showing details about a movie (synopsis,
cast, etc.).
Adding the ability to bookmark/favorite a
movie.
The breakdown was a great starting point, but it
leaves many unanswered questions about the
app’s function.
Are the movies sorted by release dates or
ratings?
Does the user have an option to modify the
list using filters?
What if the user has already seen a movie?
How do we prevent showing the viewed
movie again?
Does the concept of favorites make sense in
this app, or should we pivot to calling it
bookmarks, or wishlist?
Where do the ratings come from?
Does the year and duration of a movie make
sense to show on the card? How does that
information influence the user’s decision to
bookmark a movie?
Is the information on the list enough for the
user and if so, is a detail screen even
required?
These questions are difficult to answer because,
while some are purely related to design and
usability, others require input from the
engineering teams and more detailed user
research to figure out what might or might not
work. Cross-team collaboration is vital to a
successful app.
In an actual product development lifecycle,
instead of assuming the user’s preferences and
requirements, you’d involve those users in
development via surveys and studies. Doing user
research and feedback not only validates your
assumptions but also provides valuable insights
into how they perceive what you’ve built and
whether it works for them.
It’s important to understand that wireframing
isn’t the only iterative cycle in product
development. While wireframing helps you
realize the app’s core foundation, the final form
it takes is heavily influenced by user feedback.
This cycle of iteration ▸ prototyping ▸ feedback
repeats with every new feature addition and
redesign.
Prototyping is covered in detail in Chapter 8,
"Transitions & Animations” and in Chapter 9,
“Feedback & Testing”, you learn about how to
test your designs and get feedback from
stakeholders.
Making some decisions
Since this chapter’s scope is focused on
wireframing, you’ll just go over the questions
above and think about the solutions so you can
iterate over the design and continue making
progress.
Are the movies sorted by release dates or
rating?
By default, the list is sorted by release date. This
will make sure new releases show up at the top of
the list.
Does the user have an option to modify the
list using filters?
The initial ideation phase didn’t include this
feature, but it makes a lot of sense to allow users
to filter the list based on their preferences.
What if the user has already seen a movie?
How do we prevent showing the viewed
movie again?
The user can curate a list of movies they want to
watch. This curated list will be a separate section
of the app. A bookmarked movie can be marked
as seen, which will prevent it from appearing on
the main list.
Does the concept of favorites make sense in
this app or should we pivot to calling it
bookmarks or wishlist?
While the behavior is the same, calling the
feature Add to watchlist makes more sense. It
also provides a clear description of what it does,
compared to the other options.
Where do the ratings come from?
The ratings come from an external source, like
IMDB or Rotten Tomatoes. This is one of the
decisions that the engineering and product
teams have more influence over.
Does the year and duration of a movie make
sense to show on the card? How does that
information influence the user’s decision to
bookmark a movie?
The release year influences the sorting order,
and the duration might be important in certain
circumstances. If you have a two-hour flight
coming up, you’d plan to watch a movie that fits
your flight duration. This is an assumption at this
point, but user feedback would help validate and
refine the idea.
Is the information on the list enough for the
user and if so, is a detail screen even
required?
The list shows information at a glance, but a
user’s decision to watch a movie also depends on
many other factors. Some users like seeing the
trailer before deciding, while others are picky
about the actors. Some even like to spoil it for
themselves by reading the plot.
These richer pieces of information are tough to
squeeze inside a list, so a detail screen makes
sense. The detail screen also gives you space to
promote sponsored content tailored to the user’s
preferences, if the need arises.
Now that you have some actionable answers,
revisit the movie list screen. As of now, the only
piece missing is an option to filter the list.
Filtering the list
Your next step is to add a button to surface the
filter options.
In movie-list-wireframe, add an ellipse (O)
measuring 55×55 with a default drop shadow and
fill.
Place this button on the bottom-right of the
frame, above the bottom-navigation layer. Give it
a margin of 32 from the right and bottom and
name the layer filter-button.
Constrain the button to the Right and Bottom so
it adapts to frame size changes.
Instead of taking the user to a different screen,
it’s more convenient to display the filter as a
dismissable option in the list screen. The user
can filter the list based on genre, release year,
duration and director.
Duplicate the movie-list-wireframe frame and
name it movie-list-wireframe-filter. Delete the
filter-button from this frame.
Lock the movies-list and bottom-navigation
layers since you aren’t going to make any
changes to them.
Now, add a rectangle (R) to this frame measuring
414×896 above both layers. Reduce the opacity of
this layer to 70%, name it filter-background and
lock the layer.
Here’s how your layer arrangement should look
at this point:
Add a rectangle measuring 414×448 and give it a
white fill. Constrain this layer to the Center and
Bottom and name it filter-sheet. This sheet will
house the options to filter the list.
Add a text layer (T) on the filter-sheet layer with
the text Genre. Use Roboto-Regular as the font
with size 18. Place it at a margin of 16 from the
top and left and name the layer filter-header.
Add a genres component and place it below the
filter-header at a margin of 16 from the top and
left.
Duplicate the modified genres component three
times to get a total of 12 genres, as shown below.
Repeat the process to create the release year,
duration and director filter categories. Here’s
how it should look when you’re done.
You did a great job building a good chunk of the
filter UI on your own. If you’re unsure about the
margins and positioning of the different filter
categories and their options, you can refer to the
final project file, chapter-3-final.fig, and see how
they look in the finished project.
The list screen now offers the ability to filter the
movie per the user’s preferences.
Ideally, when wireframing a feature or a screen,
you’d build at least three to four alternatives and
compare them against each other. This helps you
uncover areas that need further polish.
But for now, you’ll move on to working on the
movie details UI.
Designing the movie detail screen
The detail screen involves a few more bits than
the list screen does. This screen will show:
All the information from the movie-list-item
The movie synopsis
Cast details
Movie ratings
An “Add to watchlist” option
You’ll reuse most of the information from the
movie-list-item on this screen. Add an iPhone 11
Pro Max frame (F) to the canvas. Name the frame
movie-details-wireframe
Add a movie-image component at a margin of 40
from the top, and change the dimension to
174×262. Align it horizontally to the frame.
Copy over the movie-name and movie info text
layers from one of the previous frames and
change the movie-name text alignment to Text-
Align Center.
Place the movie-name below the movie-image
with a margin of 40 from the top. Be sure to keep
everything horizontally centered in the frame.
Place the movie-info layer below the movie
name, horizontally centered, at a margin of 32
from the top. Now, add the genres and rating
components to the frame. Place the genres below
movie-info and the rating below the genres. Give
both a margin of 24. You’ll notice they are quite
small for the screen.
Select the genres and press K to enter Scale
mode. Alternatively, you can select Scale from
the toolbar at the top of the screen.
Drag the corner handles of the genre row and
increase the dimensions to 218×23
approximately.
Note: Scale may increase your dimensions
in decimal values, so you might not get
precisely 218×23. Don’t worry about it, as
long as you are close enough to this
dimension. Remember, this is a mock-up,
and things don’t need to feel perfect at this
stage.
Now, select the rating row and scale the
dimension to 237×36. Make sure all layers added
to the frame so far are horizontally aligned.
Next, add a text layer (T) for the synopsis. Don’t
worry about displaying an actual synopsis here.
You can now use placeholder text to get a feel of
how things will look with real data in place. A
great website to pick up some placeholder text is
http://lipsum.com.
Paste nine lines of text onto the text layer. Name
this layer movie-synopsis.
Center the text and horizontally align the layer
to the frame. Use Roboto-Regular as the font,
with a font size of 12. Position the synopsis at a
margin of 32 from the rating row.
For the cast section, add a text layer (T) for the
section header with Cast. Name this layer
section-header.
Use Roboto-Regular font with a font size of 24
and place it at a margin of 64 below the synopsis
layer and 16 from the left.
At this point, you might have run out of room to
add more layers to the frame. Select the frame
name from the Layers panel and either drag its
handles vertically to increase the height or
manually increase the frame’s height to 1587.
This should give you enough room to add the
remaining sections to the screen.
Now, add a movie-image component and change
the dimension to be 63×63. Place it below the
section header layer at a margin of 24 from the
top and 16 from the left. Name this layer cast-
image.
Add a text layer (T) for the cast name below the
cast-image with a font size of 16 and align it
horizontally with the cast-image. Use John Doe
as the text. Name this layer cast-name. Group
cast-image and cast-name and call the group
cast-member. Duplicate cast-member five times
and, with all five selected, use Auto Layout
(Shift-A) with a horizontal spacing of 24. Now,
change the name of each cast-member and name
this auto layout cast-list.
Moving along, duplicate the section-header you
created earlier. Change the text to Ratings and
place it below cast-list with a margin of 64.
To create the rating list, duplicate the cast-name
and cast-image you created earlier. Place the
cast-image below the section-header with a
margin of 24 from the top and 16 from the left.
Vertically align the cast-name to the image and
place it at a margin of 24 from the left.
Add a rating component and place it below cast-
name at a margin of 8 from the top and 24 from
the left. Group the cast-name, cast-image and
rating and name the group review-list-item.
Next, duplicate review-list-item four times and,
with all four selected, use Auto Layout (Shift-A).
Select Vertical from the auto layout properties
and set Spacing Between Items to 32.
Implementing the “Add to
Watchlist” feature
The last missing piece on this screen is an option
to add a movie to a watch list. To do this, add a
382×58 rectangle (R) to the screen. Give it a
black stroke and a fill of #C4C4C4.
Now, add the text Add to Watchlist on a text
layer (T) with a font of Roboto-Medium and a
font size of 24. Center the text on the rectangle
and group the elements. Name the group
favorite-button and place it at the bottom of the
screen with a margin of 16 from the sides and
bottom.
The cast and rating sections are distinguishable
at this point, but there’s no grouping of the
actual movie information. You’ll add a backdrop
to fix this.
Grouping the movie information
Start by adding a rectangle (R) measuring
379×590 with a corner radius of 8, a black stroke
and a fill of #F5F1F1. Call this rectangle
backdrop and make it the last layer on the Layers
panel for this frame. Next, horizontally align it to
the frame and position it at a margin of 171 from
the top.
Marking movies as seen
The last thing to do on this screen is to add the
ability to mark a movie in the user’s watchlist, as
seen. This only requires you to add an extra state
to the button.
Duplicate the movie-details-wireframe and
change the button text to Mark as Seen. Once
done, you should have two states of the detail
screen, as shown below.
The detail screen looks much better now. The
sections of the screen are clearly separated,
which lets users quickly scan the information,
and it offers controls to curate the user’s watch
list.
Great job with your first wireframe! You just
completed one of the essential steps towards
building a great app. By going through the
wireframing process, you built out the core of
what the app will feel like. Going forward, you
have a strong foundation and a clear idea of
which use cases you’re catering to.
Ideally, wireframing is the stage where
developers and designers come together to talk
out any engineering constraints that might come
up during the final implementation. This gives
the designers a clear picture of the boundaries
and limitations they should account for.
Try getting involved in the wireframing process
next time you work with your designers. They’ll
appreciate the early feedback and input, as it’s
much easier to iterate and incorporate changes
at this stage, when the designs are still
rudimentary.
In the next chapter, you’ll build on top of these
wireframes and add real data to bring the
screens to life.
Key points
In this chapter, you learned:
The importance of wireframing in the design
process.
How to use basic shapes and minimal styling
to build a scaffold of the app.
Why wireframes need to be low fidelity.
How to leverage reusability in your designs
by using components.
How to iterate over your wireframes and
answer key functional questions.
Chapter 5: Reusable
Elements & Data
In the last chapter, you created wireframes for
the app and established a well-thought-out
scaffold. These are essential steps in designing a
product. Having set a general direction for your
team, you’ll now start working on the finer
details by fleshing the screens out with real data.
Among the more useful features in Figma are
components, which you briefly touched upon in
the last chapter. Even without going into detail,
having an overview of components helped speed
up the iteration.
In this chapter, you’ll take a closer look at
components and how you can leverage them to
create flexible designs. More importantly, you’ll
learn the value of reusability when building
designs — this chapter focuses specifically on
building reusable components. You’ll also learn
how to better organize your components and
their variations.
Visualizing when to use
components
A common question when you start using
components is: Which pieces of my screen would
benefit from being a reusable component?
Frankly, it’s not a straightforward question to
answer.
A lot of this boils down to the idea behind the
product and its complexity. The more
information your app surfaces, the more
elements there are on the screen. But that’s not
all. If there are variations in how you surface
similar information, you’ll end up with more
unique elements on your screen.
You might have noticed this with the app
teardown exercises. Airbnb used just two
components to build the entire screen, whereas
Pocketcasts used multiple design variations to
surface the same information. In both these
apps, their underlying information was similar,
but how they surfaced it varied.
So how do you decide on the component
breakdown? A neat trick is to visualize the
silhouette of the app. You did this in the
teardown exercise. After tracing each screen, you
hid the screenshot to view the app structure.
Hiding the specific information helped you
analyze how many components the screen uses.
Once you’ve built a wireframe of a screen, it’s
easier to notice these details. In the future, any
time you use an element in more than one place
with slight or no variations, you can extract it out
as a component.
Getting started
From the project files for this chapter, load
chapter-5-starter.fig into Figma. You can drag
the file into the Figma window to import it.
Open the imported project. The file contains the
movie list and movie details wireframes along
with the wireframe components.
Building the movie list item
Add a new Macbook frame (F) to the file. Name
this frame Posters.
Add a movie-list-item component to this frame
by copying the movie-list-item component from
the wireframe-components frame. Select the
instance, right-click and select Detach instance
(Option-Command-B/Alt-Control-B).
Once you detach an instance from the main
component, it stops behaving like an instance
that can receive style updates from the main
component and starts acting like a regular group.
You’ll also notice the icon is no longer a diamond
and the outline goes from purple to blue.
Expand the movie-list-item group, select the
movie-image, genre and rating instances and
detach them from their instance (Option-
Command-B/Alt-Control-B)
Here’s how your Layers panel should look at this
point:
Expand the movie-image layer and delete the
diagonal lines. Select the rectangle and remove
the black stroke.
Next, select the movie-image frame and give it
an Image fill.
The downloaded files come with a movie-images
folder containing posters. Navigate to the folder
and select the birds-of-prey poster.
To finish, give the movie-image frame a corner
radius of 4.
Customizing the text and fill color
Next, you’ll change the movie name to “Birds of
Prey” and the weight to bold.
Now, select the individual genre items and give
them a corner radius of 12.
Change the fill of the genre items to #DBDCB3.
Next, from the rating group, select the first four
stars and change their fill to #B3C63F.
Great job! The list item is coming together nicely.
For your final touch, select the container layer
and remove its stroke. Give it a white fill and a
drop shadow with X and Y values of 0, a Blur of
2, Spread of 1, and 25% opacity.
Your movie list item should look like this:
The list item you just created looks excellent, but
it lacks the wow factor. One of the things that are
compelling about movies is how bold and
expressive the posters are. These posters
subconsciously create an association with the
film.
Think about “Toy Story” and tell me you don’t
picture Woody and the gang. Think about “Up”,
and the first thing that comes to mind is Mr.
Fredricksen and his house, floating away.
Imagery is critical in building an association with
the brand.
Your goal in the next iteration is to amplify the
movie posters.
Iterating on the movie list item
Add a rectangle (R) to the Posters frame
measuring 414x263. Click the Fill option on the
Properties panel and select Image.
From the movie-images folder, pick the birds-of-
prey poster. Now, click the Fill options, select
Crop to adjust the part of the poster that will be
visible in the rectangle and name this layer
movie-image.
Add another rectangle (R) measuring 414x263
on top of the movie image and align it
horizontally and vertically. Give this layer a
Linear Gradient fill.
Use a black color with an opacity of 8% for the
left handle and a color of #111111 and an opacity
of 100% for the right handle. Call this layer
backdrop-gradient. This layer will make the text
more readable.
Group the two layers (Command-G/Control-G)
and call it Poster/Birds of Prey. Duplicate the
group six times. You’ll need to resize your frame
to house all six instances.
Change the movie image for each instance, and
follow the Poster/Movie Name naming
convention. You’ll come back to this naming
convention shortly.
Make each group a component by selecting the
group, right-clicking, and selecting the Create
Component option (Option-Command-
K/Control-Alt-K).
Before moving forward, it’s time to do some
housekeeping and tidy up your workspace.
Organizing with pages
If you keep creating multiple component frames
on the same canvas, your workspace will
eventually get cluttered and difficult to navigate.
It’s good practice to continuously tidy up your
workspace and organize it. As the Boy Scouts say,
“Leave the campground cleaner than you found
it.”
To do so, you’ll use a handy feature in Figma
called pages. Pages allow you to add a layer of
hierarchy in your design files by separating
things into their own space.
Setting up your pages
On the Layers panel, click + to add a new page
and call it Components.
If you can’t find the + button, collapse the Pages
section by clicking the drop-down option, as
shown below:
Go back to Page 1 and rename it Cinematic App.
Select the wireframe-components and the
Posters frame on this canvas, cut them
(Command-X/Control-X) and paste them into
the Components page (Command-V/Control-V).
Add another page and call it Wireframes. Cut the
movie-list-wireframe and movie-details-
wireframe from Cinematic App and paste them
to Wireframes.
You now have three different pages to organize
your designs and their related components and
iterations. Keeping components, wireframes and
the actual designs in separate pages makes your
working design canvas tidier.
Next, add another Macbook frame (F) to your
Components page and name it Movie Card. Add
the Birds of Prey poster component to this frame.
Now, add a text layer (T) to this frame with the
text Birds of Prey. Use the font Roboto-Bold, font
size of 24, and text color to white. Place it at a
margin of 79 from the top and 16 from the left.
Name this layer title.
Copy the movie-info layer from the movie-
details-wireframe in the Wireframe page and
paste it below the title layer. Change the font
color of the director, duration and year text to
white. Place the movie-info layer at a margin of
16 from the top and left, aligning its left edge to
the title.
Reusing and restyling components
You’ll now create the genre component. Instead
of making it from scratch, you’ll reuse the
wireframe’s genres component and style it.
Create a new frame (F) measuring 250x50. Name
this frame Genre and, in the Fill section, change
the fill to gray.
Now, click the Assets section in the Layers panel
to view all the available components.
In the newly created Genre frame, add the
genres component. Select the added instance,
right-click and chose the Detach Instance option
(Option-Command-B/Alt-Control-B).
Expand the genres’ Auto Layout frame and select
the three genre groups while holding Shift to
select them all at once.
Apply a corner radius of 10, remove the fill and
add a white stroke of thickness 2.
Now, select the three text layers within each
genre, give them a white fill and a letter spacing
of 1, then change the weight to bold. From the
Text properties, click the Type Details option
represented by three dots. Under the Letter Case
option, select Upper Case.
Select the genres’ Auto Layout frame, right-click
and make it a component by selecting the Create
Component option (Option-Command-
K/Control-Alt-K).
Add the newly created genres component to the
movie card and place it at a margin of 32 from
the bottom and 16 from the left of movie-info.
Creating the rating component
Moving along, it’s time to build the rating
component. Add a new frame (F) to the canvas
measuring 250x50, give it a black fill and name it
Rating.
The black fill makes the rating text visible and
helps differentiate between different
components in the Assets section. Adding
separate frames in the canvas for building each
component, as you’ve done so far, also helps
consolidate the elements and their related
changes into their own section, keeping the
Layers panel clean.
Add the rating component you created for the
wireframe to this frame and detach it from the
instance (Option-Command-B/Alt-Control-B).
Change the fill color of the first four stars to
#89E045 and rename the layer to stars.
Add a text layer (T) to the frame with the text 4.2
and place it at a margin of 16 from the left. Use
the font Roboto-Black, with a font size of 32 and
a letter spacing of 1. Align it vertically with the
stars, separate them by 18 points horizontally
and group the two, calling it rating. Finally, make
this group a component (Option-Command-
K/Alt-Control-K).
Add the newly created rating component to the
movie card and place it below the genres layer at
a margin of 16 from the bottom of genres and 16
from the left. Group the poster, title, movie info,
genres and rating and call this group movie card.
Now, make the movie card group a component
(Option-Command-K/Alt-Control-K). You can
also select the group, right-click and click the
Create Component option.
Excellent job with your first fully-fleshed out
component! Compared to the original version,
it’s much more appealing and vibrant. Adding
the full-width images gives the design more
personality.
Placing the new component in a screen
It’s time to now use this component in a screen.
Go to the Cinematic App page, add a new iPhone
11 Pro Max frame (F) to this page and increase
its height to 1578. Call the frame movie-list.
Add a movie card component to the movie-list
frame. To fill up the list, duplicate the movie card
component six times, then with all 6 cards
selected, add a vertical Auto Layout (Shift-A).
Make sure the vertical Auto Layout has no
padding or spacing, as shown below.
Now, it’s time for some fun! All items in the list
represent one movie, “Birds of Prey”. You want
to showcase multiple movies instead of the same
one, over and over. To do so, you’ll use the
instance swapping ability of components.
Expand the second instance of the movie card
component on the movie list frame, and select
the Poster/Birds of Prey component.
An instance menu will show up on the Properties
panel on the right.
Clicking the Go to Main Component option,
which has four diamonds as its icon, will take you
to the canvas that holds this component.
To go back to the instance you were previously
working on, just click the handy Return to
instance option that appears at the bottom of
your screen.
With Poster/Birds of Prey selected, click the
name of the instance in the Instance section and
the Swap Instance menu will open with a drop-
down of all your components. You can view your
components as a list or as a grid. You can even
search for components by name.
From the Swap Instance menu, under the Poster
category, select Avengers Endgame to swap the
poster. Repeat the process of replacing the movie
posters for the remaining cards and change the
movie names to reflect the posters you use.
Testing the power of components
You may notice an abnormality in all six
instances after you rename the movie’s title: The
title text wraps over to the next line, overlapping
with the movie info layer.
There’s a simple fix. Select one of the instances
and click the Go to Main Component option.
Select the title layer and increase the width to
350. Click Return to Instance option and your list
should now look correct.
This is the power of components. Suppose this
were a list of duplicated groups. To fix the title’s
width, you’d have to make the change on each
card individually. Changing the poster would
also be a multi-step process that you’d have to
perform six times. By breaking your designs into
components, you can make a one-time
investment in configuration and reap the
benefits across your designs.
Your list looks great. It just needs bottom
navigation and a status bar on top. But instead of
making them from scratch, you’ll see how to use
third-party UI kits.
Exploring UI kits & plugins
When designing a product, it’s easy to get
carried away and want to create everything from
scratch. While that’s always an option, it’s
certainly not the most efficient one.
When developing apps, it’s helpful to focus on
the app’s core business logic and use pre-built
APIs and libraries for lower-level things like
networking, I/O, etc. You could write the entire
networking stack yourself, sure. But that has
trade-offs, like the impact on the release
timeline and maintainability over time. The more
abstractions you eliminate and own yourself, the
harder it gets to maintain them.
The same applies to design. There are only a few
circumstances where it makes sense to build
simpler things, like icons, or platform-specific
components, like dialogs and status bars. For the
vast majority of components, you can and should
use a UI kit or plugin. Doing so takes
significantly less effort and lets you focus on
more essential things like the app’s core
experience.
Figma has a lot of handy UI kits and plugins to
make your life easier. You can find them at
https://figma.com/resources.
Using a design kit
For the iOS status bar, you’ll use a design kit.
Open
https://www.figma.com/resources/assets/faceboo
k-ios11-ui-kit/ in a different tab and click Open
the UI Kit in Figma. The Figma file will open in a
new editor.
Note: Whenever you open a UI kit in Figma
from the Figma resources, the file is copied
over to your Figma account. You’ll find it in
your Drafts section.
Now, look for the Status Bar (iPhone X) frame in
the Layers panel on the left, copy the status
bars/iPhone X/status bar/dark component and
paste it at the top of the movie-list.
Increase the width to 414 and constrain it to the
top and horizontal center. Select the Fix position
when scrolling option to make sure it stays on
top when you interact with this screen as a
prototype.
Using an icon set
For the navigation bar, you’ll use an icon set.
Open
https://www.figma.com/resources/assets/materia
l-icons-fill/ and click the Open Icon Set in Figma
button at the bottom.
This file contains all of the icons that are part of
the Material Design Icons suite. At the moment,
you only need four icons so instead of copying
over the entire set, just pick the ones you’ll use.
Create a 150×50 frame (F) and call it Icons, then:
From the Icons — Action frame, copy the
bookmarks_24px icon.
From the Icons — Image frame, copy the
remove_red_eye_24px icon.
From the Icons — Maps frame, copy the
local_activity_24px icon.
From the Icons — Social, copy the
whatshot_24px icon.
Paste the icons mentioned above into your Icons
frame.
Copy the Icons frame and paste it into your
components page. Select each icon and make it a
component (Option-Command-K/Control-Alt-
K).
Creating the navigation items
Add a new frame (F) measuring 450×90 and
name it Bottom Navigation. Here, you’ll place
navigation to bring the user to three different
types of movies to browse.
Start by adding a rectangle (R) to this frame
measuring 414×56. Name this layer background.
Give it a fill of white and a drop shadow with a
blur of 2. Set all other values to zero.
Now, you’ll set up the navigation to trending
movies. Add the whatshot_24px icon. Now, add a
text layer (T) with the text Trending. Give it a
font size of 12 and a weight of Roboto-Regular.
Place the text below the icon at a margin of 2
from the top and align their horizontal centers.
Select the icon and the text, give each a fill of
#0045D0, group them (Command-G/Control-G)
and call the group icon. Add a new rectangle (R)
measuring 120×56 and name it item-bounds.
Align it horizontally and vertically with the icon,
group it again (Command-G/Control-G) and
name it trending. Place the trending group at a
margin of 25 from the left.
Next up are the top-rated movies. Duplicate the
trending group and call it top-rated. Change the
icon to local_activity_24px by swapping the icon
component as you did in the previous section,
then change the text to Top Rated. Change the
icon and the text color to #6D6E70 and make
sure to fix the alignment after changing the text.
Finally, you’ll let the user view their watchlist.
Repeat this process one more time, name the
group watchlist, swap the icon to
bookmarks_24px, change the text to Watchlist
and, finally, change the icon and text color to
#6D6E70.
Implementing the navigation bar
Now that you have the navigation bar looking the
way you want, it’s time to use it in the movie list.
Group the trending, top-rated and watchlist
layers (Command-G/Control-G) and call the
group navigation-items. Select the background
layer and the navigation-items layer, right-click
and select Frame selection (Option-Command-
G/Alt-Control-G), and name it bottom-nav.
For your final step, select the three item-bounds
layers, remove their fill and make the bottom-nav
frame a component.
Return to your movie-list frame and add the
bottom navigation component. Constrain it to
the bottom and horizontal center and select the
Fix position when scrolling option.
Awesome job with the movie list! It looks really
good and the app is starting to come alive. Next,
you’ll work on giving the movie details screen a
similarly impressive look.
Designing the movie details
screen
Moving along, it’s time to build the movie details
screen. Add a new iPhone 11 Pro Max frame (F)
to the screen and name it movie-details. Increase
the frame height to 1680.
Add the Birds of Prey movie poster to this layer,
then right-click and select Detach instance
(Option-Command-B/Control-B).
Increase the height of both the backdrop-
gradient and the movie-image layers to 1107.
This distorts the image, so fix the problem by
changing the image fill option from Crop to Fill.
Drag to change the picture’s dimensions to
486×1207. Group the gradient and the picture
(Command-G/Control-G), name it backdrop and
lock the layer to prevent accidental changes.
Adding details to the background
Add a rectangle (R) measuring 414×1314 and
place it at a margin of 366 from the top. Give it a
white fill and call it background-card.
Double-click on the background-card layer to
enter Vector Edit mode. You’ll see dashed lines
on your layer at this point.
Select the top-right and the top-left corners of
the rectangle and give them a corner radius of
16.
Press the Escape key or the Done button to exit
Vector Edit mode. Give this layer a default drop
shadow and lock it.
Adding the movie picture
Add a 157×221 rectangle (R) with a corner radius
of 8. Place it at a margin of 16 from the left and
323 from the top.
For the fill, select the Birds of Prey image from
the movie-images directory and give it a default
drop shadow. Add a white stroke of width 5 to
this layer and name it movie-details-image.
Adding the details
Copy the title and movie info text layers from the
movie-card component in the Components page,
then place them to the right of the movie-
details-image with a margin of 28 from the
movie-details-image.
Change the title fill to black and give it a top
margin of 36. Change the movie-info fill to
#827F7F and place it below the title with a
margin of 16 at the top.
Add the genre component to the frame from the
Assets section in the Layers panel and place it
below the movie-info layer. Give it a margin of 16
on the top and 28 on the left from the movie-
details-image. Select the individual genre and
change the stroke from white to #B9C95A.
Similarly, select the individual genre texts and
change their fill from white to #B9C95A.
Group the title, movie-info and genre layers
(Command-G/Control-G) and name the group
info. Here's what it should look like
At this point, you may wonder why the title and
movie-info layers are not individual components
or why you modified the genre component’s
colors instead of creating a new component.
Those are great questions, let's address them up
before proceeding further.
When to use components
You could have made the movie-info and title
layers into components, but that wouldn’t have
any added benefit. Even if they were
components, you’d have to:
Change their fill color.
Change their positioning.
For the genre component, you could have created
a separate component with the new fill color, but
doing so doesn’t add value because you’ll use
that variant in only one place.
Components shine when they’re reused. If you’re
only going to use a variation once or twice,
you’re better off using an override on an existing
component by modifying its attributes.
Setting up the overview
Add a text layer (T) with the text Overview to the
movie-details frame. Use Roboto-Bold as the font
with a font size of 18. Place it below movie-
details-image at a margin of 40 from the top and
16 from the left. Name this layer overview-
header.
Add another text layer (T) for the movie
overview. Place this layer below the overview-
header at a margin of 16 from the top and left
side. Copy the text from movie-overview.txt into
this layer — you’ll find it in the project materials
for this chapter. Use Roboto-Regular as the font
with size 12. Finally, name this layer synopsis.
Using masks
The synopsis text is way too long to show in its
entirety on this screen. It would save screen
space and look cleaner if you show the first
paragraph and allow the user to expand to read
more.
Another nifty Figma feature, masks, will help you
do this.
Think of masks as a stencil placed on top of an
existing layer. Only the part of the background
that’s within the stencil’s cutout region will be
visible. You can achieve a bunch of nifty effects
using masks that would otherwise be pretty
difficult.
Add a rectangle (R) measuring 380×174, place it
behind the text and name it background. The
placement is essential to get this right.
Select both the synopsis and background layers
and click the Mask button on the toolbar
(Control-Command-M/Control-Alt-M).
Alternatively, you can right-click while the layers
are selected and select the Use as Mask option.
This will clip the text and the rectangle’s icon on
the Layers panel will change to a half-moon.
It might not seem that impressive because you
could have just copied a single paragraph for the
synopsis — but that would make the text static.
Now that the mask height influences the text
length, you can show as much or as little of the
text you want by selecting the background layer
and modifying its height.
Fading out the visible text
Now, you’ll sprinkle some visual flair over this
layer by making the text paler as it approaches
the cut-off point.
To do this, add another rectangle (R) measuring
380×174 inside the mask group, right above the
synopsis. Name it gradient and give this layer a
linear gradient. Instead of dragging the handle
across the layer, drag it to the center.
Give the left handle a white fill at 0% opacity and
the right handle a white fill at 100% opacity.
Making the cut-off text readable
For the final piece of the overview section, add a
text field (T) and enter Read More. Use the font
Roboto-Bold with a font size of 12 and a letter
spacing of 3px. Under the Type Details option,
use Upper Case for the letter casing.
Move this layer inside the mask group and place
it above the gradient. Align it to the bottom of
the gradient layer and name the mask group
overview-text.
Things are looking great! You’re finished with the
overview section and ready to move on to
displaying the cast of the movie.
Adding the cast section
Next up, the cast section. Copy the overview-
header and change the text to Cast. Place it
below the overview-text group at a margin of 32
from the bottom of the masked layer and 16 from
the left. Name it cast-header.
For the cast pictures, you’ll use a third-party
plugin from Unsplash.
Installing and using a third-party plugin
Plugins are critical to a designer’s workflow. They
help you automate your mundane and repetitive
workflows, saving time and letting you
concentrate on things that are more fun.
You'll be using the Unsplash plugin to populate
the cast section with placeholder actor photos.
Head to https://www.figma.com/@unsplash and
install the Unsplash plugin.
Once you get an installation confirmation, head
back into the editor and, below the cast header,
add an ellipse (O) measuring 70×70. Place it at a
margin of 24 from the cast-header and 16 from
the left.
Duplicate this circle on the right at a margin of
16. Select the two circles and create an Auto
Layout frame.
Create a total of six instances of the circle in the
frame by duplicating them.
Now comes the fun part. Select all the circles in
the Auto Layout frame, right-click and go to
Plugins ▸ Unsplash.
From the pop-up, select Portrait. The circles will
populate with actual images. Cool!
Adding the user ratings
For the user rating section header, repeat the
same process as you used for the cast-header and
change the text to Ratings — 4. Place it below the
cast-images at a margin of 40 from the top and
16 from the left. Finally, name it ratings-header.
Add a rating component below the cast-images
section, to the right of the ratings-header.
Change the dimensions to 208×38 and change
the text color to #727272. Place it at a margin of
32 from the top and 16 from the right.
Next, you’ll add details about the people who left
the ratings. Add a 35×35 ellipse (O) and place it
below the ratings-header at a margin of 24 from
the top and 16 from the left. Name it user-image.
Add a text layer (T) to the canvas. Use a name
and date of your choice as the text. Use the font
Roboto-Regular with a size of 12 and a fill of
#727272. Place it below the ratings-header at a
margin of 24 from the top and 16 from the left of
the user-image. Name it username.
Add a rating component to the frame. Detach it
from its instance (Option-Command-B/Control-
B), then delete the text layer with the 4.2 rating
value.
Select the rating component on the canvas,
right-click and select Ungroup.
Now, select the stars Auto Layout frame, right-
click and select Ungroup.
Select the five individual stars in the layer panel,
group it back and name the group stars.
Change the dimensions of the stars group to
86×12. Place them below the username layer at a
margin of 8 from the top and 16 from the user-
image.
Change the fill color of the stars to #F1C644
Group (Command-G/Control-G) the user-image,
username and stars and call the group ratings-
row.
Duplicate it vertically at a spacing of 16 using
Auto Layout and then select all the user-image
layers and use the Unsplash plugin to populate
the images. Name the Auto Layout frame rating-
list.
Adding movie recommendations
to the details
For your next task, you’ll deviate a little from the
mock-up. Wouldn’t it be nice to get
recommendations for other movies within the
movie’s details screen? It would go a long way
toward increasing user engagement within the
app.
Go back to the Components page and, on the
Movie Card frame, duplicate the movie card
component and detach it from its instance
(Option-Command-B/Control-B). Give it a corner
radius of 8 and select Clip content.
Select the frame, make it a component (Option-
Command-K/Control-Alt-K), and rename it
movie card/rounded. To make it more convenient
to swap instances, rename the non-rounded
variant to movie card/sharp. Resize the Movie
Card frame to trim out any unused white space.
Go back to the Cinematic App page and add a
section header with the text You may also like.
Place it at a margin of 32 from the top and 16
from the left. Name it recommendations-header.
Below the recommendations-header, add a movie
card/rounded component. Use the scale option
to resize it to approximately 324×205. Place it at
a margin of 16 from the top and left.
Duplicate it three times horizontally with a
spacing of 16, switch the movie posters as you
like and change the movie name. Name the row
recommendations.
That’s a wrap! You’ve learned about components
and how you can leverage them to create flexible
designs. More importantly, you learned the value
of reusability when building designs!
Why not test your knowledge with the following
challenge?
Key points
Organize components and designs using
pages.
Use compose components to build larger
design elements and, when it makes sense,
to create a component.
Establishing naming conventions for
components helps with instance swapping
and logical grouping.
The Figma community offers third-party
icon sets and plugins to make your job
easier.
Challenge
All you need to finalize this screen is the Add to
Watchlist button, a Back button and the status
bar. Instead of giving you instructions on
creating these elements, I’ll leave that out as a
challenge for you. Here’s what they should look
like.
If you get stuck, open chapter-5-final.fig and
take a look at how it’s done there.
Fantastic job building out the movie list and
details screens! Your designs are already looking
pretty good. While you’re still a few steps away
from bringing the app to its final form, you
should be proud of how far you’ve come.
The next chapter will focus on even more
nuanced details, like using typography and
colors to establish a brand identity and
consistency for the app. Till then!
Chapter 6: Typography
In the previous chapter, you created reusable
components that you could use to build your
screens. By the end of the chapter, you had a
fully functional main screen with a movie list
and a details screen with controls to add a movie
to a watchlist.
Now, it’s time to focus on the more subtle aspects
of design: typography and color.
Typography and color are both essential
elements of design. It might seem like they’re
only cosmetic, but they have a broad impact.
They not only help you establish brand cohesion
and identity, but they also determine how
inclusive and accessible your product is.
Though closely related, they deserve individual
chapters to drive home the idea and get the
basics right.
This chapter will focus on the details of
typography and how to build a typographic scale.
Chapter 7, “Colors” will go over color theory and
how to build a color palette.
These two chapters are my favorite in the book
because I get to nerd out about minor details and
show you how subtle changes can have a massive
influence on the perception and feel of a
product. It’s one of those things that are rather
tricky to get right, but very easy to get wrong.
By the end of this chapter, you’ll realize what
makes your style choices “good” and how you can
leverage typography to add an element of
personality to your designs.
While both iOS and Android have established
and mature design guidelines for building apps,
you won’t use them for the typographic scale
here. Deriving your design from the guidelines at
this stage would be restrictive and wouldn’t give
you a feel for the process from start to finish.
By building your typographic scale from scratch,
you’ll get first-hand experience of why things are
done the way they are, helping you understand
the reasoning behind certain decisions.
Understanding typography
In simple words, typography is the art of
arranging letters in a legible, clear way that
conveys intent to the reader. Typography affects
visual appeal and invokes specific emotions in
the reader, leaving a lasting perception about the
app.
Emotion? Perception? If you wonder how these
are relevant to typography, here’s an example:
You need to get your wisdom teeth pulled, so you
look for dentists in your area on Yelp. You come
across this sign:
This looks familiar and calm, inspiring
confidence. If you choose this dentist, you’ll
probably have a normal procedure and be out in
no time.
Now, imagine the sign looks like this, instead:
You’d probably run in the opposite direction
from this clinic!
Typography is versatile enough to convey:
When done right, a good typographic scale helps
establish hierarchy and uniformity across
products. It helps your users immediately
recognize your brand.
Before you dive into creating your typographic
scale for the app, take a moment to learn some
important terminology to help you better
understand the explanations that follow.
Mastering typographical jargon
Fonts and typefaces are often confused in
typography.
Typefaces are a collection of different type styles
that vary in character size and weight. A font is a
part of a typeface — that is, it represents one of
the variants. In other words, a typeface is a
collection of many fonts.
Here’s an example:
Typefaces are roughly classified into four
categories:
Serif
Sans-serif (without serif)
Script
Decorative
Serif and sans-serif typefaces the most widely
used so it’s essential to recognize the difference
between them. Serif typefaces have a
distinguished, extended stem — or feet — in
their letters. Their sans-serif counterparts do
not.
Some popular serif typefaces are: Times New
Roman, Garamond, Baskerville and Georgia.
Popular sans-serif typefaces include: Helvetica,
Arial, Roboto and Open Sans.
Weight
A typeface usually comes in three to four
weights. Weight is the relative thickness of a
font’s stroke. You’ve been using weights all this
time, and now you know what they mean.
For example, the Roboto font comes in six
weights: thin, light, regular, medium, bold and
black.
Letter Spacing
Letter spacing, also referred to as tracking, is the
space between individual letters.
Upper-case letters have loose tracking, while
lower-case letters have tighter tracking.
Design tools like Figma let you modify the letter
spacing. This is useful in some instances, such as
when you want to create alternate variants in a
typographic scale.
Baseline
The baseline is an invisible line that the text sits
on, as shown below. Think of it as the lines in a
notebook that help you write evenly.
Baselines are important to determine an
essential aspect of text blocks: line-height.
Line-height
Line-height is the distance between the baseline
of two consecutive lines of text. Line-height is
crucial for the readability of text. If you use a
tight line-height, your lines will hug one another.
If the line-height is loose, it will be difficult to
break your text into chunks or paragraphs.
Paragraph spacing
As the name suggests, paragraph spacing is the
space between two separate blocks of text.
Paragraph spacing is influenced by line-height.
It’s easy to confuse loose line-height with
paragraph spacing, which disrupts continuity
when reading.
There are many other typographical terms that
you won’t need for this chapter. If you’re curious
and want to learn more, a great place to start is
with the Understanding Typography sub-section
of the Material Design typography guidelines.
paragraphSpacing:
https://material.io/design/typography/understan
ding-typography.html
Now that you know some critical terminology, it’s
time to get to work.
Building a typographic scale
A typographic scale is almost like a musical scale.
It uses fonts that work harmoniously with each
other and complement each other's attributes.
Just as harmonics do, text styles in a typographic
scale grow and shrink in a certain pattern to
produce a set of styles that work well with one
other.
The first step in building a typographic scale is to
determine a base text style to start from. This
text style represents the styling of the body text.
Think of the body text as the text that goes inside
a paragraph tag on the web.
Once you have the base text style, you scale up or
down, depending on your use case, using a scale
factor to produce variations.
A scale factor is a numeric value. You multiply
your base style values by the scale factor to
obtain the upscaled and downscaled variants.
You don’t have to strictly abide by the scale
factor values; you can tweak the scaled variants
depending on your use case. The objective is to
produce a scale that doesn’t compromise
legibility.
Getting started
Download this chapter’s materials, then open
chapter-6-starter.fig in Figma. This file picks up
where the last chapter left off.
Create a new page in this file and name it
Typography.
Next, add a MacBook frame (F) with a width and
height of 500 to the canvas and name it Text
Styles.
Defining the base text style
You’ll start with a base text style with a font size
of 14. Add a text layer (T) to the frame with the
text Text Style — 14. Use Roboto as the font with
a Regular weight and font size of 14.
You’ll choose font sizes for the various elements
of your app based on a modular scale, which is
popular in web design. Simply put, it’s a specific
sequence of numbers that relate to one another
in a meaningful way. Using a modular scale as a
base for a typographic scale makes your text
styles scale up and down proportionally.
In this case, you’ll use a scale factor of 1.3, which
is a simplified derivative of the perfect fourths
scale. You’ll start with a weight and then
multiply or divide by 1.3 to get larger or smaller
sizes.
Here, when you apply the 1.3 scale factor to the
base text style, you’ll get the following size
variants:
Evening your font sizes
After that multiplication, you end up with types
in fractional font sizes — which aren’t
convenient to work with. Implementing
fractional types in code is messy. It’s usually best
to use type values that are even.
So far, the chapters have all used margins and
alignment metrics in multiples of eight, and
there’s a specific reason why: When aligning and
spacing items using increments of eight, your
designs scale appropriately on all screen sizes.
Most screen sizes today are divisible by eight,
which makes aligning things easy.
Naturally, if your type scales use even values, you
aren’t working with half-pixel values. This
ensures a continuous rhythm in your designs,
making it easy to manage and to scale things as
needed.
This is also a great time to point out that
building a type system is not cut and dry;
designers often need to tweak values after
starting from a base scale. That means you have
the freedom to deviate from the scales when it
makes sense. Remember, the scale factor gives
you a blueprint to build your typographic scale
off of, but you should think of the scale as a
flexible guideline instead of a hard rule.
With these facts in mind, you’ll tweak your
values to play well with your designs by rounding
the values to the nearest even number. So 18.2
becomes 18, 23.66 becomes 24, and 30.76
becomes 30.
For your next step, duplicate the text layer you
created earlier three times vertically and change
the text and font size, as shown below. The
numeric value for each style represents its font
size.
Text styles
Now that you have a basic scale in place, you’ll
incorporate it into your use case.
In the app, you need text styles for:
Title text
Movie info
Genres
Rating value
Details title text
Synopsis
Details section header
User ratings
Button text
Based on these requirements, your next step is to
create the typographic scale from the base text
style. You’ll work from the top down, with the
largest text size first and the smallest ones
coming last.
Defining text styles for your elements
The largest text in the entire app is the movie
rating, so you’ll use the largest text in your scale
for that element. To do that, duplicate the Text
Style — 30 layer and change the text to Rating.
For the font, use Rubik One.
The movie title comes next. Duplicate the Text
Style — 24 layer and place it below the Rating
layer at a margin of 8 from the top. Change the
text to Title and the font to Chivo with a weight
of Bold.
For the details screen’s section headers,
duplicate Text Style — 18 and place it below the
Title text. Change the text to Section Header and
change the font to Chivo with a weight of Bold.
Note: While the margins and alignment
aren’t necessary here, you keep the frame
clean by left-aligning all text styles and
creating a margin of 8 between them. Doing
this builds a subconscious habit that will
improve your organizational skills.
For the button text, duplicate Text Style — 18
again and place it below the Section Header text.
Change the text to Button Text and the font to
Rubik with a weight of Medium.
Great progress, keep moving along!
Duplicate the Text Style — 14 layer and place it
below the Button Text layer. Change the text to
Movie Info and the font to Chivo with a weight of
Regular.
Repeat the same step by duplicating the Text
Style — 14 layer again, changing the text to Body
Text, and the font to Chivo with a weight of
Regular. Place this layer below the Movie Info
layer.
Once again, duplicate Text Style — 14 and
change the text to Navigation Text. Use Rubik
with a weight of Regular as the font. Place this
layer below the Body Text layer.
Finally, repeat the same step by duplicating Text
Style — 14 and changing the text to User Rating
Text and the font to Rubik with a weight of
Regular. Place this layer below the Navigation
Text layer.
You might wonder why you created the same text
style twice for the Movie Info and the Body Text,
then again for the Navigation Text and User
Rating.
First of all, that’s a great question and a sign
you’re noticing the finer details.
You’re correct, you could have reused the Movie
Info style for the body text and the Navigation
Text style for the user rating text. But having
separate text styles for separate use cases, even
though their styling is the same, allows you to
flexibly change the attributes of one element in
the future without affecting other elements. This
means you can switch the font of the synopsis
text on the detail page without having to worry
about messing up the movie info text style.
At this point, the only text element you don’t
have a style for is the genre text. You could reuse
the Text Style - 14 for this, but the typographic
scale would then lack hierarchy. Fonts, weights,
and font sizes work together to break the screen
into chunks that are easy for your users’ eyes to
scan.
Supporting the text hierarchy
As of now, the font choices do most of the heavy
lifting of creating a hierarchy. So you’ll keep that
up by introducing a new text style to break the
repetition in the scale.
Create a new text layer called Text Style — 12,
and you guessed it, the font size here will be 12.
While you’re at it, give Text Style — 30 a font size
of 32 and change the text to Text Style — 32.
Be sure to change the font size on the Rating
layer, too. This amplifies the difference between
the styles even more.
All right! For the final style, duplicate the Text
Style — 12 layer and place it below the User
Rating layer. Change the text to Genre Text and
the font to Chivo with a weight of Bold.
The genres are always uppercase, so select
Uppercase in the Letter Case section from the
Type Details option.
Now, take a moment for some housekeeping. You
no longer need the Text Style — FONT SIZE
layers, so select and delete them from the frame.
Nice job, your typographic scale looks great. At
this point, though, you just have simple text
layers and not text styles. You still need to create
text styles from these layers.
Creating text styles
Select the Rating layer and, under the Text
section, select the Style option. The icon has four
dots. Click the + icon to add a new text style.
In the pop-up, name the style Rating and click
Create style.
Next, select the Title layer by selecting the Style
option, then clicking the + icon and creating a
new style named Title.
Repeat this process for the other text layers you
styled. Once done, you’ll notice the styles appear
under the Local Styles section.
Applying your styles
Now, it’s time to apply these styles to the
components in the app. Head to the Components
page.
In movie card/sharp, select the title layer. Now,
from the Text section in the Properties panel,
click the Style icon and select the Title style.
This will update the layer to use the title style
you specified earlier.
Next, select the individual text layers in the
movie-info frame and change their text style to
Movie Info. Notice that this messes up the
movie-info section in the design. Don’t worry,
it’s normal to run into alignment and positioning
issues when applying text styles.
To fix this, select the year layer and increase its
width to 36. That’s all you need to do to fix the
movie-info layer.
Next, switch to the genre component, select the
individual genre text layers and apply the Genre
Text style.
Do the same for the rating component by
selecting the layer with the rating value of 4.2
and applying the Rating style to it.
Fixing alignment
When you look at movie-info ▸ sharp now, the
alignment of the layers is off. Take a moment to
fix this before proceeding.
Select the title, movie-info, genre and rating
layers.
Now, left align them.
To fix the margin, change the X value to 16.
Your final movie card ▸ sharp component will
now look like this:
Repeat the steps mentioned above for movie card
▸ rounded. If you run into alignment and
positioning issues, remember that’s normal. If
you have trouble fixing them, refer to the
chapter-6-final.fig file to see how the result
should look.
Handling the bottom navigation
Next comes the bottom-nav component, where
you need to change the styling of the navigation
target text. Select the individual text layers and
apply the Navigation Text style. You’ll need to
adjust the alignment of the text with the icons
after applying the styles.
Improving the details page
Next, head to the Cinematic App page. Before
you start, check out how the movie list frame
looks after applying the text styles. It’s really
starting to feel like a properly thought-out app.
All right, changing the movie-details frame will
be quick. First, select the title and apply the Title
style.
Next, apply the Movie Info style to the movie-
info layer.
Now, instead of modifying the section headers
one by one, select them at once by holding
Command/Control and clicking the layers.
For your next step, apply the Section Header
style.
And... you’re finished! See how quick that was?
Finishing your text styling
Next, select the synopsis layer and apply the
Body Text style to it. As you can see, the text is
illegible due to the relatively short line-height.
You’ll modify the text style to fix this.
Select the body-text layer and click the Edit style
button.
Under properties, specify a line-height of 20. The
synopsis looks much better now, and your
change didn’t affect any other elements. This
really demonstrates the advantage of having
separate styles for different elements.
Next, apply the User Rating Text style to the
username within each rating-row instance.
Finally, apply the Button Text style to the text
layer inside favorite-button and fix any
alignment issues that come up.
Fantastic job with the text styles! The app finally
has some personality, not to mention how
visually appealing it looks. This is quite an
achievement.
You covered a lot of information here,
congratulations. In the next chapter, you’ll jump
into the world of colors and learn how to build an
appealing palette from scratch.
Key points
You learned the fundamental concepts of
typography and their importance in design.
You created a typographic scale with
different fonts and font sizes to establish a
visual hierarchy in the app.
You created text styles using your
typographic scale.
You then applied the text styles to the
components and the other parts of your
design.
Chapter 7: Colors
In the last chapter, you focused on learning the
fundamentals of one of the more subtle yet
influential design aspects, typography. You
started with a quick primer on typography
fundamentals, then built a typographic scale
from scratch.
In this chapter, you’ll focus on another essential
element: colors.
Note: If you’re reading a version of this book
printed in grayscale, I’ve included colored
versions of the screenshots from the
informational sections of this chapter with
the project files. I highly recommend
looking at them while reviewing the
informational sections.
Colors, like typography, play a vital role in design
— as well as in everyday life. Colors evoke certain
emotions and elicit a deep psychological
response in our brain.
Colors convey information without words.
When you use them correctly and tastefully,
colors help users and provide visual feedback for
eventful interactions, like highlighting errors and
providing confirmation.
Colors are crucial for establishing brand identity
and helping a product stand out. They bring
uniformity and cohesion to a family of related
products. While they’re a subtle aspect of design,
colors make a big impact on how users perceive
and remember your brand.
Great examples of products that leverage color to
establish their identity are Coca-Cola’s brilliant
red, McLaren’s papaya orange and Apple’s use of
white across their products and packaging. Often
underrated, colors build an instant association
with a brand identity.
Before getting into building a palette, you’ll walk
through some fundamental concepts of color
theory to help you pick the right colors for your
project.
Basics of color theory
Simply put, color theory is a collection of
guidelines that designers use to pick colors.
These guidelines are based upon how humans
perceive colors, which emotions and messages
they convey and what visual effects you can
achieve when you mix them.
Now, you’ll start from the ground up by
understanding what a color is.
Color is a perception. When our eyes see an
object, they send signals to our brains, which our
brains use to define the color.
These signals are wavelengths of light reflected
by objects.
Color wheel
The first color wheel was designed by Sir Isaac
Newton in the 1600s. Designers still use it today
to mix and match colors to build a palette.
A color wheel contains:
Three primary colors:
Red
Yellow
Blue
Three secondary colors, derived from mixing the
primary colors:
Blue plus yellow = green
Red plus yellow = orange
Blue plus red = purple
Six tertiary colors, derived from mixing the
primary and secondary colors:
Red-orange
Red-purple
Blue-purple
Blue-green
Yellow-green
Yellow-orange
Hue
Hue is the name of the color: red, blue, green,
yellow, orange and so on.
Saturation
Saturation is the intensity or purity of a hue.
High saturation makes a color look bright and
vibrant, whereas a desaturated color is more
washed out and subtle.
Value
Value determines the degree of darkness or
lightness of a hue, ranging from pure white to
pure black.
Shade
A shade is a hue produced by adding black in
varying amounts. The image below shows various
shades of red with increasing amounts of black
added to it.
Tint
A tint is a hue produced by adding white in
varying amounts. The image below shows various
tints of red with increasing amounts of white
added to it.
Color Temperature
Divide the color wheel vertically into two halves.
The colors on the left half are the warm colors —
reds, oranges and yellows. The ones on the right
half are the cool colors — purples, blues and
greens.
Contrast
In color theory, contrast is the difference in the
visual properties of an object that distinguishes
it from other objects and its own background.
In other words, it’s the difference between two
colors.
In web and mobile design, using contrasting
colors is essential to ensuring accessibility and
readability. You must always strive to create
designs that have a strong contrast between the
content and background to ensure users with
visual impairments aren’t left out.
The Web Content Accessibility Guidelines
(WCAG) 2 recommends a minimum contrast ratio
of
4:5:1 for regular text.
3:1 for large text, graphics and user
interface components.
There are several online tools available to check
the contrast ratios of your colors, like WebAIM’s
contrast checker:
webaim.org/resources/contrastchecker/.
You can feed the background and foreground
colors into this tool and get the resulting ratio.
These ratios are measured using a grading
system called levels of conformance. The highest
achievable grade on this system is AAA, which
requires a 7:1 ratio.
In the image below, you can see an example of a
poor contrast ratio:
In comparison, here’s what a good contrast ratio
looks like:
Sometimes, you can’t — or shouldn’t try to —
achieve the AAA grade, as it requires highly
complementary colors, which might make your
palette dull or unappealing.
Now that you have a basic understanding of
colors and contrast, it’s time to understand how
to pick colors using tried and tested color
schemes.
Color schemes
Color schemes are formulas based on color
harmony. In color theory, color harmonies are
sets of colors that look good together.
Monochromatic scheme
The simplest form of a color scheme is the
monochromatic color scheme. You start with a
single color on the color wheel, then create
variations using the knowledge of saturation and
values.
Analogous scheme
An analogous color scheme uses colors next to
each other on the color wheel, like reds and
oranges or greens and blues.
Complementary scheme
A complementary color scheme uses colors
opposite one other on the color wheel, like blue
and orange or red and green.
Split complementary scheme
A split complementary color scheme uses colors
on either side of the complement of the base
color. This scheme provides the same contrast
level as the complementary scheme, but gives
you more colors to work with.
Triadic scheme
A triadic color scheme uses three colors that are
evenly spaced on the color wheel, forming a
perfect triangle.
Tetradic scheme
A tetradic color scheme uses four colors that
form a rectangle on the color wheel, and the
diagonals are complementary pairs.
It’s worth noting that color schemes are
guidelines, or a starting point to build your
palette. They aren’t hard rules you must follow.
Depending on your use case, your brand needs
and your contrast constraints, feel free to tweak
properties as and when you need to.
Whichever color scheme you choose, it’s
important that the palette you choose doesn’t
hamper the legibility and readability of text on
your product.
Finding the right scheme for your project
While colors are an important part of design,
they’re by no means a must-have requirement for
every project, whether print or digital. An
informational website, like a blog or an online
journal, can deliver a great experience while
sticking to a monochromatic palette that uses
black text on a white background.
The app you’re working on doesn’t use colors
heavily because it relies on the movie posters for
vibrancy. That said, the app still uses colors for
visual feedback, like the states of the bottom
navigation buttons, the ratings component and
the Add to Watchlist button.
Generating and experimenting with different
palettes is outside the scope of this chapter, as
you often need to account for the brand
guidelines of the company. Still, if you want to
generate and test different color combinations
for your projects, check out the following:
Adobe Colors: https://color.adobe.com
Material Color Tool:
https://material.io/resources/color
With these resources, you can use what you’ve
learned here to quickly build and experiment
with different color styles.
You’ve only scratched the surface of color theory
here, but you’ve learned enough to get started.
Building your palette
Compared to building the type scale, your palette
is much more straightforward because you’ll just
convert the colors you’re already using into
reusable styles. This saves you the trouble of
manually copy-pasting the hex codes going
forward.
At this point, you might wonder what the idea
behind selecting Cinematic’s colors was.
The movie posters in the app are already vibrant
and loud enough to draw the user’s attention.
Any additional colors you use for UI elements,
like buttons and ratings, must be bold and
vibrant enough to make it easy for users to
discover these interactions and not feel lost.
That was the primary motivation behind picking
the current palette. The palette uses the triadic
color scheme with the saturation of each color
cranked up to eleven!
Now that you know the reasoning behind
selecting the palette, it’s time to build the color
styles.
Download this chapter’s materials, then open
chapter-7-starter.fig in Figma. This file picks up
where the last chapter left off.
Turning your colors into reusable styles
Now, it’s time to finalize the color styles for this
app. Create a new page and name it Colors.
Add a new 400×300 frame (F) to the canvas.
Name this frame Palette. Add a 30×30 ellipse (O)
to the frame and give it a fill of #F34444.
Creating a color style is relatively
straightforward. In the Fill section, click on the
Style icon, which looks like four circles.
In the menu that pops up, click the + icon and
name this style button/primary.
The category/subcategory notation lets you
create categories within the styles.
Add another 30×30 ellipse (O) and give it a fill of
#6D6E70. Then create a new style and name it
navigation/inactive.
The active icon in the navigation has a deep blue
color, so create a new 30×30 ellipse (O) for it and
give it a fill of #0045D0. Finally, create a new
style named navigation/active.
Why aren’t you focusing on the circles’ position
and alignment? That’s because, once you create a
color style, you can delete the circle and the style
is still available for you to use.
You want to quickly build a palette so you can
apply the styles to your designs. Nevertheless,
you should keep a rudimentary arrangement in
place so it’s easy to differentiate between
different styles.
Creating the text color styles
Keep moving along to create the text color styles.
Add another 30×30 ellipse (O) and give it a
#000000 fill and create a style named
text/primary.
Create another 30×30 ellipse (O) with a #ffffff
fill. At this point, the white circle isn’t visible
because the frame you’re working on is also
white.
To create contrast between the frame and the
individual color styles, change the frame’s fill
color to #D2D2D2. This will differentiate
between the styles and the frame.
Create a new color style from the circle with
white fill and name it text/secondary.
Create another 30×30 ellipse (O) with a fill of
#B9C95A and name this color text/accent.
Finally, create still another 30×30 ellipse (O) with
a fill of #727272 and name this color text/muted.
Using gradients in color styles
Color styles aren’t limited to solid fills; they can
also hold gradients. The movie posters in the app
use a gradient scrim to make the text more
visible. Your next step is to make this gradient a
style, so if you need to change things later, you
only need to do it in a single place.
Add a 30×30 ellipse (O) and, instead of giving it
a solid color fill, use a Linear gradient.
The left handle will have a #000000 fill with 8%
opacity, while the right handle will have a
#000000 fill with 100% opacity.
Create a new style using this circle and name it
gradient/poster.
Styling the rating component
For your final step in defining your palette, you’ll
create styles for your rating component.
Add a 30×30 ellipse (O) with a fill of #89E045 and
name it rating/positive.
Create another ellipse (O) and give it a fill of
#C4C4C4, which also happens to be the default
fill color in Figma. Name this style
rating/neutral.
And that’s it! Great job building your color style
catalog. If you deselect everything on the canvas,
you’ll see all your color styles appear on the
right.
The naming schematic you used will be helpful
when assigning styles to your components.
Applying the color styles
Head to your Components page to apply the color
styles you just created. First up: the posters.
Select the backdrop-gradient layer from the
Poster/Birds of Prey component.
Now, click the Fill section’s Style button.
Select the gradient/poster style to remove the
existing fill and apply the color style.
Repeat this process for the remaining posters.
Note: Instead of manually applying the
styles one by one, press and hold
Command/Control-Shift and click the
backdrop-gradient layer on all the posters to
select them all at once and apply the style.
Next, the movie cards. Select the title layer and
change the fill to text/secondary.
Repeat the same process for the three text labels
inside the movie-info group.
In a moment, you’ll tackle the genre and ratings
in their component frame. For now, repeat the
process and change the fill of the text layers
inside the movie card/rounded component.
Then, change the fill style for the genres text in
the genres component.
You also need to change the fill for the enclosing
Auto Layout frames.
Styling the icons
Before tackling the navigation component, take a
moment to work with the icons. Select the
individual icon paths in the Icons frame.
Give them a fill style of navigation/inactive.
Now, in the bottom-nav component, select the
trending icon and its text label and change their
fill to navigation/active.
Repeat the same process for the text labels for
each navigation target.
For the final piece of the Components page,
change the rating component text’s fill to
text/secondary.
Finally, apply the relevant rating/positive fill to
the stars.
Updating the details screen
Great job with the styles so far. Since the app
uses components in most places, Figma will
make a good chunk of the changes automatically.
You only need to change the app’s details screen.
Open the Cinematic App page and, in the movie-
details frame, change:
The title text color to text/primary.
The movie-info text color to text/muted.
All section header text colors to
text/primary.
The synopsis text color to text/primary.
All user rating text color to text/muted.
The button text color to text/secondary.
The button fill to button/primary.
After all the modifications are in place, your
screens will finally look like this:
Advantages of color styles
After all that work, none of the visuals in the app
have changed. However, you’ve introduced
flexibility that allows you to change the palette
and, in turn, the app’s styling — without
impacting the rest of the design.
This is a great time to use an analogy from
engineering. Engineers often practice separation
of concerns to reduce tight coupling within their
projects. By isolating functionality into separate
layers, you reduce the scope of change when you
make modifications. This also ensures you don’t
unknowingly break existing functionality.
You reap those benefits by keeping your styling
— i.e., typography and colors — decoupled from
your design. When you broke designs into
components in the previous chapter, you saw
how straightforward it is to switch things around
when you needed to. By creating text and color
styles, you can make more granular changes to
those components with the same advantages.
Congratulations, you’ve done a great job with the
design so far. The screens look appealing and,
more importantly, you’ve laid the groundwork to
make future modifications less time-consuming.
In the next chapter, you’ll bring these screens to
life by adding animations and transitions.
Key points
You learned the basics of color theory and its
importance in design.
Then you learned about the importance of
contrast in design for accessibility.
You created color styles for the UI elements
of the app.
You then applied the color styles to the
components.
Finally, you learned about the benefits of
using reusable styles.
Chapter 8: Transitions &
Animations
In the last chapter, you built a typographic scale
and a color palette that helped you decompose
your design into even smaller granular layers.
You ended the chapter by leveraging these
elements in your design and finalized the look of
the app.
While the app looks great right now, it's far from
finished. Visual appeal is only a part of a great
product's story. How it feels and how it’s
perceived by users are two other important
aspects as well.
Static designs like the ones you’ve created thus
far communicate how the app looks. To
communicate how it feels to use the app,
however, you need to make it interactive.
Interactive prototypes make your designs
functional, even though there's no business logic
backing them. Prototypes play an essential role
in validating functionality and gaining feedback
because it lets you put a simple version of your
app in real users' hands. The’re an inexpensive
way to identify friction points in an app's flow
and smooth out any rough edges before kicking
off the engineering work.
Without user feedback and usability studies, it’s
entirely possible that your end product won’t be
usable. Changing things around after a
production rollout incurs a considerable cost, in
both engineering time and money.
In this chapter, you’ll add interactivity and
animations to the static screens you finalized in
the previous chapter. While you played with
Figma’s prototyping tools briefly in Chapter 1,
“Book Overview & App Preview”, you’ll now
explore Figma’s prototyping and animations
capability at a deeper level.
Previewing the finished version
If this were the Harry Potter universe, you could
see the animations on this page instead of just
static images. but sadly it isn't. Some creativity
will help, however. Instead of using the final
version of this chapter's project as a mere
reference, you’ll start by examining it.
Doing so will give you a sense of what you’ll build
and how it should feel in the end.
So far, everything has centered around the app's
cosmetic looks so you could rely on the images.
However, it's impossible to convey the transitions
of animations in print.
Loading the final project
From the downloaded materials, open chapter-8-
final.fig in Figma. This file has a new page called
Cinematic App Prototype that contains an
interactive version of the app.
Note: Make sure you download the final
project this time, rather than starting with
the starter project. Throughout the chapter,
you’ll update the starter to match the final
version.
This is a separate page because often, while
creating prototypes and interactions between
different screens, you need to duplicate frames
with minor differences to assist in the animation.
Sometimes, you’ll need to change the contents of
a frame or add additional elements to achieve the
desired effect. Having a separate copy rather
than modifying the original designs will let you
change and tweak things without worrying about
messing up the final version.
Another reason why you should keep static
versions separate is that they are used for
developer handoff and exports. Keeping them
free of unwanted elements makes the process
less confusing.
Ready to get started? Open Cinematic App
Prototype and click the Present button in the
toolbar at the top.
This will open up a new tab with the design
loaded into an iPhone 11 Pro Max frame.
Play around with the prototype. If you’re not
sure which elements are interactive, click
anywhere outside the device frame and the
interactive elements will blink, prompting you to
click them.
Breaking down the transitions
Now that you’ve checked out the final app, notice
the following transitions in the prototype:
The transition between the three targets in
the bottom navigation.
The transition from the movie list to the
movie Details screen.
The transition between the Add to Watchlist
and Mark Watched selection state in the
Details screen.
If you missed any of them, go back into the
prototype and check out their flow and behavior.
First, you’ll add the navigation between these
states and then you’ll add transitions to make
them visually appealing.
Loading the starter project
From the downloaded materials, open chapter-8-
starter.fig in Figma.Open the Cinematic App
Prototype page. For this chapter, you’ll just work
in this page.
Setting up the first navigation
Notice that there are two frames on this page:
movie-list-trending and movie-details. For your
first step, you’ll work on the navigation to bring
you from the movie list screen to the movie
details screen.
From the movies-list-trending frame, expand the
movies Auto Layout frame and select the Birds of
Prey instance.
From the Properties panel on the right, click the
Prototype option.
A + button will appear on the right side of the
selected instance when you hover over it. Click it
and drag it towards the movie-details frame to
create a link.
An Interaction Details pop-up will appear, telling
you what will trigger the transition. Leave it to
the defaults for now, as shown below:
The Interaction Details' default values define
that when user clicks the Birds of Prey instance,
the movie-details frame will load without any
animations.
In the movie-details frame, select back-button
and add a link back to the movie-list-trending
frame.
Leave the Interaction Details value at the
defaults.
Testing your results
It’s time to check if things work as you expect.
Click the Present button on the toolbar at the top
of the screen. A new window will open with the
screens loaded inside an iPhone 11 Pro Max
device frame.
Click the “Birds of Prey” movie and you’ll
navigate into the details screen. Clicking the
Back button will bring you back to the movie list
screen.
But there's a small issue: The navigation bar
scrolls along with the list instead of being
anchored to the screen's bottom.
To fix this, go back to the editor and click the
Design tab.
Now, select the bottom-nav instance and, under
the Constraints section, check the Fix position
when scrolling option.
Click the Present button again. This time, the
bottom navigation stays anchored to the screen's
bottom while the list is scrollable.
Handling the Add to Watchlist
button
Next, you need to handle the Add to Watchlist
button state. When the user clicks the button:
The text should say Mark Watched.
The button color should be
button/secondary.
The icon of the button should change to
remove_red_eye_24px.
First, duplicate the movie-details screen. Do this
by either selecting the movie-details frame and
pressing Command/Control-D or simply copy-
pasting with Command/Control-C then
Command/Control-V.
Rename the frame to movie-details-mark-
watched.
Expand the add-to-watchlist-button group and
select the button-background layer.
Change the button-background layer's fill style to
button/secondary.
Change the button's text to Mark Watched.
Finally, to change the button’s icon, select the
icon instance from the Layers panel.
Then, from the instance swapping menu on the
Properties panel, select the remove_red_eye_24px
icon.
You also need to change the icon color to
text/secondary.
Finally, rename the group from add-to-watchlist
buttton to mark-watched-button.
Great job! Now, it’s time to wire up the
navigation to this screen.
Wiring up the navigation
For your first step, select the add-to-watchlist-
button in the movie-details frame and create a
link to the movie-details-mark-watched frame.
Check the Preserve scroll position option — it
ensures that when you transition to the next
screen, your screen’s scroll position stays the
same. If the option is unchecked, when you click
the button, the next screen will jump back to the
top.
Next, select the mark-watched-button and create
a link back to the movie-details frame. As before,
check the Preserve scroll position option
If you head back into the interactive prototype
tab and press the button, it will now change
states.
Great stuff! Now that you have a basic
navigational flow from the list screen to the
details screen, it’s time to start working on the
bottom navigation.
Making the bottom navigation
interactive
Since there are three tabs, you’ll need three
navigational destinations. The trending tab
already exists, but you need to add the top-rated
and watchlist tabs.
Duplicate movie-list-trending twice and rename
the new instances to movie-list-top-rated and
movie-list-watchlist.
Instead of adding a new set of movies, all you
need to do is shuffle the movies list.
To shuffle the list items, select a list item and
drag it up or down to change its position. Here's
the list order that the final project uses, for
reference:
Next, you need to change the active tab on each
frame. First, in the movie-list-top-rated frame,
expand the bottom-nav component and select
the trending item.
Change its fill style to navigation/inactive.
Now, select the top-rated item and change its fill
style to navigation/active.
Great job! Now, repeat this process in the movie-
list-watchlist frame. Change the trending item's
fill style to navigation/inactive and make the
watchlist item's fill style navigation/active.
Now, you need to wire the navigation items
together.
Wiring up the navigation elements
Start with the movie-details-trending frame.
Select the top-rated item in the bottom-nav
component and create a link to the movie-list-
top-rated frame.
Then select the watchlist item and create a link
to the movie-list-watchlist frame.
Next, in the movie-list-top-rated frame:
Select the trending item in the bottom-nav
component and create a link to the movie-
list-trending frame.
Select the watchlist item and create a link to
the movie-list-watchlist frame.
Finally, in the movie-list-watchlist frame:
Select the trending item in the bottom-nav
component and create a link to the movie-
list-trending frame.
Select the top-rated item and create a link to
the movie-list-top-rated frame.
Now, click Present and interact with the
prototype. You’ll be able to click on the
navigation targets and to switch between the
different screens.
Awesome job! You now have a basic prototype
that you can use to navigate the different screens
in the app and visualize the different selection
states of the buttons in the details UI.
Functionally, the prototype is ready, but it lacks
visual appeal; the transitions feel bland. In the
next section, you’ll fix that by adding animations
to make the app extra awesome.
Animations & animation
interpolators
Before you move on to adding animations to the
prototype, take a moment to understand what
animations are and which interpolation options
Figma provides.
It’s easy to confuse the terms transitions and
animations. Transitions work on a scene or state
level and influence larger changes like moving
from one screen to another, whereas animations
work on an individual element level.
Animations and motion, in general, have a huge
influence on how users perceive an app. Besides
adding aesthetic flair, animations have other
implications, like adding context to what's
happening in the app. They help users navigate
the app more effortlessly.
Good animations and thoughtfully
choreographed motion also help establish visual
hierarchy and convey the relationship between
different screens to the users. In this app's case,
the list screen is the parent, while the details
screen is the child, conveying more detail about a
selected movie.
When done right, motion can be a useful tool in
user education, subtly conveying critical
information or feedback on specific actions. A
great example of this is the iOS lock screen.
When you enter an incorrect passcode, the
passcode field wiggles to let you know.
At their essence, animations are just
mathematical equations that influence a value —
like position, rotation, scale etc. — over time.
These equations, also known as interpolators,
determine how the animation looks.
Understanding interpolators is key to deciding
which animation works best for your specific
needs. There's no defined set of rules one can
follow to add animations. It boils down to trying
and seeing what works best — and, most
importantly, what feels right.
Since this is a book where images can't physically
move, you’ll rely on math and a basic
understanding of graphs to understand these
concepts.
The graph explaining interpolators has time on
the X-axis, which increases from left to right,
and the position value on the Y-axis, which
increases from the bottom up.
Note: Interpolators are not limited to
modifying position values — you can also
use them to modify the rotation scale and
other attributes. This chapter focuses on
position values because they’re easier to
imagine.
Types of interpolators
Before you start adding animations to the
Cinematic app, take a moment to learn about the
different types of interpolators Figma offers.
Linear interpolator
The first interpolator you will look at is linear.
Linear interpolation is represented as a straight
line, meaning the change in position is linearly
related to the change in time:
Linear movements often feel robotic and
unnatural. That’s because, in the real world, all
movement is influenced by inertia. Objects don't
suddenly start and stop, they start slowly and
accelerate or decelerate until they stop.
Ease-in interpolator
In an ease-in curve, as shown in the graph,
changes in an object’s position start slowly and
accelerate as time passes. Their quickest rate of
motion is at the end of the animation. Imagine,
for example, a car stopped at a traffic light.
When the light turns green, the car accelerates
away.
Ease-in interpolation is an excellent choice for
moving elements off the screen.
Ease-out interpolator
An ease-out curve is the opposite of an ease-in
curve, as shown in the graph below. Changes in
the object’s position start fast and slow down
toward the end of the animation. For example,
imagine a cartoon character running in and
skidding to a stop.
Ease-out interpolation works well for moving
elements into the screen.
Ease-in-and-out interpolator
An ease-in-and-out interpolator starts the
interpolation slowly, accelerating in the middle
and slowing down towards the end. A good
example is a sprinter who starts from a fixed
position, runs the race, and then slows to a stop
after the finish line.
This interpolation makes interactions feel
friendly and perfect — but overusing it can lead
to transitions feeling oddly unnatural.
Ease-in-back interpolator
The ease-in-back interpolator starts by moving
the object back a few positions, then releasing it
to accelerate toward the end, like when you draw
a pinball plunger back before releasing the ball.
This is useful when you need anticipation in your
animations or want to create bouncy -or springy-
feeling animations.
When used tastefully, it adds a flare of fun to the
animations.
Ease-out-back interpolator
The ease-out-back interpolator is the opposite of
the ease-in-back interpolator. It starts by
accelerating the object, then moves the object
past the final position before arriving at the final
position. Imagine dropping a heavy ball onto a
stretchy surface, where it drops below the surface
then springs back to rest upon it.
The ease-out-back interpolator gives the
animations a bounce or a reactionary motion.
You can use this as a subtle ending to an
animation.
Ease-in-and-out-back interpolator
The ease-in-and-out-back interpolator combines
the ease-in-back interpolator and the ease-out-
back interpolator. It creates an anticipatory
backward-bounce motion at the beginning, an
acceleration in the middle, and then a bounce
towards the end.
Now that you've covered what interpolators are
and how they influence values, it’s time to get
started with the animation for navigating
between the list screen and the details screen.
Implementing the navigation
animations
The animations in the final project have four key
aspects:
The backdrop grows and increases in opacity
from the middle of the screen.
The details screen image grows and moves
up to its final position.
The title, movie info, genres, overview and
background cards move up to their final
positions from the bottom of the screen.
The Back button grows to its final size in its
final position.
To see this in action, open the final project's
interactive prototype and test it out.
To achieve the final effect, you’ll use a clever
feature in Figma called Smart Animate.
Using Smart Animate
Smart Animate takes a starting state and a final
state for an element and animates the element's
properties between those two states. If you’ve
used Keynote's Magic Move feature, Smart
Animate works the same way, just for your Figma
designs.
There are two requirements to get Smart
Animate to work properly:
The element that you need to animate must
exist on both the starting screen and the
final screen.
The element must have the same name on
both the starting screen and the final
screen.
These requirements are very important to keep
in mind. If even one of these is violated, you’ll
end up with a weird or broken animation.
Note: Smart Animate is very similar to using
Shared Element Transitions on Android.
The underlying mechanics are also very
similar. The shared element transition
animates a view between its starting and
final state provided the view is present on
both screens and has the same tag in both
layout XML files.
Start with a simple example, to get the hang of
Smart Animate.
Animating the Back button
When you enter the details screen, the Back
button should grow from a point size to its final
form.
To make this happen, copy the back-button in the
movie-details frame and paste it into the movie-
list-trending frame.
This will copy the button in the same position as
in the details screen.
Select the back-button you just copied and:
Change the width and height to 1.
Change the X value to 36 and the Y value to
70.
Change the opacity to 0%.
Note: If you lose the selection because the
button is too small to manipulate directly
with your mouse, just select back-button
from the Layers panel and modify its
properties.
All right, now you need to make one final change
so you can preview this animation.
Go into the Prototype section and select the link
you added from the “Birds of Prey” movie to the
details screen. Under the Animation section,
select Smart Animate from the drop-down. Use
Ease In And Out as the interpolator and specify a
duration of 600ms.
Time for some fun. Click on the Present button
and click the Birds of Prey movie card. You’ll see
the Back button grows from a small point into its
full size.
For a little test, rename the back-button on the
movie-list-trending frame to back-button-2 and
try interacting with the prototype. You’ll see it
no longer works. Be sure to change the name
back before proceeding.
To stress this point again, ensure the elements
you are trying to animate:
Exist on both frames.
Have the same names on both frames.
Animating the details card
Next, you need the details card to slide up into
place when the user enters the details screen.
To do so, first, copy the details group from the
movie-details frame to the movie-list-trending
frame. As you saw earlier, the copied group will
maintain its position.
Select the details group you copied and change
the Y value to 923.
Next, expand the details group and select the
title, movie-info, genre, overview-header and the
overview-text layers and group them (G).
Name the group details-animated-content.
Select the details-animated-content group and
change the X value to 16 and the Y value to 1091.
Reduce its opacity to 50% by setting the Layer
Pass Through to 50..
Next, the image. Select the movie-details-image
in movie-list-trending screen and:
Change X to 73 and Y to 1031.
Change the width and height to 10.
Finally, change the fill opacity and the stroke
opacity to 0%.
For your last step, select the details group in the
movie-list-trending frame and change the
opacity to 0%.
Click the Present button and view the prototype.
You’ll notice the details section and the Back
button animate into their final positions when
you click the “Birds of Prey” movie card.
You can see that a lot of what you did to achieve
this effect was smoke and mirrors. Smart
Animate works on a simple premise of
interpolating values between the initial and final
state. Everything you make the tool do in
between is trickery — and magic, in a way.
Animating the backdrop
You're almost there with the effect. You just need
to add one last bit to wrap it up, which is
animating the backdrop.
In the final project, the backdrop image grows to
its final size from the screen's center. You’ll add
that animation now.
First, copy the backdrop group from the movie-
details screen and paste it into the movie-list-
trending frame.
Select the backdrop layer you copied and change
the width to 399 and the height to 991.
Next, align the backdrop layer horizontally and
vertically in the frame. You can use the
alignment options from the Design section.
Now, select the backdrop layer and, from the
Effects section, give it a Layer Blur with a value
of 90.
Finally, change the layer's opacity to 0%.
Click the Present button now and interact with
the prototype. The details screen animates into
the screen beautifully. The button grows in place,
and the backdrop and details group expand from
the bottom of the screen.
Animating the transition to the list screen
You need to tweak one final thing to complete
the animation: When you click the Back button
on the details screen, there's no transition when
you return to the list screen.
Ideally, the animations should play in reverse
when you click the Back button and exit the
details screen. With Smart Animate, this is
relatively straightforward to do.
Return to the editor and click the Prototype
option. Now, select the link from the Back button
on the movie-details frame to the movie-list-
trending frame.
Change the animation to Smart Animate, use the
Ease Out interpolator. And give it a duration of
400 ms.
Now, when you interact with the prototype, the
animation reverses when you exit the details
screen.
Using animations thoughtfully
Great job building a fully interactive prototype!
Even with the minimal set of prototyping options
available in Figma, you can create sophisticated
and slick-looking animations and transitions.
Now is a great time to quote Uncle Ben: “With
great power comes great responsibility.”
Since Figma abstracts away a lot of the
underlying grunt work to make your animations
work, its simplified toolset can create some really
complex looking custom animations. But you
don’t necessarily have to create those complex
animations, just because they look cool.
Often, when building such transitions, you need
to be mindful of the engineering effort it
involves to bring them to life. You also need to
ask yourself if these transitions help the user in
any way, or if they’re just adding unnecessary
friction.
This finesse will come naturally with time as you
create more designs, do user testing and gather
feedback. For now, the prototypes you just
created strike the right balance between being
visually pleasing and being straightforward
enough to replicate in code.
In the next chapter, you’ll learn how to share
your designs with your team, gather feedback
and add some final polish.
Key points
You learned about the basics of transitions
and animations.
You learned about animation interpolators
and the different interpolators available in
Figma.
You created links between the different
screens and the bottom navigation targets.
You explored the Smart Animate feature in
Figma.
You used Smart Animate to create a
sophisticated-looking animation from the
list screen to the details screen.
Chapter 9: Feedback &
Testing
You finished the last chapter with a fully
functional prototype that not only looks great
but also supports interaction. You’re now at a
critical checkpoint in the design lifecycle. At this
point, your designs are detailed enough to
communicate the core intent and you’ve
structured your workspace so that introducing
new additions or making changes to existing
pieces won’t be a massive undertaking.
Now, it’s time to put the designs into the hands
of users and stakeholders, get feedback and
brainstorm about what you can improve. The
importance of cross-team collaboration is a point
I have been stressing over the previous chapters.
Now, it’s finally time to put it into practice.
This chapter will show you another reason
behind picking Figma as the design tool of
choice.
So far, you’ve explored two of the three pillars of
what makes Figma an excellent design tool:
1. Minimal toolset with powerful features that
make translating ideas into design easy.
2. Built-in prototyping tools allow you to bring
your designs to life with minimal effort.
The third pillar is rich collaboration tools that
make asynchronous communication and
collaboration in a distributed setting painless.
For designers who need to go from wireframes to
high-fidelity designs to a fully interactive
prototype, these features are compelling. They
not only eliminate the need to learn and switch
between three tools to close the product
development loop, but they also improve
productivity by leaps and bound.
This chapter is all about collaboration. The three
key things you’ll learn are how to:
Prep your files and prototypes and share
them with stakeholders.
Gather feedback and suggestions.
Incorporate feedback into the designs.
Now, it’s time to get started.
From the downloaded materials, open chapter-9-
starter.fig in Figma.The project file contains the
prototype, wireframes and designs in their final
form.
In this chapter, you’ll work with the Cinematic
App design and the Cinematic App Prototype.
Soliciting feedback
When you build a new product, getting feedback
early and often is key to ensuring you’re on the
right track. Without feedback, it’s easy to get
sidetracked and build something completely
different from the original idea.
Feedback brings diverse perspectives into the
design process and helps build inclusive and
accessible products.
Typically, when gathering feedback, you want to
include both the internal teams involved in
building the products and the users or customers
who’ll use the app.
Internal teams can bring their ideas and
constraints to the table early on. Involving real
users lets you observe any friction points in their
interaction with the product. Ideally, this
happens frequently and in different stages of
development, offering you the opportunity to
correct your course while the designs and ideas
are still flexible enough to change.
It’s also worth mentioning that nothing is set in
stone when figuring out how to best collaborate
with all stakeholders. The right method depends
on factors like the structure of your teams, how
communication works in the organization and
the test group’s availability.
Now that you know why collaboration is so
important, it’s time to prepare the prototype so
you can share it with other teammates and pass
it on for user testing.
Preparing the prototype for
testing
Open the Cinematic App Prototype page. You
need to check a few things before passing it
along to others, including:
The prototype uses an appropriate device
frame.
The prototype works as expected.
The link to access the prototype works and
you’ve enabled the correct permissions.
You’ll start with the frame.
Checking the prototype’s frame
First, click on the Prototype tab on the Properties
panel and ensure you’ve selected the iPhone 11
Pro Max under Device.
Adding a device frame to a prototype gives your
testers a better idea of what the app will look like
on a real device when it’s finished.
Figma lets you change the prototype’s
background to suit your presentation
arrangement, but for now, you’ll keep the
default: black.
Next, in the Prototype section, check that you’ve
set movie-list-trending as the starting frame.
This ensures that viewers who interact with the
prototype have the right starting point in the app
flow.
Now that you’ve checked these two settings,
you’re ready to share the prototype.
Sharing the prototype
Click the Present button to open the prototype in
a separate tab, then click Share Prototype. The
dialog that appears lets you modify the access
controls.
If you’re a part of a Figma team, all team
members have access to the prototype — and the
design files — by default.
Before anyone outside the team can access the
prototype, you need to invite them. To ensure
that people outside the team can’t make any
unwanted modifications to the designs, change
the access control to can view.
Another way to share prototypes is to create a
shareable link. Click Anyone with the link in the
share options, then click Copy link. This will copy
the link to the prototype to your clipboard.
Before sharing the link, check that it works. A
quick way is to open the link inside an incognito
browser window. If the prototype loads as
expected, the link works.
Sharing the design files
The prototype gives stakeholders an idea of what
using the app feels like. However, to gather more
fine-grained feedback about the design, such as
the color palette and typography, you need to
share the design files.
To do so, head to the Cinematic App page and
click the Share button in the toolbar. The
resulting share options dialog is similar to the
one you used to share the prototype.
When you share the designs with other designers
in the team, you probably want to allow them to
make modifications. To do so, change the share
setting to Only people invited to this file and
select the can edit option for the email of each
person you invite to the file.
Note: Figma’s free plan only allows two
users to have edit access to a file, which
should be enough for most side projects. To
add more editors to a file, you need to
upgrade to a paid plan.
Great job. You’ve now learned how to share your
designs and prototypes with others so they can
give you their thoughts and suggestions. Before
proceeding, you’ll look at how to change the
access controls for users you’ve already invited.
Moderating access
Moderating access to files is handy for revoking
access for someone who is no longer a part of the
project or modifying the access controls for
existing viewers and editors.
To change the access rights for the design file,
click the Share button to bring up the share
menu. Here, you can edit the access controls for
existing viewers and editors.
If needed, you can remove viewers and editors
from the files by selecting the Remove option
from the drop-down.
To modify the prototype’s access controls, click
the Present button to open the prototype in a
separate tab. Then, click the Share Prototype
button to bring up the share menu. The options
to modify viewers’ access and remove them are
the same as those you used to modify access for
the design files.
Leaving feedback on design files
Before you incorporate feedback into your
designs, consider how you can leave feedback
and suggestions to get a 360-degree view of the
process. Figma comes with a handy Comment
option that you can find on the toolbar or
activate by pressing C.
This changes your mouse pointer to a marker you
can place anywhere in the design file. When you
place the marker on the design by clicking the
canvas, a dialog box will open. This allows you to
leave comments, feedback or suggestions.
Incorporating feedback
Now, imagine that you’ve shared the file and
prototypes with your team and the test group.
It’s now time to incorporate their feedback into
your designs.
Depending on your team’s preferences and set
processes, you can use different tools and
platforms to collate and track feedback. Still, the
essence of the feedback process tends to stay the
same.
In this hypothetical scenario, the design has
received two pieces of feedback.
One comes from an actual user who interacted
with the prototype:
The other comes from an internal stakeholder:
If you recall, you built a filter feature in the
chapter on wireframing. However, you never
actually designed the feature — showing what
happens if you don’t tackle critical use cases and
iron out functional constraints during
wireframing. In this case, user testing and
feedback acted as a safety net, letting you
address the point of friction in a user’s flow.
Imagine if you just went ahead designing the app
according to your assumptions without involving
others in the decisions and without feedback
from the end-user. You’d still have a good
looking app, but it would have some massive
functional flaws.
That’s why collaboration, testing and feedback
are essential elements of a great design team’s
workflow. They not only help you build a better,
more inclusive product but also give you a
broader perspective into the problem you’re
solving.
First, you’ll work on the filter feature. When
that’s done, you’ll tackle the movie list iteration.
Designing the filter feature
The filter feature allows users to filter the main
feed by:
Genres
Release year
Director
Duration
Adding a launch button
First, you’ll add a button to launch the filter UI.
Open the Cinematic App page and, in the movie-
list frame, add an ellipse (O) measuring 60×60
with a white fill. Place it above bottom-nav at a
margin of 32 fromthe right and bottom.
Next, from the assets, add the filter_list_24px
icon above the circle and center the icon both
vertically and horizontally within the circle.
Group the circle and the icon and name it filter-
button.
Constrain this group to the bottom and right and
check the Fix position when scrolling option.
To check that the button stays anchored to the
bottom when scrolling, click the Present button
to open the prototype. When you scroll the movie
list, the button stays in its location.
Building the filter UI
Next, you’ll handle the filter UI. Before building
the filter sheet, you’ll build each component for
the individual filter criteria.
Open the Typography page and add a new text
layer (T) below the Genre Text layer and add the
text: Filter Text. Use the font Rubik with a weight
of Medium and a font size of 12.
Keeping the layer selected, click the Style button,
and create a new text style. Name it Filter Text.
Next, open the Components page and create a
new frame (F) measuring 242×92 and name it
Filter.
Add a new text layer (T) to this frame with the
text Action. Use the newly created Filter Text text
style for this layer.
With the layer selected, press Shift-A to create
an Auto Layout frame from the text layer. Name
it criteria.
From the Stroke section of the Properties panel,
give the criteria frame a stroke of width 2 using
the color style text/accent. Make sure you apply
the stroke to the Center.
Change the criteria frame’s corner radius to 5.
Next, from the Auto Layout properties section,
click the Alignment and padding option.
Change the Horizontal padding to 8 and the
Vertical Padding to 2.
Finally, change the text color to use the
text/accent color style.
Duplicate the criteria frame to the right with a
margin of 8 and change the text to Drama.
Repeat the process once more, changing the text
to Fiction. Group the three criteria frames and
name the group Filter/Unchecked.
You’ll need a checked variant of the filter criteria
as well.
Instead of building it from scratch, duplicate the
Filter/Unchecked group and rename it to
Filter/Checked.
Expand the group and select the three criteria
frames, then remove the stroke.
Add a fill to the three frames using the
text/accent color style.
The text is hidden at this point. To fix it, select
the individual text elements in the group and
change the color style to text/secondary.
Select Filter/Unchecked and create an Auto
Layout frame (Shift-A). Give it horizontal and
vertical padding of 0 and item spacing of 8. Do
the same for Filter/Checked.
Finally, select the Filter/Unchecked frame and
create a component by clicking the Create
component button on the toolbar or selecting the
group, right-clicking and choosing the Create
component option. Do the same for
Filter/Checked.
Building the filter sheet
To build the filter sheet, open the Cinematic App
page and duplicate the movie-list frame by
selecting the frame in the Layers list and
pressing Command-D or Control-D. Name the
frame movie-list-filter and delete filter-button
from the frame.
Select the frame and reduce its height to 896.
While you’re at it, lock the movie-list, bottom-
nav and status-bar frames since you don’t need
to modify them.
Next, add a rectangle (R) to the frame measuring
414×448 and place it right above the bottom-nav.
Give the rectangle a white fill and name it filter-
background.
Apply a Drop Shadow from the Effects options to
the filter-background with X and Y set to 0.
Add a text layer (T) on top of the filter-
background layer and give it the text Genres.
Apply the Section Header text style to this layer
and name the layer genres-filter.
Place it at a margin of 32 from the top and 24
from the left.
Next, from the Assets section, add a
Filter/Checked instance below the Genres text
layer.
Place it at a margin of 16 from the top and 24
from the left.
Adding the genres
Duplicate the instance and place it to the right at
a margin of 8. Change the text of the criteria
frames to Scifi, Period and Romance.
Swap the component to Filter/Unchecked.
Duplicate the unchecked criteria row and place it
at the bottom of the checked row. Give it a
margin of 12 from the top and 24 from the right.
Change the criteria text to Thriller, Horror and
Mystery.
For the final criteria, add another
Filter/Unchecked instance to the right at a
margin of 8 and change the first criteria to
Musical. Select the other two criteria and hide
them.
Now, select the genres-filter text and the four
filter instances and group them. Name the group
genres-category.
Adding filter rows
Add another text layer to the bottom of the
genres-category with the text Release Year and
Section Header text style. Repeat the steps you
followed for the genres filter criteria to create the
filter rows, as shown below.
The filter UI will have two more categories,
Directors and Duration. Repeat the steps you
followed this far to create these two categories,
as shown below.
Feel free to refer to the final project if you need
help.
Finishing up
For the final polish, select the filter-background
and double-click it to enter the vector editing
mode.
Select the top right and top left corners, hold
Shift and click each one. Give the selected
corners a corner radius of 16.
Finally, from the Assets section, add the
expand_more_24px icon and place it on the top-
right of filter-background at a margin of 16 from
the right and the top.
Here’s how the final version looks:
Group all the elements that make up the filter UI
and name the group filter-sheet. Constrain the
filter-sheet to the center and bottom and check
the Fix position when scrolling option.
Great job designing the filter UI. You’ve just
solved one of the app’s pain points and you’ve
improved the user experience considerably in the
process. Next, you’ll iterate on the movie list
screen and create a new variation to incorporate
the PM’s suggestion.
Creating the movie list iteration
Your next goal is to tackle the feedback left by
one of your teammates. Here’s the comment:
In the new movie list variation, you’ll emphasize
the immersion aspect of the feedback which will
also take care of making the screen stand out
more. To give you a sneak peek, here's what the
new version will look like next to the current
version.
Lucky for you, the iteration will be relatively
quick because of the way you’ve structured your
project so far. You’ll leverage components, styles
and existing layouts to make your changes.
Inside Cinematic App, add a new iPhone 11 Pro
Max frame (F) to the canvas and name it movie-
list-immersive.
Copy the backdrop group from the movie-details
frame and paste it into the new frame.
Change the dimension of the backdrop group to
414×896.
Next, select the backdrop-gradient and movie-
image layers within the group and change their
dimension to 414×896. Center the backdrop-
gradient and movie-image layers horizontally
and vertically and center the backdrop layer
horizontally and vertically within the frame.
Here’s how the final version should look:
Next, copy the bottom-nav and the status bar
instances from the movie-list-filter frame. If you
locked them earlier, you’ll have to unlock them
first. Finally, paste them into the movie-list-
immersive frame.
The status bar and bottom navigation now retain
their positions.
To prevent unintended modifications, lock the
bottom-nav, status bar and backdrop layers.
Upgrading the movie card
Now, for the fun part. Create a rectangle (R)
measuring 300×579 in the frame. If the rectangle
isn’t visible, check your Layers panel and ensure
the rectangle is above the backdrop layer.
Give the rectangle a corner radius of 24 and a
white fill and place it below the status bar.
Give it a margin of 80 from the top and center
the rectangle horizontally using the alignment
options on the Properties panel’s top. Name this
rectangle movie-card-background.
Add another rectangle (R) measuring 238×343 to
the frame, above movie-card-background. Give
the rectangle a corner radius of 24.
Place it at a margin of 31 from the top, right, and
left.
Give this rectangle an Image fill. Select the Birds
of Prey movie poster from the movie-images
folder that came with the downloaded files.
Name this layer movie-image.
Good going! Next, add a text layer (T) to the
frame with the text Birds of Prey. Place it below
the movie-image layer at a margin of 20 from the
top and apply the Title text style. Center the
layer horizontally. Name the layer title.
Now, copy the movie-info and genres instances
from the movie-details frame and paste them
into the movie-list-immersive frame. Center both
the layers horizontally.
Place movie-info below the title layer with a
margin of 16 from the top. Place the genres
instance below the movie-info layer with a
margin of 16 from the top.
For the final piece, add a rating instance below
the genres instance from the Assets section.
Apply the text/muted color style to the rating
text and center it horizontally with a margin of
20 from the top.
Group all the elements that make up the movie
card and name the group movie-card.
Adding finishing touches
Finally, to add the finishing touch to this list,
duplicate the movie-card group towards the right
at a margin of 42.
When you do so, the duplicated instance will
jump out of the movie-list-immersive frame.
Notice the same on the Layers panel.
To fix it, in the Layers panel, simply drag the
duplicated instance back into the movie-list-
immersive frame, and you’re good to go.
Repeat the same process and duplicate a movie-
card instance to the left at a margin of 42. Group
the three movie-card instances and name the
group movie-list.
This is how the final version will look:
Great job! The final designs look great at this
stage, but more importantly, you’ve fixed the
issues with the functionality and improved the
user experience. In the real world, the feedback
and testing phase in a design cycle takes more
time due to the nature of the process and
multiple moving pieces, but this simulated
scenario gives you a sense of the process.
Key points
You learned how to prepare your designs
and prototypes for sharing.
You learned about the different
collaboration tools Figma offers.
You learned how to provide design feedback
using the comment tool.
You then incorporated user feedback to solve
a functional issue.
You finally incorporated an internal
suggestion to iterate on the movie list screen
and make it more immersive.
In the next chapter, you’ll build a design system
from the project’s different elements and
prepare to share it widely within your
organization.
Chapter 10: Design
Systems
Over the course of the past nine chapters, you’ve
gone through an entire design cycle, building out
a fully-fledged mobile app experience and
picking up the tools of the trade along the way.
You looked at existing apps for inspiration and
uncovered their design foundations. You also
discovered some neat patterns to address
interface challenges, like navigation and forming
an informational hierarchy.
Using what you learned, you built out a prototype
of your designs and used components to refine
it. While you did all that. you also introduced a
lot of flexibility in the process.
In this chapter, you’ll connect everything you’ve
learned so far to understand how that
information comes together in a design system.
Understanding design systems
At its most primitive level, a design system is
simply a collection of components you can reuse
and recombine to design apps built according to
a standard.
Think of those components like Lego bricks,
which you can combine in multiple ways to build
new experiences.
Don’t confuse design systems with style guides
and UI kits, which are collections of pre-styled
templates to use for building screens. They focus
on a much higher level of abstraction.
Design systems go much deeper, bringing
coherence to an organization’s products. Think
about it this way: In a large company, multiple
designers work on the same product and
features. When each designer tackles the project
in their own unique way, it results in unwanted
variations and inconsistencies in different
features of the same product. That becomes
confusing for users.
Following a guideline and reusing the same
fundamental principles across features and
screens brings cohesion and consistency, not
only within a single product’s features, but also
across multiple products offered by the same
company.
An analogy that might resonate well with
engineers is to think of it like extracting core
pieces of business logic into reusable libraries or
modules and leveraging them when building new
features for your products.
Just like coding convention and style guidelines,
how you build a design system varies across
different companies and teams to suit their
unique needs. The process evolves over time.
Goals of a design system
Although design systems vary dramatically from
company to company, there are some common
goals they all try to meet:
Removing inconsistency: By breaking
designs down to their most fundamental
pieces, like reusable text, color styles and
components, design systems ensure that the
features and experiences you design have a
consistent visual look and feel.
Saving time: By investing once in building
reusable components, future iterations
become significantly faster than building
everything from scratch.
Introducing fluidity in the design process:
Design systems are layered and
interconnected. You use typography and
colors to create components, and you use
components to create screens. This layering
makes revisions and future tweaks a breeze
compared to making a change in multiple
places, one at a time.
Making collaboration and handoff seamless:
By establishing consistency in lower-level
details like typography, colors and
components, design systems ensure that
different teams can work on different parts
of a product simultaneously without
deviating from the brand’s essence.
If you think about these goals for a minute, you
might realize that Cinematic, in the state you left
it in Chapter 9, “Feedback & Testing”, already
achieves most of them. You’ve been building a
design system all along! Didn’t see that coming?
This chapter will zoom out and help you connect
the dots.
Cinematic has already decomposed colors and
low-level typography details into different pages
as reusable styles for your components to use. All
it lacks is some cleanup and documentation.
You’ll fix that next.
Organizing the colors
Download this chapter’s materials, then open
chapter-10-starter.fig in Figma. This file contains
the final states of the components, typography
and colors. You’ll start by organizing and
documenting the colors.
Open the Colors page. Add a new frame on this
page measuring 458×699. Name the frame
Palette and give it a fill of #F1F1F1. This is where
you’ll organize your color swatches.
Now, add a new text layer with the text Colors
and give it a text style of Title.
Place this layer at a margin of 16 from the top
and 32 from the left.
Next, move the circle representing the
button/primary swatch and place it below the
title at a margin of 32 from the top and left.
Now, add a text layer to represent the color’s hex
code, which you find by clicking the Edit Style
option next to the color style’s name.
Give this text layer a font size of 9 and use Chivo-
Regular as the font. Place it at a margin of 36
from the left while aligning it horizontally with
the circle.
Next, add another text layer to represent the
color style name. Use the Section Header text
style on this layer and place it at a margin of 56
from the left.
Select the three layers you just added and
horizontally align them. For convenience, group
them.
Now, move the circle representing the
button/secondary swatch and place it below the
group you just created at a margin of 24 from the
top and 32 from the left.
Repeat the steps above to add a text layer for the
hex code and another one for the style name.
Once done, tackle the remaining nine swatches
in the following logical order
Text Primary
Text Secondary
Text Accent
Text Muted
Navigation Active
Navigation Inactive
Rating Positive
Rating Neutral
Gradient Poser
Here’s how the final version should look:
Now, delete the old palette artboard. By
organizing and documenting your color palette,
you’ve made it easier for your teammates to
glance over the colors and their respective hex
values. This type of documentation is especially
beneficial for engineers, helping them use the
correct colors when they build these layouts in
code.
Now that you’ve cleaned up the colors page,
you’ll tweak the Typography page and make it a
bit more informational.
Improving the Typography page
Open the Typography page and add a new frame
measuring 397×774.
Next, add a text layer to this frame with the text
Typography and give it a Title text style. Place
this layer at a margin of 16 from the top and 32
from the left.
Now, you’ll add information about each text style
on this frame, namely the:
Font family
Font weight
Font size
Start with the Rating text style. Add a new text
layer to the frame and enter the Rating text
style’s family weight and font size:
Note: Find information about each text style
by clicking the Edit Style button in the
Properties panel on the right.
Next, place the Rating text style to the right of
the new text layer at a margin of 68 from the left.
Group the two layers.
Now, repeat the same for the Title text style. Add
a new text layer for the style information and
place it below the group you created earlier at a
margin of 24 from the top and 32 from the left.
Feed the style information into the text layer,
then place the text style to the right of this layer.
Similarly, tackle the remaining styles. This is how
your typography layer will look when you’re
done:
The typographic scale is now much more
informational. The documentation eliminates
the need for other teammates to inspect each
style manually to figure out its specifics.
Cleaning up the Components page
For the final bit of cleanup, open the
Components page. There are a few things to
improve here.
First, the icons. The names of the icons and the
context in which they’ve been used in the project
are confusing.
You’ll fix that now. Change the name of the icons
as follows:
bookmarks_24px to icon-watchlist
remove_red_eye_24px to icon-watched
local_activity_24px to icon-top-rated
whatshot_24px to icon-trending
filter_list_24px to icon-filter
expand_more_24px to icon-collapse
Here’s how the Layers panel for the icons should
look now:
Now, anyone can see at a glance how to use the
icons.
Documenting the filter and genre tags
Next, you’ll work on the filter and genre tags.
Visually, they’re similar. Someone working with
these components on another project or feature
might accidentally use the wrong one. To help
convey the components’ intents, you’ll add
documentation that will show up in the Assets
section.
Select the Filter/Unchecked component. A
description field will show up on the Properties
panel on the right:
In the description field add "Filter criteria in
selected state" for the selected state component.
And add "Filter criteria in unselected state" for
the unselected state component, as shown below.
Now, if you hover over the component in the
Asset section, you’ll notice a tooltip that gives
more context about the component:
Next, add "Genre chips" to the documentation
field for the genre component as well.
Your next goal is to look at how to standardize
the buttons.
Converting buttons to components
As a final bit of cleanup for the project, you’ll
extract the buttons the prototype uses, convert
them to components and use the components
instead.
Start by creating a new frame measuring
422×221 on the Components page. Name this
frame Buttons.
Now, head to the Cinematic App Prototype page
and select the Add to Watchlist and Mark
Watched buttons. Then, cut them
(Command/Control-X) and paste them
(Command/Control-V) into the Buttons frame.
Convert each of them into a component by using
the Create Component option from the top
toolbar.
Here’s how your button’s frame should look:
Now, use the newly created component in the
Cinematic App Prototype and the main
Cinematic App pages. Simply drag the relevant
buttons into the frame, center them horizontally
and place them at a margin of 32 from the
bottom of the frame.
Now, to complete the design process, you’ll look
at how Figma takes care of developer handoff.
Handling code generation & asset
exports
When building screens in code, developers target
a multitude of device sizes and resolutions. This
is difficult because they have to fit the same
amount of information into a variety of screen
sizes.
One of the things that’s often a mundane, yet
essential, part of the process is getting the
correct assets and imagery for a specific
resolution and device scale.
Figma makes it relatively straightforward to
export assets, like icons, in varying resolutions.
You can export any UI element from Figma, but
in this case, you’ll look at the icons.
Exporting icons
Go back into the Components page and select the
icons from the Icons frame.
On the Properties panel on the right, you’ll
notice a section called Export.
Click the + button to add an export setting.
The export settings have three options:
Scale: Defines how big or small the exported
asset is. Use x as the suffix of a value to
denote a multiplier, h for fixed height or w
for fixed width.
Suffix: Denotes the scale at which you’ll
export the asset: @2x, @3x, etc.
Filetype: The file format you’ll use to export
the asset: PNG, SVG, JPG, etc.
While developers who have access to the design
file can configure the export settings and obtain
the assets, you’ll make their job easier by
preconfiguring the settings as per their
requirements:
For Cinematic set the icons to 1x, 2x, and 3x
scales in the PNG format.
Generating code for UI elements
Another helpful feature from Figma is code
generation for UI elements. Select any UI
element, like components, shapes, frames or
groups, and click the Inspect tab in the
Properties panel on the right:
This will show you some reference UI code for the
selected element:
Figma offers reference UI code for iOS, Android
and the Web (CSS only). Note that the code isn’t
production-ready by any means. It only contains
visual information like width, height, margins
and spacing.
You’ll often need to do some tweaking to make
that code scale across device sizes. Nevertheless,
it’s a convenient way to quickly export the visual
boilerplate when building the first version of the
product in code.
Where to go from here?
Congratulations, with the tweaks and edits you
made, your project is far more documented and
flexible than before. Not only did you decompose
your designs into their logical layers, but you also
conveyed more information about lower-level
details like colors and text styles.
Although the project you worked on targeted a
relatively small app, the methods you learned up
will scale along with the complexity of your
projects.
Larger apps that offer more features will have
more flows to think about, more iterations to
perfect and more components to build.
They’ll also have more moving pieces and
conventions to follow that will change as you
switch between projects and teams. Still, the
process you work through will essentially boil
down to the same fundamental methods you
worked through in this book.
Before you wrap up this chapter, I’d like to point
you to an extremely helpful resource that you can
look to for inspiration and guidance when
designing a new product. It’s a publication called
Design Systems (http://designsystems.com) from
Figma that dives into each aspect of building a
design system including colors, typography and
iconography.
The best part about this publication is that it has
a repo with design systems from popular
products from GitHub, IBM, Zendesk and more
publicly available for you to look at.
While not all of them are built on Figma, they
offer a glimpse into how large organizations
think about design and leverage their design
systems. These examples show how a design
system can effectively organize a company’s
design strategy, but also how different and
unique design systems are.
Key points
You learned about what design systems are.
You covered the steps you took so far toward
creating a design system.
You improved the typography and colors
section of the design system with helpful
documentation.
You explored Figma’s assistive developer
handoff features.
In the next chapter, you’ll go over a quick recap
of the book and learn about where to go next
with the skills you’ve acquired.
Chapter 11: Recap &
Next Steps
Over the course of the last ten chapters, you’ve
gone from playing with basic shapes to building
a full-fledged design system that acts as a
foundation for your movie app. You learned
about low-level design concepts like colors and
typography and you built style guides for them.
You realized the significance of flexibility and
modularization in design and leveraged what you
learned to build a component library to serve as a
foundation for designing your app’s screens.
This has been a long journey, and you’ve added
many essential skills to help you in your journey
as a designer. This new information will come in
handy when working on a new project, helping
you collaborate more effectively and
empathetically with your design team.
Before finishing the book, take a moment for a
quick recap of the previous chapters and to get
some ideas about where to go next with your
new-found skills.
Recapping the book
You'll now Look back over everything you
learned. You can also use it in the future, to help
you find the right chapter if you want to refresh
your memory on a specific subject.
Chapter 1: Book Overview & App Preview
The book started with a quick introduction to
design and its importance in building an
inclusive and satisfying product. You set up your
Figma account, then got a high-level overview of
the app you’d build. You finished the chapter by
adding some interactions to a prebuilt app
prototype.
Chapter 2: Workspace Tour & Figma
Fundamentals
Chapter 2 kicked off with a quick walkthrough of
the Figma interface and some fundamental
concepts to help you work with the tool. You
played with basic shapes and styled them with
fills, strokes, gradients, then learned about
effects. You then covered layers and the
alignment options available in Figma and used
that information to build the sign-in screen for
the app.
Chapter 3: App Teardowns
Chapter 3 took a slight detour to show you how
to build an eye for good design. You learned how
to boil screens down to their simplest building
blocks and realized that most screens are built
using just a handful of elements. It’s the
variation in placement and data that creates
unique experiences. You compared how two
popular apps, Airbnb and PocketCasts, leverage
reusable components with variations in data to
create drastically different experiences in their
discovery screens.
Chapter 4: Wireframing & Screen Layout
Chapter 4 introduced you to the concept of
wireframing and its importance in a design cycle.
You learned how to reduce the app’s essence into
key intents and components. You then used low
fidelity wireframes to iterate on those intents.
You got your first glimpse at the importance of
reusability and built a component to create
wireframes for the app’s key screens.
Chapter 5: Reusable Elements & Data
In Chapter 5, you built on what you learned in
the previous chapters to decompose your designs
into small, flexible and reusable components.
You then leveraged these components to build
out your app’s different screens. You also learned
how to organize your designs using pages in
Figma and how to use existing design libraries
and plugins to make the design process easier.
Chapter 6: Typography
In Chapter 6, you dug deeper into the lower-level
details of design, typography. You learned about
the fundamentals of typography: fonts, typefaces
and weights. You then used that information to
build a typographic scale for your app and
incorporate it into your app’s design.
Chapter 7: Colors
Chapter 7 continued with the lower-level details
of design by diving into colors. You learned about
the basics of color theory including what hue,
saturation, contrast are and how they make
designs more accessible. You then built the app’s
color styles and incorporated them into the
design.
Chapter 8: Transitions & App Flow
In Chapter 8, the app came to life with
transitions. You played with the different
transition and animation options available in
Figma to build a fully interactive prototype. You
created different screen destinations within the
app and handled the various interaction states
within the app.
Chapter 9: Feedback & Testing
In Chapter 9, you handed the designs to your
team for feedback and testing. You learned about
the collaboration features available in Figma and
you incorporated the feedback left by various
stakeholders, including a filter feature and a new
iteration for the movie list UI.
Chapter 10: Design Systems
Finally, in Chapter 10, you learned about design
systems and realized how everything you’ve done
so far worked toward building a design system.
You learned about the importance of
documentation and improved your design system
with helpful documentation. You finally looked
at more elaborate and comprehensive design
systems built for large scale projects.
This brings you to this chapter. You’ve learned
quite a lot, so take a step back to reflect upon
how much you’ve grown throughout the last ten
chapters. The skills you’ve picked up in this book
will help you build inclusive products that look
great.
Design is not just about the look and visual
appeal of an app, but also about the emotions it
invokes and how it simplifies a problem. Building
something that looks great while being easy to
understand and to adopt by a large audience is
no easy job.
With the skills you’ve covered here, you’ll be able
to look deeper at problems in your app and ask
questions to solve those problems at a more
fundamental level.
More importantly, these skills give you the
language to communicate and better collaborate
with your design teams. You’ll have more insight
into their process and be able to contribute
toward the ideation of the product. As an
engineer, you can use your knowledge to identify
constraints early on and bring your perspective
to the process.
Where to go from here?
With your shiny new design skills, the world is
your oyster. You can take on new projects and
crank their polish up to 11. But, if you’re keen on
expanding these skills, I have a few
recommendations for you:
“The Design of Everyday Things” by Don
Norman: Consider this the bible in the world
of design, the book most designers swear by.
This book takes examples from real-world
objects, like doors and light switches, to
uncover their usability issues and how you
can build products that effortlessly guide
their users to the correct actions.
“Thinking with Type” by Ellen Lupton: This
is a personal favorite because I’m a sucker
for great typography. This book goes deep
into typography and discusses aspects like
font combination aesthetics. The best parts
about this book are that it’s exercise-
oriented and it goes into the history of
typography.
“Graphic Style: From Victorian to Hipster”
by Steven Heller and Seymour Chwast: This
book is like a historical archive or a survey of
different design styles spanning decades.
It’s full of illustrations and gives you an idea
of how modern design is, in many ways,
influenced by history and global cultures of
the past.
Conclusion
We hope this book has helped you add many
essential design skills. You’re well on your way to
designing your own apps that work great, look
even better, and are a delight to use.
The new information you have learned will come
in handy when working on a new project,
helping you collaborate more effectively and
empathetically with your design team.
If you have any questions or comments as you
work through this book, please stop by our
forums at http://forums.raywenderlich.com and
look for the particular forum category for this
book.
Thank you again for purchasing this book. Your
continued support is what makes the books,
tutorials, videos and other things we do at
raywenderlich.com possible. We truly appreciate
it!
Happy designing!
Prateek, Luke, Lea, Sandra, and Matthew
The App Design Apprentice team