es-toolkit, 사내 작은 라이브러리가 전세계적인 라이브러리가 되기까지
박서진/이다용 · 토스 · 토스 기술 블로그
소개
안녕하세요, 토스 Frontend Engineering Head 박서진, 토스뱅크 Frontend Developer 이다용입니다. 오늘은 토스의 작은 유틸리티 함수 라이브러리로 시작한 es-toolkit이 어떻게 일주일에 2천만 회 이상 다운로드되고, Yarn이나 Recharts 같은 핵심 라이브러리에서도 사용되었는지 그 성장한 과정을 소개해 드릴게요. [서진] es-toolkit의 시작 프론트엔드 개발자로서 throttle, debounce 나 uniq 같은 함수들이 자주 필요해요. 그런데 지금까지는 자신 있게 이러한 유틸리티 함...
AI 핵심 요약
lodash의 오래된 구조와 불필요한 호환 코드, Tree-shaking의 제약을 해결하기 위해 토스는 현대 JavaScript 환경에 맞춘 유틸리티 라이브러리 es-toolkit을 만들었습니다. 표준 내장 기능을 활용하고 불필요한 로직을 덜어 함수별 성능을 높이고 번들 크기를 줄였으며, 커뮤니티 기여를 통해 기능과 구현을 발전시켰습니다. 기존 lodash 사용자가 쉽게 전환하도록 인터페이스와 동작을 호환하는 es-toolkit/compat도 제공해 마이그레이션 부담을 낮췄습니다. 그 결과 Yarn Berry, Recharts 등 여러 프로젝트가 채택했고, 글에서는 주간 다운로드가 2천만 회를 넘었다고 소개하며 80% 이상의 유스케이스에 최적화된 작고 빠른 라이브러리를 지향한다고 설명합니다.
- 오래된 브라우저 호환 코드와 직접 구현한 표준 기능은 현대 환경에서 성능·번들 크기 부담이 될 수 있습니다.
- 라이브러리의 핵심 유스케이스에 집중하면 모든 예외를 포괄하는 구현보다 작고 빠른 코드를 만들 수 있습니다.
- 기존 라이브러리의 동작과 인터페이스를 유지하는 호환 레이어는 마이그레이션 장벽을 낮춥니다.
- 오픈소스 기여와 외부 프로젝트의 직접 마이그레이션은 라이브러리 채택과 생태계 확산에 도움이 됩니다.
비슷한 학습 자료
토스ㅣSLASH 21 - JavaScript Bundle Diet
SLASH · YouTube
es-toolkit: How a Small Internal Library Became a Global Project
박서진/이다용 · 토스 기술 블로그
97% Smaller, 2x Faster: How es-toolkit Reached 10 Million Weekly Downloads
문동욱 · 토스 기술 블로그
여러 프레임워크에서 사용할 수 있는 라이브러리 만들기
임지훈 · 토스 기술 블로그
ESLint와 AST로 코드 퀄리티 높이기
전성 · 토스 기술 블로그
CommonJS와 ESM에 모두 대응하는 라이브러리 개발하기: exports field
장호승 · 토스 기술 블로그