목록 보기
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만이 아니라 폴리필 포함 여부까지 점검
  • 번들 크기와 호환성 사이에서 운영 관점의 균형 검토

다음 읽기

#React 주제를 다룬 다른 회사 글

[디자인 시스템 어떻게 만들었어요?(3)] Tree Shaking과 구형 브라우저 대응

Next.js 환경에서 디자인 시스템 라이브러리의 번들 최적화와 구형 브라우저 대응 방법을 정리했습니다. 모듈 구조 유지, transpilePackages, 폴리필 전략을 통해 서비스 단의 호환성과 성능을 함께 개선했습니다.

요기요
요기요
프론트엔드

댓글 0

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

댓글을 불러오는 중...