New to Claude Skills? Learn how to install them →

Ltoss on GitHub

Lodash Migration Guide

Free

Migrate lodash code to es-toolkit effortlessly.

by toss11.3k stars on toss/es-toolkit
Updated Aug 10, 2026
Get this skill

Free · Opens the source repo

What Lodash Migration Guide does

The Lodash Migration Guide is designed to assist developers in transitioning their code from lodash to es-toolkit. This guide is particularly useful for those looking to reduce their bundle size and enhance performance by leveraging the benefits of es-toolkit's more streamlined API. It provides a structured approach to identifying lodash functions in existing code, verifying their availability in es-toolkit, and determining the best migration path based on specific use cases.

The guide breaks down the migration process into clear steps, starting with the identification of lodash functions used in the code. It then leads users through verifying the availability of these functions in both the strict and compat APIs of es-toolkit. By understanding the differences between these two APIs, developers can make informed decisions about which path to take for their migration. The guide emphasizes the importance of consulting the actual source code to avoid assumptions about behavior, ensuring a more accurate transition.

In addition to providing detailed instructions for individual function migrations, the guide also offers a strategic overview for larger codebases. It outlines three different migration options—direct to es-toolkit, gradual via compat, and a mixed approach—along with a trade-off matrix to help developers weigh the implications of each option. This thorough approach ensures that users are equipped with the knowledge and tools necessary to successfully migrate their code while minimizing risks and maximizing performance benefits.

Overall, this skill is ideal for developers who are currently using lodash and are considering a migration to es-toolkit. It is particularly beneficial for those who want to understand the differences between the two libraries and make data-driven decisions about their codebase.

When to use it

Use this skill when you want to transition from lodash to es-toolkit, especially for performance optimization.

When not to use it

This skill may not be suitable for projects that heavily rely on lodash features not present in es-toolkit or for those who are not ready to refactor their codebase.

What you can build with it

Migrating a small project

For new or small projects, directly migrating to es-toolkit can maximize bundle size reduction.

Refactoring a large codebase

In larger codebases, using the compat API allows for a gradual migration while maintaining existing functionality.

Mixed migration strategy

For projects with mixed dependencies, a pragmatic approach using both APIs may be necessary.

How to install Lodash Migration Guide

View source

1. Install with the skills CLI

npx skills add toss/es-toolkit/migrate --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by toss

Lodash Migration & Compat Guide

Guide users through migrating lodash to es-toolkit and understanding the strict vs compat APIs, grounded in actual source code.

Input

$ARGUMENTS — Lodash code to migrate, specific function names, or a question about strict vs compat.

Core Concepts

es-toolkit (strict): Opinionated, simplified API for the 85% use case. Smaller bundle, may differ from lodash in edge cases by design. New functions are added here.

es-toolkit/compat: Aims for full lodash test compatibility within a defined scope. See docs/compatibility.md for out-of-scope behaviors (e.g., implicit type conversions, prototype modifications).

Why source-first matters

The only reliable way to know the difference between strict and compat is to read the actual implementation. Never guess — always verify from source.

Workflow

If a specific function or lodash code is given

1. Identify lodash functions from input

Extract which lodash functions are used and how they're imported.

2. Verify availability in source code

For each function, search both APIs:

  • src/{category}/{fn}.ts — strict API
  • src/compat/{category}/{fn}.ts — compat API

Read the implementation to understand the exact signature and any behavioral differences.

3. Determine the right migration path

ScenarioRecommendation
Function exists in both, same behaviorUse es-toolkit (smaller bundle)
Function exists in both, different behaviorExplain the difference, let user choose
Only in compatUse es-toolkit/compat
Not available at allKeep lodash or suggest modern JS alternative

If the function only exists in compat (like get, set, has), explain why — es-toolkit doesn't implement functions replaceable by modern JS (optional chaining ?., Object.hasOwn(), etc.).

4. Generate before/after migration

For each function, provide:

  • Availability: es-toolkit and/or es-toolkit/compat
  • Doc link: https://es-toolkit.dev/reference/{category}/{fn} (strict) or https://es-toolkit.dev/reference/compat/{category}/{fn} (compat)
  • Before (lodash) and After (es-toolkit) code examples
  • Any behavioral differences found in source code
  • Feature comparison table: Compare API capabilities side-by-side (e.g., cancel support, flush, maxWait, return values, AbortSignal, callback arguments). Read both implementations to identify all supported options and present them in a table like:
Featurelodashes-toolkites-toolkit/compat
(list each option/capability)✅/❌✅/❌✅/❌
  • "When to use which": Based on the feature comparison, provide scenario-based guidance — e.g., "Use es-toolkit if you only need basic debounce; use compat if you rely on cancel/flush; keep lodash if you need X."

For migrations involving many functions, use a summary table instead of repeating the full template for each one.

5. Provide consolidated import rewrite

Show the final import transformation as a single block.

5a. Suggest automation patterns for large-scale migrations

When migrating many files, mention practical automation approaches:

  • Bundler alias: Configure resolve.alias in webpack or Vite to redirect lodash imports at build time without changing source files:
    // vite.config.js or webpack.config.js
    resolve: { alias: { 'lodash': 'es-toolkit/compat' } }
    
  • ESLint rule: Use no-restricted-imports to warn or error on remaining lodash imports after migration.
  • Codemod: For systematic AST-based transforms, mention tools like jscodeshift if the migration pattern is complex.

6. Note bundle size impact

es-toolkit is up to 97% smaller than lodash and 2-3x faster. Bundle size numbers come from benchmarks/bundle-size/ and runtime performance numbers from benchmarks/performance/ and docs/performance.md — reference them for specific function comparisons if the user asks.

If no specific function (migration strategy overview)

Provide a strategic overview with three migration options:

  • Option A: Direct to es-toolkit — new/small projects
  • Option B: Gradual via compat — large codebases (recommended for legacy)
  • Option C: Mixed — pragmatic approach

For each option, include a trade-off matrix:

FactorOption A (strict)Option B (compat)Option C (mixed)
Code change volumeHighLowMedium
Bundle size reductionMaximumModerateVaries
Risk levelHigher (behavior diffs)Low (lodash-compatible)Medium
Maintenance effortLow (clean API)Medium (compat tracking)Higher (two APIs)

Compat-exclusive functions: Search src/compat/ for functions that don't exist in src/ (strict). List representative examples so users know what can only come from compat (e.g., get, set, has).

For concrete behavioral differences, read a few representative function pairs from source (e.g., chunk, debounce) to give real examples rather than abstract descriptions.

Search local docs for discovery

If you need to check whether a lodash function has an es-toolkit equivalent:

  • By name: Read docs/reference/{category}/{functionName}.md directly
  • By keyword: Grep for the function name across docs/reference/**/*.md
  • Compat-only functions: Glob docs/reference/compat/{category}/*.md — then check if the same file exists in docs/reference/{category}/
  • Available categories: array, compat, error, function, map, math, object, predicate, promise, set, string, util

Frequently asked questions about Lodash Migration Guide

Similar skills