home / skills / dylantarre / animation-principles / timing-calibration
This skill helps you calibrate animation timing to feel natural and consistent across UI, ensuring faster feedback and smoother transitions.
npx playbooks add skill dylantarre/animation-principles --skill timing-calibrationReview the files below or copy the command above to add this skill to your agents.
---
name: timing-calibration
description: Use when animation speed feels wrong—too fast, too slow, or inconsistent
---
# Timing Calibration
Get animation speed right using Disney's timing principles.
## Problem Indicators
- "Too slow" or "too fast" feedback
- Animations feel inconsistent
- Similar actions have different speeds
- Users wait for animations
- Motion feels robotic or unnatural
## Diagnosis by Principle
### Timing
**Issue**: Duration doesn't match action type
**Fix**: Micro-interactions: 100-150ms. Transitions: 200-400ms. Complex reveals: 400-600ms. Never exceed 1s for UI.
### Slow In and Slow Out
**Issue**: Linear timing feels mechanical
**Fix**: Use easing. Ease-out for entrances (fast start, soft landing). Ease-in for exits (soft start, quick finish).
### Arcs
**Issue**: Straight-line motion at wrong speed
**Fix**: Curved paths need more time than straight paths. Increase duration for arc motion.
### Staging
**Issue**: Multiple speeds compete
**Fix**: Similar elements should animate at similar speeds. Create timing harmony.
### Secondary Action
**Issue**: Secondary animations at wrong relative speed
**Fix**: Secondary actions should be slightly slower than primary. Creates natural hierarchy.
## Timing Scale
| Category | Duration | Use For |
|----------|----------|---------|
| Instant | 0-100ms | Hover states, micro-feedback |
| Fast | 100-200ms | Buttons, toggles, small elements |
| Normal | 200-300ms | Cards, modals, most transitions |
| Slow | 300-400ms | Page transitions, large elements |
| Deliberate | 400-600ms | Complex reveals, onboarding |
## Quick Fixes
1. **Start with 200ms** - Adjust from there
2. **Larger elements = longer duration** - Size affects perceived speed
3. **Distance affects timing** - Longer travel = longer duration
4. **Create a timing scale** - Use 3-4 consistent values
5. **Test at 2x speed** - If too slow works, use it
## Troubleshooting Checklist
- [ ] Is duration under 400ms for most UI?
- [ ] Do similar elements have similar timing?
- [ ] Is easing applied (not linear)?
- [ ] Does larger movement have longer duration?
- [ ] Test: Speed up by 30%—still readable?
- [ ] Test: Slow down by 30%—feels sluggish?
- [ ] Are users waiting for animations?
- [ ] Compare to platform conventions (iOS/Android/Web)
## Code Pattern
```css
:root {
/* Timing scale */
--duration-instant: 50ms;
--duration-fast: 150ms;
--duration-normal: 250ms;
--duration-slow: 350ms;
--duration-deliberate: 500ms;
/* Easing */
--ease-out: cubic-bezier(0, 0, 0.2, 1);
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
}
/* Size-aware timing */
.small-element { transition-duration: var(--duration-fast); }
.medium-element { transition-duration: var(--duration-normal); }
.large-element { transition-duration: var(--duration-slow); }
```
This skill helps you tune animation speed and rhythm using Disney’s timing principles. It identifies common timing problems—too fast, too slow, inconsistent—and gives concrete duration ranges, easing guidance, and quick fixes to make motion feel natural and readable.
The skill inspects animation durations, easing curves, travel distance, and relative timing between primary and secondary actions. It maps issues to principles like Timing, Slow In/Slow Out, Arcs, and Staging, then recommends duration bands, easing choices, and size-aware adjustments. It also offers a simple timing scale and a troubleshooting checklist you can apply in CSS or animation tooling.
What duration should I use for small UI feedback?
Use 100–150ms for micro-interactions like hover or press feedback.
When should I exceed 400ms?
Only for complex reveals or onboarding steps where deliberate attention is needed; keep most interactions under 400ms.