본문으로 이동
문서

97% Smaller, 2x Faster: How es-toolkit Reached 10 Million Weekly Downloads

문동욱 · 토스 · 토스 기술 블로그

원본 보기

소개

A drop-in lodash replacement built for how JavaScript actually works today — ES Modules, TypeScript, and significantly smaller bundles. Adopted by Microsoft, Storybook, and Yarn. 10M+ weekly npm downloads.

AI 핵심 요약

Toss 프론트엔드 팀은 lodash가 ES Modules, TypeScript, 최신 JavaScript 엔진의 발전을 충분히 반영하지 못해 번들 크기와 실행 성능을 개선할 여지가 있다고 판단했다. 이에 es-toolkit을 처음부터 ES Modules와 TypeScript 중심으로 만들고, 각 함수를 독립적으로 구성해 불필요한 내부 의존성이 번들에 포함되지 않도록 했다. lodash와 호환되는 es-toolkit/compat도 제공해 코드 수정 없이 전환할 수 있게 했으며, 글에서는 일부 함수 조합의 번들 크기가 약 30KB에서 약 1KB로 줄어드는 사례를 제시한다. 이 라이브러리는 출시 후 주간 npm 다운로드 1,000만 회를 넘었고, 호환성 계층과 점진적 마이그레이션이 도입 장벽을 낮추는 방법이라는 점을 보여준다.

  • ES Modules 환경에서 함수별 의존성을 없애면 필요한 유틸리티만 번들에 포함하기 쉬워진다.
  • 현대 JavaScript 엔진의 최적화에 맞춰 구현하면 오래된 라이브러리의 호환성 제약을 벗어나 실행 성능을 개선할 수 있다.
  • TypeScript 정의를 소스 코드와 함께 관리하면 별도 타입 패키지와의 버전 불일치 위험을 줄일 수 있다.
  • 기존 코드 변경이 부담스럽다면 패키지 별칭과 es-toolkit/compat로 먼저 전환한 뒤 네이티브 import로 점진적으로 옮길 수 있다.