Babel과 Polyfill은 문법 변환과 런타임 API 보강을 나눠 맡는다

optional chaining 같은 syntax는 Babel이 바꿀 수 있지만 Promise, fetch, Array.prototype.at은 polyfill 전략이 필요하다.

구분해결하는 문제대표 도구검증 기준
Syntax브라우저가 새 문법을 파싱하지 못함Babel plugin, preset-env구형 브라우저에서 문법 오류 없음
Target지원 브라우저 범위 결정browserslist실제 사용자 환경과 일치
Runtime API실행 환경에 없는 객체와 메서드core-js, fetch polyfillAPI 호출이 존재함
Injectionpolyfill을 어디에 넣을지 결정usage, entry, manual중복 주입과 번들 증가 방지
Cost불필요한 변환과 보강 제거modern build, differential serving최신 브라우저에 과한 코드 전송 금지

문법을 못 읽는 문제와 API가 없는 문제를 구분해야 빌드 결과가 정확해진다.