97% Smaller, 2x Faster: How es-toolkit Reached 10 Million Weekly 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로 점진적으로 옮길 수 있다.
소개
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.
비슷한 학습 자료
컨퍼런스 SLASH
토스ㅣSLASH 21 - JavaScript Bundle Diet
컨퍼런스 SLASH
웹사이트 기능이 많아짐에 따라 점점 커지는 JavaScript Bundle Size. 웹사이트 속도는 느려지고, 잠재 고객을 잃을 수도 있습니다. 라이브러리를 사용하는 그리고 제공하는 관점에서 Bundle Size가 커질 수 있는 상황과 해결 방법을 공유합니다. 이한 / 토스 Frontend Developer 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-21 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im #토스 #개발자컨퍼런스 #SLASH
웹 개발 프론트엔드
문서 박서진/이다용
*This is the English version of a previously published article. Hello! We're Sojin Park, Head of Frontend Engineering at Toss, and Dayong Lee, Frontend Developer at Toss Bank. Today, we'd like to share the story of es-toolkit: how it started as a small utility function library inside Toss and grew i...
프론트엔드 프로그래밍 언어
문서 박서진/이다용
es-toolkit, 사내 작은 라이브러리가 전세계적인 라이브러리가 되기까지
문서 박서진/이다용
안녕하세요, 토스 Frontend Engineering Head 박서진, 토스뱅크 Frontend Developer 이다용입니다. 오늘은 토스의 작은 유틸리티 함수 라이브러리로 시작한 es-toolkit이 어떻게 일주일에 2천만 회 이상 다운로드되고, Yarn이나 Recharts 같은 핵심 라이브러리에서도 사용되었는지 그 성장한 과정을 소개해 드릴게요. [서진] es-toolkit의 시작 프론트엔드 개발자로서 throttle, debounce 나 uniq 같은 함수들이 자주 필요해요. 그런데 지금까지는 자신 있게 이러한 유틸리티 함...
프론트엔드 프로그래밍 언어
문서 신지호