Approach
Opinions we can defend.
Every spacing value, timing, and alignment in a good interface is a choice someone can defend. These are the arguments we keep having — written down so we stop having them twice.
01
Motion is a sentence, not a decoration
Every animation in an interface makes a claim about time. A loop claims something is ongoing. A finite run claims something just happened and is over. A gesture — a finite run, then a held rest, then a repeat — claims something is being performed, deliberately, again.
Mixing those up is the most common way interface motion goes wrong, and it almost never gets diagnosed as a motion problem. A character who loops a reaction reads as malfunctioning, not expressive. A celebration still playing twenty minutes after the news is not happy — it is stuck. The fix is rarely a better curve. It is deciding which of the three sentences you meant.
The practical consequence is that we treat the gap between movements as designed material. Stillness is what makes the moving legible. If the rest is shorter than the motion, the pause reads as a stutter in a loop rather than as something having finished.
02
Measure before you believe your eyes
What a screen looks like it is doing and what it is actually doing come apart constantly. Confident description is how bad fixes get shipped. We have watched a sequence read unmistakably as one action, written that reading into a code comment, designed a fix around it — then measured, and found the artwork was doing something else entirely and the fix would have introduced a visible break.
So the rule is that a claim about what an interface does has to survive a measurement. Not a screenshot and an opinion — a number. Pixel distances, frame timings, the actual travel of the actual element.
This is slower for about a day and faster forever after, because the alternative is a class of bug that is invisible in review, survives in comments, and gets inherited by whoever touches the file next.
03
A system the build enforces
A design system that lives in a document is a suggestion. Ours live in one file of tokens, and the build fails on a raw colour value anywhere else in the codebase. That single rule does more for consistency than any amount of documentation, because it is the only version that survives a deadline.
The same applies to the reasoning. Tokens record what a value is; they do not record why. So the rationale is written down next to them — which alternatives were rejected, and what broke last time. A team that knows why the accent is one colour will not quietly add a second one.
The test of a system is the tenth screen, not the first. Anything can look coherent once.
04
Restraint is the technique
One saturated accent against neutrals. Two accents mean neither is one. This extends past colour: two typographic weights in a single headline does most of the work that makes type feel art-directed, and a generous corner radius held consistently does more than a dozen bespoke ones.
Density is the same argument. Nearly every interface we admire does less per screen than the thing it replaced. When a section feels crowded, the fix is to remove an element, not to shrink the type until it fits.
Restraint is not minimalism. Burying every function behind one gesture looks minimal and is not simple. The goal is that the most important thing on a screen is also the most obvious thing on it.
05
Built for the platform, including the people it adapts to
We build for Apple platforms specifically, and we use what the platform gives us rather than reimplementing it worse. Springs for anything a finger touches, because they are interruptible and carry velocity. Feedback on press rather than on release. Animation confined to transform and opacity so nothing stutters under load.
Accessibility is part of that, not a pass at the end. Reduced motion is a real setting that real people turn on, and honouring it means offering a gentler equivalent rather than nothing at all — a cross-fade where a slide would have been, not a dead screen. The same goes for reduced transparency, increased contrast, and larger type: a layout that breaks when someone scales their text was never finished.
Working on something?
We are selective about what we take on. We are direct about what we think. Both save everyone time.