본문으로 이동
문서

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

웹사이트 기능이 많아짐에 따라 점점 커지는 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...

프론트엔드 프로그래밍 언어

문서 박서진/이다용

안녕하세요, 토스 Frontend Engineering Head 박서진, 토스뱅크 Frontend Developer 이다용입니다. 오늘은 토스의 작은 유틸리티 함수 라이브러리로 시작한 es-toolkit이 어떻게 일주일에 2천만 회 이상 다운로드되고, Yarn이나 Recharts 같은 핵심 라이브러리에서도 사용되었는지 그 성장한 과정을 소개해 드릴게요. [서진] es-toolkit의 시작 프론트엔드 개발자로서 throttle, debounce 나 uniq 같은 함수들이 자주 필요해요. 그런데 지금까지는 자신 있게 이러한 유틸리티 함...

프론트엔드 프로그래밍 언어

문서 신지호

프론트엔드 번들링 도구를 사용하는 것을 넘어 직접 플러그인을 만들어 본 과정을 소개해요.

웹 개발 프론트엔드 로드맵 2개에 담김

문서 장호승

Node.js에는 두 가지 Module System이 존재합니다. 토스 프론트엔드 챕터에서 운영하는 100개가 넘는 라이브러리들은 그것에 어떻게 대응하고 있을까요?

백엔드 프로그래밍 언어

문서 박서진

토스 프론트엔드 레포지토리 대부분에서 사용하고 있는 패키지 매니저 Yarn Berry. 채택하게 된 배경과 사용하면서 좋았던 점을 공유합니다.

프론트엔드 개발 도구