pile·
프론트엔드·토스 SLASH토스 SLASH·

es-toolkit: 사내 소형 라이브러리에서 글로벌 프로젝트로

토스 프론트엔드 팀이 사내 공유 유틸리티 라이브러리를 발전시켜 만든 es-toolkit이 주간 npm 다운로드 2,000만 건을 넘기며 글로벌 오픈소스 프로젝트로 자리 잡은 과정을 다룬다. lodash의 구조적 한계를 넘어 현대 웹 개발 환경에 최적화된 유틸리티 라이브러리를 처음부터 설계한 경험을 정리한다.

핵심 포인트
  • lodash는 IE 등 레거시 브라우저용 방어 로직과 ESM 미지원으로 트리쉐이킹이 불가능해 번들 최적화에 걸림돌이 됐다
  • es-toolkit은 네이티브 브라우저 함수를 적극 활용해 lodash 대비 최대 10배 빠른 실행 속도와 최대 30배 작은 번들 크기를 달성했다
  • 기존 lodash 사용자의 전환 장벽을 낮추기 위해 lodash API와 호환되는 중간 레이어 es-toolkit/compat을 제공했다
  • Reddit r/javascript 포스팅 이후 수만 명의 개발자 관심을 받았고, Yarn, Recharts, Storybook, Mermaid 등 주요 오픈소스에 채택됐다
  • 현재 주간 npm 다운로드 2,000만 건을 초과했으며 Node.js, Deno, Bun 서버 사이드 유틸리티로 확장 중이다
상세 정리
  • 배경: 토스 팀은 throttle, debounce, uniq 같은 유틸리티가 필요했지만 사내 공유 라이브러리(@toss/utils) 유지보수 부담이 컸고, lodash는 레거시 로직과 ESM 미지원 문제가 있었다
  • lodash 한계: 오래된 코드 구조로 내장 브라우저 함수를 활용하지 않고 직접 구현, IE 대응 방어 로직으로 불필요한 코드가 많아 트리쉐이킹이 제대로 동작하지 않았다
  • 설계 방향: 최신 ECMAScript 표준과 네이티브 브라우저 API를 전제로 처음부터 재설계, 레거시 호환 코드를 일절 배제했다
  • 성능: throttle, debounce, uniq 등 핵심 함수에서 lodash 대비 최소 2배, 경우에 따라 10배 이상 빠른 실행 속도 달성
  • 번들 크기: 불필요한 레거시 코드 제거로 일부 함수에서 30배 이상 번들 크기 축소
  • 호환 레이어: es-toolkit/compat을 도입해 lodash 인터페이스를 유지하면서 내부 구현을 교체 — 기존 코드베이스를 최소 변경으로 마이그레이션 가능
  • 커뮤니티 반응: Reddit 공유 후 100개 이상 업보트, 수만 명 유입 — 예상 밖의 관심으로 외부 기여자가 합류하기 시작
  • 채택 사례: Yarn, Recharts, Storybook, Mermaid 등 메이저 오픈소스 프로젝트가 의존성으로 채택
  • 현재 규모: 주간 npm 다운로드 2,000만 건 돌파, 엔터프라이즈 서비스와 오픈소스 전반에 확산
  • 향후 계획: 서버 사이드(Node.js, Deno, Bun) 유틸리티로 범위 확장 중
왜 읽나lodash 의존성을 줄이거나 번들 크기·성능을 개선하려는 웹 프론트엔드·풀스택 엔지니어에게, 오픈소스 성장 과정과 호환 레이어 설계 전략을 동시에 배울 수 있는 사례.
토스 SLASH
토스 SLASH 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 프론트엔드·LINE EngineeringLINE Engineering·

    AI로 웹 엔지니어 없이 LINE 앱 안에서 그룹 영상 통화 서비스 만들기

    LINE Planet 팀의 PM과 Android 엔지니어 두 명이 웹 전문 엔지니어 없이 LINE 앱 내에서 그룹 영상 통화 서비스를 개발한 과정을 다룬다. LIFF(LINE Front-end Framework)와 LINE Planet SDK를 활용해 React/Vite 기반 웹 앱을 구성했고, Firebase Cloud Functions로 별도 서버 인프라 없이 구현을 완료했다.

    #react#webrtc#firebase+2
  2. 프론트엔드·vercel-blogVercel Blog·

    Vercel과 Shopify의 Hydrogen 전면 재설계

    Vercel과 Shopify가 Hydrogen을 오픈소스·런타임 무관 프레임워크로 전면 재설계했다. 기존 Hydrogen은 빠른 헤드리스 스토어프런트 배포를 지원했지만 플랫폼 종속성이 있었고, 새 버전은 Svelte, Nuxt, Next.js 등 어느 JavaScript 프레임워크에서도 동작한다. 3레이어 아키텍처(코어/클라이언트/서버)로 재구성하면서 각 레이어가 명확한 역할을 분담한다.

    #react#nextjs#i18n+2
  3. 프론트엔드·토스 SLASH토스 SLASH·

    es-toolkit, 사내 작은 라이브러리가 전세계적인 라이브러리가 되기까지

    토스팀이 lodash의 한계(ESM 미지원, 레거시 코드 비대)를 해결하기 위해 개발한 JavaScript 유틸리티 라이브러리 es-toolkit이 NPM 주간 다운로드 2천만 회를 돌파하며 전 세계 주요 오픈소스 프로젝트에 채택됐다. 사내 작은 프로젝트로 시작해 Storybook, Mermaid, Yarn Berry 등이 의존성을 전환한 과정과, lodash drop-in replacement인 es-toolkit/compat 전략을 최초 개발자 서진과 외부 기여자로 시작해 토스뱅크에 합류한 다용, 두 개발자의 시각으로 다룬다.

    #es-toolkit#lodash#open-source+2