01 · Problem
React Native에서 일정 Drag & Drop을 직접 구현해야 했고, 드래그 상태 변경이 넓게 전파되면서 렌더링 시간이 증가했습니다.
여행 일정 생성과 편집을 모바일에서 직접 조작할 수 있게 만든 React Native 플래너
React Native에서 일정 Drag & Drop을 직접 구현해야 했고, 드래그 상태 변경이 넓게 전파되면서 렌더링 시간이 증가했습니다.
Frontend / Mobile · PanResponder 기반 Drag & Drop을 구현하고, 편집 상태와 서버 캐시를 분리한 뒤 React Profiler로 렌더링 병목을 줄였습니다.
PanResponder, layout 측정, floating layer를 연결하고 React.memo와 Zustand selector로 드래그 중 렌더링 범위를 제한했습니다.
즉시 바뀌는 편집 상태는 Zustand, 서버가 원본인 일정·관광지 데이터는 TanStack Query로 분리하고 Profiler 측정값으로 최적화 여부를 판단했습니다.
동일 시나리오의 total commit duration 211.5→72.9ms, 평균 commit duration 17.6→6.6ms를 측정했습니다.
PanResponder, layout 측정, floating layer를 조합해 일정 카드 이동을 구현했습니다.PanResponder, layout 측정, floating layer를 조합해 카드 이동을 구현했습니다.React.memo, Zustand selector, drag layer 분리로 줄였습니다.useScheduleStore로, 일정/관광지/숙소 조회 데이터는 TanStack Query로 분리했습니다.validateNextStepEnabled 순수 함수와 Jest 테스트로 검증했습니다.enabled, staleTime을 적용했습니다.211.5ms -> 72.9ms로 줄였습니다.17.6ms -> 6.6ms로 줄였습니다.enabled 조건으로 제어했습니다.