빠른 실험과 배포를 위해 배민 장보기·쇼핑의 주요 화면을 native에서 web으로 전환한 뒤, 느린 첫 화면과 scroll·memory 문제를 측정해 단계적으로 개선한 사례다. 감상 대신 FCP 1.5초·LCP 2.35초·load 4.5초라는 baseline을 잡고 최적화의 출발점으로 삼는다.
핵심 포인트- 모든 필수 API 응답을 기다려 흰 화면·spinner만 보이던 SSR을, 가벼운 HTML/JS를 CDN에서 즉시 주는 CSR로 바꿔 skeleton을 먼저 노출하고 API를 병렬 대기해 FCP 약 39% 단축
- 화면 밖 264개 image를 한꺼번에 받던 문제를 native lazy loading과 Lambda·S3 resize로 request 약 70% 절감, 비활성화됐던 WebView cache를 검증·clear 장치와 함께 재활성화해 AWS 월 비용 55.8%(연 약 천만 원) 절감
- server-driven UI로 viewport 아래 section을 render하지 않고, main bundle보다 앞선 inline script로 critical API를 prefetch(Axios interceptor·cache 재사용), route·component code splitting으로 핵심 지표를 대부분 1초 안으로
- 약 천 개 상품을 모두 DOM에 남겨 GC·정지·crash를 부르던 list를 TanStack Virtual로 보이는 영역만 유지하고, 사용자 75%가 두 tab 이하만 방문한다는 data로 최근 두 tab만 memory에 보존(Sentry RUM으로 회귀 관찰)
왜 읽나native를 web으로 옮기며 native 수준 UX를 지켜야 하는 프론트엔드 팀에게, 지표 baseline부터 rendering·network·bundle·memory까지 비용과 함께 정리한 성능 최적화 로드맵.