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