deepmerge-ts is a TypeScript-first utility for deeply merging two or more objects while preserving type information. It includes support for merging arrays, Records, maps, and sets, and can be customized for different merge behaviors. Useful when you need “smart” deep merges with correct typing rather than simple shallow object merges.
Project status
- Actively maintained: The repo has very recent GitHub activity (last upstream push on 2026-08-21) and multiple versioned updates in August 2026 (v8.0.0 on 2026-08-16, v8.0.1 on 2026-08-16, v8.0.2 on 2026-08-21), indicating ongoing maintenance rather than dormancy.
- Update cadence: In the short term, cadence is tight (multiple updates within the same week), suggesting an active development cycle. Earlier history shows much larger gaps (for example, v7.1.5 in 2025-02, then v7.1.6 in 2026-08), so it is not consistently frequent across all time.
AI summary generated
Recent updates
v8.0.2
Release v8.0.2 includes a documented fix to the package Node.js engine requirement (>=16.9.0). The rest of the diff is primarily tooling and documentation (JSDoc updates, eslint config changes) plus dev-only dependency churn, with no clear public API surface changes visible from the code diff.
Breakingv8.0.1
v8.0.1 is presented as a bug fix release focused on improving TypeScript 7 compatibility. The release notes only mention TS7 support, but the code diff shows multiple underlying type-level algorithm changes and additional TS7 consumer typecheck fixtures.
v8.0.0
deepmerge-ts v8.0.0 introduces new unsafe fast entrypoints and expands circular-reference support and metadata handling for custom merge functions. It also changes core merge semantics (notably Maps) and tightens the type-level model around merge metadata and options.
BreakingSecurityFeaturesv7.1.6
v7.1.6 is presented as a patch release with a single bug fix: preserving known keys when merging objects with index signatures. The provided diff, however, shows additional significant internal changes around module specifiers and the build/type generation pipeline that are not described in the release notes.
v7.1.5
v7.1.5 is a small release focused on improving TypeScript type merging for nested optional properties. The main functional change is at the type level, making merged property types more precise instead of always producing unions.
v7.1.4
v7.1.4 is a type-level bug fix focused on applying value filtering when selecting the leaf type during deep merges. The change is implemented by extending the leaf type computation to incorporate the filter HKT inputs, plus related type utility refactors.
v7.1.3
The release notes for v7.1.3 do not document any functional changes. The code diff shows this release primarily updates release tooling and documentation scaffolding (changelog entry) rather than runtime library behavior.
v7.1.2
v7.1.2 is a small release that claims a performance improvement using more efficient data structures. The diff shows the main functional change is in src/utils.ts, but it also shows large removals of dist build artifacts in the published diff view, plus several build/release tooling updates.
Breakingv7.1.1
Release v7.1.1 claims a TypeScript performance improvement by adding explicit return types to speed up type computation. The actual diff shows almost no runtime logic changes, but it does include substantial changes to published distribution files, especially TypeScript declaration generation and Deno entry/type artifacts.
Breakingv7.1.0
v7.1.0 primarily updates the project benchmarks to include a new comparison using the `defu` library. The only documented change in the release notes is the addition of this benchmark. The code diff also includes multiple CI and tooling updates (Node, pnpm, and dev dependency bumps) that are not mentioned in the release notes.
Featuresv7.0.3
v7.0.3 is a small release focused on fixing the TypeScript types for deep merge functions. The implementation changes mostly reorganize how default merge function strategies are defined and exported, with corresponding updates to generated type declarations.
v7.0.2
Release v7.0.2 contains a single user-facing bug fix intended to improve compatibility with older module resolution setups. The diff mainly updates packaging metadata (and tooling/doc files), with no changes to the deepmerge runtime implementation.
v7.0.1
v7.0.1 is a small bug fix release focused on improving how deepmerge handles partial types. The published code changes are entirely type-level (TypeScript and Deno type definitions), plus minor README/example and type-test updates.
v7.0.0
v7.0.0 is a refactor release that renames several exported DeepMerge utility and type names, and introduces a new mechanism to filter values before they are merged. The runtime implementation now supports a configurable filterValues option, and the type system adds corresponding generics to model the filtering behavior.
BreakingFeatures