Ueber ein Jahrzehnt lang war lodash die Reflexantwort auf die Frage “welche Utility-Library soll ich nehmen?”. Es war ueberall, es war zuverlaessig, und es landete still in fast jedem JavaScript-Projekt der Welt.
Doch das JavaScript von 2026 ist nicht mehr das JavaScript, fuer das lodash entworfen wurde. Wir haben native Array.prototype-Methoden, Optional Chaining, Nullish Coalescing, Structured Clone und Engines, die modernen Code aggressiv optimieren. Gleichzeitig ist die Bundle-Groesse zu einem erstklassigen Performance-Budget geworden: jedes Kilobyte, das du ausspielst, zahlst du mit langsamerem LCP, schwereren Cold Starts und schlechteren Core Web Vitals zurueck.
Genau diese Luecke schliesst es-toolkit. Die Beschreibung ist nuechtern: eine moderne JavaScript-Utility-Library, die 2-3-mal schneller und bis zu 97% kleiner ist — ein grosses Upgrade gegenueber lodash. Dieser Artikel zeigt, was das in der Praxis bedeutet, erklaert den Migrationspfad und ist ehrlich dabei, wann du es nicht brauchst.

Was es-toolkit tatsaechlich ist
es-toolkit ist eine hochperformante Utility-Library auf dem neuesten Stand, geschrieben in TypeScript. Sie gibt dir den vertrauten Werkzeugkasten — debounce, throttle, chunk, groupBy, pick, omit, sum, delay und Dutzende mehr — aber neu gebaut fuer das moderne Oekosystem.
Die wichtigsten Zahlen, direkt aus dem Projekt:
- 2-3x schneller als lodash in den Benchmarks der Library.
- Bis zu 97% kleinerer Bundle-Fussabdruck pro Funktion.
- 100% Testabdeckung, fast vollstaendig in TypeScript (99,4%).
- MIT-Lizenz, gepflegt von Toss (Viva Republica) mit Hunderten Mitwirkenden und 11k+ GitHub-Stars.
Das ist kein Hobby-Projekt. es-toolkit ist bereits Produktions-Abhaengigkeit in Tools von Microsoft, IBM und Yarn sowie in Storybook, Recharts, MUI, ink und CKEditor — Software, auf die sich Millionen Entwickler taeglich verlassen.
Warum es kleiner ist: Tree-Shaking von Haus aus
Der groesste praktische Gewinn ist die Bundle-Groesse, und er kommt aus einer Architekturentscheidung: es-toolkit tree-shaked von Haus aus sauber.
Wenn du eine einzelne Funktion importierst, bekommst du diese Funktion und ihre minimalen Abhaengigkeiten — sonst nichts.
npm install es-toolkitimport { chunk, debounce } from 'es-toolkit';
const groups = chunk([1, 2, 3, 4, 5], 2);// [[1, 2], [3, 4], [5]]
const onResize = debounce(() => { console.log('resized');}, 200);Bei lodash konnte ein naiver Import aus dem Package-Root einen grossen Teil der Interna mitziehen. Die Community half sich jahrelang mit lodash-es, lodash.debounce-Mikro-Packages und Babel-Plugins. es-toolkit macht all das ueberfluessig: der schlanke, moderne Build ist der Standard, kein Opt-in.
Fuer ein bundle-sensibles Frontend kann der Tausch einer Handvoll lodash-Helfer gegen es-toolkit einen spuerbaren Teil deiner JavaScript-Last einsparen — und das genaue Delta kannst du auf der Bundle-Size-Seite des Projekts pruefen (es-toolkit.dev/bundle-size.html).
Warum es schneller ist: moderne Engines, kein Legacy-Ballast
lodash schleppt jahrelangen Kompatibilitaetscode fuer Umgebungen mit, die keine Rolle mehr spielen. es-toolkit startet auf der gruenen Wiese: es setzt auf native Sprachfeatures und ist fuer die Art implementiert, wie heutige Engines tatsaechlich optimieren.
Das Ergebnis: die haeufigen Hot-Path-Utilities — Array-Transformationen, Gruppierungen, Debouncing — laufen messbar schneller. Die Maintainer veroeffentlichen reproduzierbare Benchmarks unter es-toolkit.dev/performance.html, du musst der Behauptung also nicht blind vertrauen.
Fuer die meisten Apps ist der Unterschied pro Aufruf unsichtbar. Aber in engen Schleifen, Daten-Pipelines und hochfrequenten Event-Handlern summieren sich 2-3x.
TypeScript-nativ, mit eingebauten Type Guards
es-toolkit ist in TypeScript geschrieben, die Typen sind also erstklassig statt ueber ein separates @types-Package nachgereicht. Du bekommst praezise Inferenz, und die Library liefert praktische Type Guards, die Sicherheit und Ergonomie verbessern.
import { isNotNil } from 'es-toolkit';
const values = [1, null, 2, undefined, 3];
// TypeScript verengt das auf number[]const clean = values.filter(isNotNil);Helfer wie isNotNil leisten doppelte Arbeit: sie entfernen zur Laufzeit das Rauschen und verengen zur Compile-Zeit den Typ, was eine ganze Kategorie von as-Casts und Non-Null-Assertions aus deinem Code entfernt.
Der Migrationspfad: eine Zeile, kein Rewrite
Die Angst bei jedem “ersetze lodash”-Pitch sind die Migrationskosten. es-toolkit beantwortet sie direkt mit einer Kompatibilitaetsschicht: es-toolkit/compat, die die lodash-API spiegelt.
Die einfachste Migration ist, lodash im Bundler auf die compat-Schicht zu aliasen. In webpack:
module.exports = { resolve: { alias: { lodash: 'es-toolkit/compat', 'lodash-es': 'es-toolkit/compat', }, },};Oder, wenn du es explizit magst, aendere einfach den Importpfad und lass die Call Sites unangetastet:
// vorherimport { cloneDeep } from 'lodash';
// nachher — gleiche API, moderne Engineimport { cloneDeep } from 'es-toolkit/compat';Der empfohlene Rollout ist gestaffelt:
- Auf
es-toolkit/compatwechseln und pruefen, dass die Testsuite gruen bleibt. - Hot Paths und die am haeufigsten importierten Helfer auf den schlanken Haupt-Entry
es-toolkitmigrieren, um die vollen Geschwindigkeits- und Groessenvorteile zu holen. - Alles Exotische auf compat lassen, bis ein Pendant existiert.
Genau das macht den Wechsel fuer eine grosse Codebasis realistisch: du musst nicht alles auf einmal stoppen.
es-toolkit vs lodash vs nativ: eine kurze Landkarte
Eine nuetzliche Denkweise fuer 2026:
- Zuerst nativ greifen.
Array.prototype.map/filter/flat,Object.entries,structuredCloneund Optional Chaining decken erstaunlich viel von dem ab, wofuer man frueher lodash importierte. - Zu es-toolkit greifen, wenn nativ umstaendlich oder nicht vorhanden ist:
debounce,throttle,chunk,groupBy,pick,omit,sum,delay, Deep Clone/Merge und robuste Type Guards. - Zu lodash greifen nur, wenn du wirklich von einer Long-Tail-Funktion abhaengst, die es-toolkit noch nicht abdeckt — eine schrumpfende Liste.
es-toolkit sitzt genau dort, wo es sollte: es setzt da an, wo die Sprache aufhoert, ohne das Gewicht von lodash mitzubringen.
Ueber die Basics hinaus: fp, JSR und Agent Skills
Das Projekt steht nicht still. Ein paar Dinge, die man 2026 kennen sollte:
es-toolkit/fp— ein funktionales, pipeline-freundliches Modul fuer alle, die Point-free- und Data-last-Komposition moegen.- JSR-Support — es-toolkit ist neben npm auch auf JSR veroeffentlicht (
@es-toolkit/es-toolkit), was es erstklassig fuer Deno und moderne Toolchains macht. - AI Agent Skills — du kannst die Nutzungsanleitung der Library mit
npx skills add toss/es-toolkitin einen Agenten ziehen, damit KI-Assistenten idiomatischen es-toolkit-Code generieren statt lodash-Gewohnheiten.
Das sind Signale einer Library, die dort investiert, wo das Oekosystem hingeht, nicht nur dort, wo es war.
Wann du es nicht brauchst
Ehrlichkeit zaehlt mehr als Hype, also hier die Gegenposition:
- Wenn dein Projekt bereits auf
lodash-esmit funktionierendem Tree-Shaking standardisiert ist und Bundle-Groesse kein Thema ist, ist der Vorteil kleiner. - Wenn du nur einen oder zwei Helfer nutzt, reichen vielleicht eine native Implementierung oder ein einzelnes Mikro-Package — ganz ohne Abhaengigkeit.
- Wenn du von einer Nischen-lodash-Funktion ohne es-toolkit-Pendant abhaengst, ist es voellig in Ordnung, fuer diesen einen Pfad zu bleiben; nutze compat fuer den Rest.
Der Sinn von es-toolkit ist nicht, Neuem hinterherzulaufen. Es ist, die lodash-Steuer — in Bytes und Millisekunden — nicht mehr zu zahlen, wenn du es nicht mehr musst.
Fazit
Fuer neuen Code in 2026 ist es-toolkit der sinnvolle Standard: schneller, drastisch kleiner, TypeScript-nativ, in grossen Open-Source-Projekten erprobt und von einem aktiven Maintainer in Toss getragen. Fuer bestehenden Code verwandelt die es-toolkit/compat-Schicht eine frueher abschreckende Migration in eine Einzeiler-Aenderung, die du schrittweise ausrollen kannst.
Wenn du lodash noch aus Gewohnheit importierst, ist dies das Jahr, diesen Reflex zu hinterfragen. Installiere es-toolkit, aliase deine Imports, sieh dein Bundle schrumpfen und mach weiter.
npm install es-toolkit


