01
드래그할 때 손가락보다 늦게 따라오는 일정 카드
문제
- 사용자는 여러 비행·관광 일정을 손가락으로 끌어 원하는 순서에 놓아야 했습니다. React Native에는 이 흐름을 그대로 제공하는 Drag & Drop API가 없어 제스처, 카드 위치 계산, 목록 순서 변경을 직접 연결해야 했습니다.
- 이 과정에서 드래그 좌표가 바뀔 때마다 목록 전체가 다시 렌더링되면 카드가 손가락 움직임을 늦게 따라왔습니다.
해결
PanResponder로 손가락 이동을 추적하고 각 카드의 layout을 측정해 어느 위치로 옮길지 계산했습니다. 이동 중인 카드는 floating layer에서 따로 그려 목록 전체가 제스처 좌표를 따라 갱신되지 않게 했습니다.- React DevTools Profiler로 같은 동작을 전후 비교한 뒤
React.memo와 Zustand selector를 적용했습니다.
확인
같은 로컬 동작을 전후 비교한 결과, React DevTools Profiler의 total commit duration은 211.5ms → 72.9ms, 평균 commit duration은 17.6ms → 6.6ms로 줄었습니다.