본문으로 이동
똑똑하게 브라우저 Polyfill 관리하기
문서

똑똑하게 브라우저 Polyfill 관리하기

박서진 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

오래된 브라우저에서 최신 JavaScript API를 사용하려면 Polyfill이 필요하지만, 모든 Polyfill을 일괄 제공하면 최신 브라우저에도 불필요한 스크립트가 전달됩니다. 먼저 @babel/preset-env의 브라우저 targets를 설정해 지원 범위 밖의 Polyfill을 빌드에서 제외할 수 있지만, 최신 브라우저에 필요한 것만 전달하는 문제까지 해결하지는 못합니다. 토스는 browserslist-useragent와 core-js-compat으로 User-Agent별 Polyfill 목록을 계산하고, esbuild로 필요한 모듈만 묶는 자체 제공 시스템을 만들었습니다. 이 방식으로 오래된 브라우저 지원과 최신 브라우저의 불필요한 다운로드 감소를 함께 추구할 수 있으며, User-Agent 해석 실패 시 대체 대상과 비표준 기능 제외 같은 예외 처리도 중요합니다.

  • Polyfill을 무조건 전부 포함하면 최신 브라우저에도 불필요한 JavaScript를 내려보내 성능에 부담을 줄 수 있다.
  • @babel/preset-env의 targets를 실제 지원 브라우저에 맞춰 설정하면 빌드 시 불필요한 Polyfill을 줄일 수 있다.
  • 브라우저별로 필요한 기능을 다르게 제공하려면 User-Agent를 해석해 Polyfill 목록을 동적으로 구성할 수 있다.
  • core-js-compat으로 목록을 계산하고 esbuild로 번들링하면 자체 Polyfill 제공 서버를 구현할 수 있다.
  • User-Agent를 해석할 수 없는 경우의 대체 대상과 실험적인 esnext 기능 제외 등 예외 처리도 고려해야 한다.

소개

현대적인 JavaScript를 쓰면서도 넓은 범위의 기기를 지원하기 위한 Polyfill을 어떻게 똑똑하게 설정할 수 있는지 소개합니다.

비슷한 학습 자료

문서 강민우

'접근성은 어려운 것' 이라고 느끼는 분들을 위해 실무에서 바로 적용할 수 있는 접근성의 핵심 개념과 실수하기 쉬운 패턴을 알려주는 문서, A11y Fundamentals 을 소개합니다.

UI/UX

문서 김선우

어떠한 요구사항도 수용할 수 있는 기능은 어떻게 만들 수 있을까요? 토스증권에서 유저에게 노출하는 배너 기능을 어떻게 유연하고 확장 가능하게 구현하였는지 공유 드려요.

백엔드

문서 김덕원

시간이 지날수록 그동안 잘 사용했던 기반 기술들이 더 이상 최선의 선택이 아닌 순간이 오는데요. 제품을 계속 안정적으로 운영하면서 마이그레이션 또한 쉽지 않습니다. 오늘은 토스의 TUBA 팀에서는 이런 문제를 어떻게 해결했는지 소개드릴게요.

프론트엔드

문서 신지호

프론트엔드 번들링 도구를 사용하는 것을 넘어 직접 플러그인을 만들어 본 과정을 소개해요.

웹 개발 프론트엔드 로드맵 2개에 담김

문서 한재엽

SPA(Single Page Application) 구조로 웹 프론트엔드 애플리케이션이 개발되면서 초기 렌더링 속도는 프런트엔드 개발자에게 중요한 과제 중 하나가 되었습니다. 사용자 경험에 영향을 줄 수 있는 가장 큰 요소 중 하나가 바로 속도이기 때문입니다.

웹 개발 프론트엔드

문서 박서진

웹 성능을 위해 꼭 필요한 캐시, 제대로 설정하기 쉽지 않습니다. 토스 프론트엔드 챕터에서 올바르게 캐시를 설정하기 위한 노하우를 공유합니다.

웹 개발 프론트엔드