배민 리브랜딩에 맞춘 새 모션 시스템의 핵심으로, cubic Bézier와 duration으로 미리 정해두는 easing 대신 mass·stiffness·damping의 물리 모델로 매 순간 계산되는 spring을 소개한다. 왜 interactive UI에서 spring이 더 자연스러운지, 그리고 그 도입을 무엇이 막아왔는지를 함께 짚는다.
핵심 포인트- easing은 네 control point의 cubic Bézier로 시간-값 변화를 미리 정의하는 반면, spring은 질량·강성·감쇠와 cosine wave·exponential decay로 easing으로 만들기 어려운 궤적과 지각적 종료 시점을 만듦
- easing은 drag가 끝나거나 목표가 바뀌면 이전 속도와 무관하게 처음부터 재생돼 손가락과 UI가 분리되지만, spring은 gesture의 initial velocity와 진행 중 animation의 위치·속도를 이어받아 연속적 방향 전환에도 즉시 반응
- mass·stiffness·damping이라는 engineer 언어가 duration 기반 timeline에 익숙한 디자이너의 mental model과 어긋나고 iOS·Android·web parameter 규격도 달라 도입이 늦었으나, Apple의 duration·bounce API와 Material 3 Expressive가 진입 장벽을 낮춤
- 공통 spring engine·authoring tool에서 duration·bounce token을 만들어 SwiftUI·UIKit·Compose·web으로 변환하되, 구형 API·종료 threshold 차이 때문에 동일 물리의 Kotlin engine도 구현하고 component에 interaction을 내장
왜 읽나정해진 시나리오 없는 interactive 제품에서 끊김 없는 움직임을 원하는 디자이너·엔지니어에게, spring의 수학적 원리와 플랫폼 간 handoff까지 아우르는 모션 시스템 설계.