es-toolkit
Para manipular arrays, objetos y funciones (debounce, chunk, pick...) con menos peso en el bundle que Lodash.
Librería moderna de utilidades para JavaScript, más rápida y ligera que Lodash y con tipado TypeScript completo.
Notas y contexto
Qué es
es-toolkit es una librería de utilidades para JavaScript y TypeScript desarrollada por el equipo de Toss. Reúne funciones de uso común como debounce, chunk, pick, omit, sum o delay, y se plantea como una alternativa moderna a Lodash. Está escrita casi por completo en TypeScript, por lo que ofrece tipado robusto de serie, y presume de ser entre 2 y 3 veces más rápida y de reducir el tamaño del bundle hasta en un 97% frente a otras librerías equivalentes.
Para qué sirve
- Manipular arrays y objetos con funciones listas para usar (
chunk,groupBy,uniq,pick,omit) sin reinventarlas. - Controlar la ejecución de funciones con
debounceythrottle, habituales en eventos de scroll, búsqueda o resize. - Aprovechar el tree-shaking para incluir en el bundle solo las funciones que realmente importas.
- Disponer de type guards y utilidades tipadas que mejoran la seguridad en proyectos TypeScript.
- Migrar desde Lodash usando el módulo de compatibilidad
es-toolkit/compatcon cambios mínimos.
Cuándo usarlo
Es una buena opción cuando quieres las utilidades de toda la vida de Lodash pero te preocupa el peso del bundle y el rendimiento, especialmente en aplicaciones de navegador. Si partes de cero, puedes usar la API principal directamente; si vienes de un proyecto con Lodash, el módulo es-toolkit/compat actúa como reemplazo casi directo. Para casos muy puntuales donde solo necesitas una o dos funciones, valora también escribirlas a mano o usar utilidades nativas modernas de JavaScript.
Ejemplo
# Instalación con npm (también disponible vía JSR)
npm install es-toolkit
# npx jsr add @es-toolkit/es-toolkit
import { chunk, debounce } from 'es-toolkit';
// Dividir un array en grupos de tamaño fijo
const grupos = chunk([1, 2, 3, 4, 5, 6], 2);
// [[1, 2], [3, 4], [5, 6]]
// Limitar la frecuencia de ejecución de una función
const registrar = debounce((mensaje: string) => console.log(mensaje), 300);
registrar('Hola!');
Puntos clave
- Rendimiento entre 2 y 3 veces superior al de alternativas en runtimes modernos de JavaScript.
- Reducción de hasta el 97% en el tamaño del código frente a otras librerías de utilidades.
- Tipado TypeScript completo y type guards incluidos de fábrica.
- Tree-shaking nativo: solo entra en el bundle lo que importas.
- Funciona en Node.js, navegadores, Deno y Bun, con módulo
es-toolkit/compatpara migrar desde Lodash.
Ten en cuenta
- Es una librería más reciente que Lodash, por lo que su ecosistema y la cantidad de respuestas en la comunidad son menores, aunque ya la usan proyectos como Storybook, Recharts o CKEditor.
- La capa
es-toolkit/compatfacilita la migración, pero no garantiza una equivalencia 100% en todos los métodos y casos límite de Lodash; conviene probar tras migrar. - Si solo necesitas una utilidad muy simple, las funciones nativas de JavaScript moderno pueden bastar sin añadir dependencias.