Zippex Design
Pillar · parity

Native parity

Same feel on every engine. Web animates with Framer Motion; Zippex + Driver animate with Reanimated. The tokens, curves, springs, timings, are identical. Toggle to see each side.

One token, two engines

The values match exactly, so the motion feels the same on iOS, Android, and web.

Ease-out curve
ease: [0.23, 1, 0.32, 1]
Snappy spring
{ type: 'spring', stiffness: 500, damping: 30 }
Press feedback
whileTap={{ scale: 0.97 }}
Reduced motion
useReducedMotion()

The rule

Define the token once; mirror it per platform.

A motion token is a contract, not an implementation. Out = [0.23, 1, 0.32, 1] means the same thing whether it’s a Framer ease array or a Reanimated Easing.bezier. Match the numbers and the feel transfers, no shared package required.