UX Playbook

Documentation

Just like any other design work, animations need to get handed over to development at some point. The most straight forward way is to hand over a video, but there is a big chance a lot of details will be missed. After all, it's the combination of property changes, timings, and easing curves that make the animation. If not implemented correctly, the animation will feel "off" and degrade the user experience instead of enhance it.

There are multiple methods to hand over your animation. We've highlighted a few.

Method 1: Table with animation properties

This is the most common one. For this method you’ll need to reserve some time in your project, although when you get the hang of it you’ll discover it can be done quite fast. All properties of a single animation triggered by a single event (non-realtime interactions) are listed in a table view. It works best in combination with a video of the single animation. E.g. For a button with an arrow inside, where the arrow moves and where the button changes color on hover, you’d create a table for the hover event and all elements and its properties.

Event: Hover inside

Element Property Begin value End value Delay Duration(sec) Ease
Button Shadow Y 0 4px - 0.3 0.25, 1.00, 0.25, 1.00
Shadow Blur 0 20px - 0.3 0.25, 1.00, 0.25, 1.00
Arrow X 0 10px - 0.3 Spring (150, 15, 0)

90% of the time you can copy the values from your animation tool. But in the case of X and Y transitions, the position is relative to the component it’s placed inside of, which could differ from the way it’s built in code. For this reason, the default value is always 0.
This method perfectly fits into the atomic design process. For instance, if you find yourself using the same ease a lot of the time, you can turn it into a reusable atomic and give it a label, such as “default curve”.

Pros

Cons

Method 2: Component sheet combined with video export

Component based design is the practice of splitting certain UI elements into parts with clear names. This could be used for making your animations specifications. For example: element a will go to a second state when the item will be pressed. The second state will go back to the first state after 2 seconds.

Sample animation documented into a component

Master values

Master values could be set in the early state of the project and documented in confluence or another file. You can give names to certain to certain objects, timeslots, HEX colors etc. In this example‘defaulttiming’ has been set as a master value in a file that overrules all the other components. When default timing changes from, let’s say 0.3 seconds to 0.2 seconds, this will affect all the components that have elements with the‘defaulttiming’ element in it.

Pros

Cons

Method 3: Visual Timeline

This one is probably the most time consuming to make, but at the same time offers a very clear and visual dissection of the animation. What you do is create a video of the animation your want to specify, but instead of adding a table underneath it, you make a visual timeline part of the video highlighting exactly which elements animate. It’s basically like making a screen recording of your After Effects or Principle time line.Unlike the table with animation properties, this method is very suitable for realtime interactions. Instead of showing a timeline, just show a scroll/drag line(muchlike Principle drivers).

What type of project

This method is ideal for medium to large projects where animation plays an important role.

Pros

Cons

Reference: http://uxmisfit.com/2017/04/23/motion-design-specs-how-to-present-animations-and-interactions-to-developers/

Other methods

Sit next to developer

Working closely together with developers is always a good practice. Also physically siting in eachother vicinity makes it easy to collaborate, ask for advice and discuss various options early on. Anything you can agree to together without documentation saves you tons of time!

Code snippets (e.g. Framer)

If you work in a tool like Framer, you can simply hand over the code.

Mockup video

Simply make a recording of your animation and give that to the developer to illustrate the desired end result.

Create animation yourself

Why let let the developer do all the work when you can do some yourself? Some tools like Lottie allow you to export animations directly to code.

Show a benchmark

Why reinvent the wheel when there are already tons of awesome animations out there. Sometime it’s enough to simply refer to an existing animation. Suitable for projects with little budget and time.

Ask a developer

It's important to include development in this process from the beginning, and not simply hand over your specs. The feasibility of animations heavily relies on technical frameworks and development capacity.

It's always useful to talk to a developer. They can give you insights on how it will be built and what is within the realm of possibilities to realise. It will save you a lot of time by checking this upfront and prevents disappointment later on.