목록 보기
Vite로 구버전 브라우저 지원하기
프론트엔드

Vite로 구버전 브라우저 지원하기

우아한 형제들
우아한 형제들
2024년 6월 7일

두줄요약

Vite 레거시 플러그인으로 구버전 Safari와 Chrome의 흰 화면 문제를 해결한 사례를 다루었습니다. targets 설정만으로는 부족해 modernPolyfills를 함께 조정한 과정도 설명했습니다.

문제 상황

  • Vite로 전환한 뒤 구버전 Safari·Chrome 웹뷰에서 화면 진입 시 흰 화면이 발생하는 문제
  • 원인은 Chrome 73 미만 환경의 Object.fromEntries is not a function 문법/호환성 오류
  • 배민앱 장바구니처럼 웹뷰 기반 서비스에서 구버전 지원 포기 시 사용자·매출 영향 우려

원인 분석

  • @vitejs/plugin-legacytargets 설정만으로는 폴리필이 자동 포함되지 않는 점
  • 모던 브라우저 범위 안에서도 import.meta, dynamic import, async generator 같은 기능 차이 존재
  • Native ESM 지원 여부와 실제 문법 지원 범위를 함께 고려해야 하는 구조

해결 방법

  • modernPolyfills 옵션에 es.object.from-entries를 추가해 모던 청크에 폴리필 포함
  • 이후 유지보수성과 일괄 대응을 위해 modernPolyfills: true로 확장
  • 최종적으로 targetsmodernPolyfills를 함께 설정해 모던·레거시 브라우저 분기 처리

적용해볼 점

  • 구버전 브라우저 이슈는 실제 대상 기기에서 Chromium 스냅샷으로 재현 확인
  • 레거시 플러그인 사용 시 targets만이 아니라 폴리필 포함 여부까지 점검
  • 번들 크기와 호환성 사이에서 운영 관점의 균형 검토

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...