Skip to content

Bump deepmerge-ts from 7.1.6 to 8.0.1 - #646

Merged
github-actions[bot] merged 1 commit into
Currentfrom
dependabot/npm_and_yarn/deepmerge-ts-8.0.1
Aug 19, 2026
Merged

Bump deepmerge-ts from 7.1.6 to 8.0.1#646
github-actions[bot] merged 1 commit into
Currentfrom
dependabot/npm_and_yarn/deepmerge-ts-8.0.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 19, 2026

Copy link
Copy Markdown
Contributor

Bumps deepmerge-ts from 7.1.6 to 8.0.1.

Release notes

Sourced from deepmerge-ts's releases.

v8.0.1

8.0.1 (2026-08-16)

Bug Fixes

v8.0.0

8.0.0 (2026-08-16)

Breaking Changes

  • Deep Map value merging. Map values are now deep-merged by default, matching how records are handled. Nested Maps and plain objects inside a Map are merged recursively rather than the source Map simply replacing the target. The old behaviour can be recreated with deepmergeCustom({ mergeMaps: false }).
  • DeepMergeMetaMetaData renamed to DeepMergeMergeInfo. A deprecated alias for the old name is still exported for backwards compatibility, but it will be removed in a future major version. The rename better reflects the structure's expanded role, including hierarchy tracking, in custom merging and the metadata passed to custom merge functions. The MetaDataUpdater callback's metaMeta parameter is now mergeInfo, and the MM generic shorthand is now MI.
  • DeepMergeIntoFunctionUtils renamed to DeepMergeIntoUtils. No alias is kept for the old name.
  • deepmergeInto no longer leak-mutates the input objects. Previously deepmergeInto would mutate the first object's nested containers (arrays, Maps, Sets, and objects) in place, potentially corrupting the input. It is now fixed.

Features

  • Circular reference support. deepmergeCustom and deepmergeIntoCustom now handle circular references, configurable via a new maxDepth option and a new mergeCircularReferences merge-function option. The merge metadata also now tracks the merge hierarchy.
  • New fast entrypoints. deepmergeFastUnsafe and deepmergeIntoFastUnsafe are drop-in replacements for deepmerge and deepmergeInto with prototype-pollution interception, circular-reference handling, and metadata tracking removed for maximum throughput. They should only be used with trusted data. Each ships with a *Custom constructor (deepmergeFastUnsafeCustom and deepmergeIntoFastUnsafeCustom) for customisation.

Bug Fixes

  • deepmergeInto no longer leak-mutates the input objects. (As described in Breaking Changes.)

Performance

  • Much faster type checking. The following numbers are the type-checking cost, comparing this release against v7.1.6 (measured with TypeScript 5.9.3):

    Scenario Types Instantiations Total time
    wide 256k -> 26k (-90%) 6.5M -> 83k (-98.7%) 10.5s -> 0.94s (-91%)
    deep 64k -> 26k (-60%) 438k -> 67k (-85%) 1.82s -> 0.87s (-52%)
    optional 45k -> 27k (-40%) 172k -> 78k (-55%) 1.39s -> 0.89s (-36%)
    unions 40k -> 26k (-36%) 118k -> 69k (-42%) 1.26s -> 0.92s (-27%)
    collections 37k -> 26k (-29%) 95k -> 69k (-28%) 1.22s -> 1.06s (-13%)
    custom 38k -> 26k (-31%) 100k -> 69k (-31%) 1.22s -> 1.02s (-16%)
    into 35k -> 25k (-27%) 76k -> 64k (-15%) 1.20s -> 0.87s (-28%)
  • Runtime performance. Compared to v7.1.6, deepmerge-ts v8.0.0 is roughly 40% faster when merging two objects and ~5-10% faster on multi-object merges, while deepmergeInto performs about the same (its leak-mutation fix adds a little clone work). Memory use is markedly lower as well: on the largest benchmark dataset, v7.1.6 runs into Node's default heap limit, whereas the same workload completes with a peak of roughly half a gigabyte.

  • Compared to other merge libraries we benchmark against.

    • Deep, nested data. defu@6.1.7 is the fastest. When merging many objects, deepmerge-ts@8.0.0 is within ~1.5x and merge-anything@6.0.6 close behind; on simple two-object merges defu pulls further ahead (~1.1-2x).
    • Medium data. When merging many objects at once, deepmerge-ts edges out defu (~1.5x) and is ~2.5x faster than merge-anything.
    • Wide, shallow data. When merging many objects at once, deepmerge-ts is the fastest, roughly 25-35x faster than both defu and merge-anything.
    • The other libraries (ts-deepmerge@8.0.0, mergician@2.0.2, @fastify/deepmerge@3.2.1, deepmerge@4.3.1) fall anywhere from ~100x to ~17,000x behind, largely because they deep-clone the entire input, whereas deepmerge-ts shares references to untouched subtrees.
    • Set and Map values. Only deepmerge-ts merges them deeply, by unioning Set elements and merging Map entries (including their values), while the other libraries simply let one of the values win.

... (truncated)

Changelog

Sourced from deepmerge-ts's changelog.

8.0.1 (2026-08-16)

Bug Fixes

8.0.0 (2026-08-16)

Bug Fixes

  • stop deepmergeInto from leak-mutating nested input containers (2cd7824)

Code Refactoring

  • rename mergeInfo system and align shorthand, add JSDoc examples (590ed9b)

Features

  • add circular reference support, maxDepth option, and hierarchy tracking (#707) (3984927)
  • add deepmergeFastUnsafe and deepmergeIntoFastUnsafe entrypoints (#708) (df9b11c)
  • support deep map value merging (ac4bf7a), closes #705

Performance Improvements

  • add a dedicated fast path for merging 2 records (4dbcea7)
  • avoid array reallocation when no undefined values exist (99f2241), closes #696
  • optimize array and set merging (8d435f9), closes #698
  • optimize map merging and remove dead code (14e1604), closes #702
  • optimize record key and type detection (fa85462), closes #694
  • reduce benchmark sample count so the bench fits in 512MB heap (66635e3)
  • reduce type-level work and shortcut same-type merges (473a971)
  • speed up the mergeUnknowns hot path (95b2964), closes #699

BREAKING CHANGES

  • deepmergeInto no longer leak-mutates input containers. Code that depended on inputs being merged into the target through alias must now pass copies explicitly. The documented 'update the target' behavior is preserved on the target itself.
    • DeepMergeMetaMetaData has been renamed to DeepMergeMergeInfo. Imports must be updated.
  • The MetaDataUpdater callback's metaMeta parameter is now mergeInfo. Implementations must update the parameter name accordingly.
  • The MM generic shorthand has been renamed to MI (e.g. in

... (truncated)

Commits
  • ef97b92 chore(release): 8.0.1 [skip ci]
  • b307b77 fix: typescript 7 support (#714)
  • 42eae21 style: enforce no-explicit-any in src (#713)
  • 188dba4 chore(release): 8.0.0 [skip ci]
  • 57e4403 Merge pull request #712 from RebeccaStevens/dev
  • f7ebf92 test: cover semantics, containers, and types across all variants
  • af8e57e chore: update the type benchmark baseline
  • 66635e3 perf: reduce benchmark sample count so the bench fits in 512MB heap
  • 1589755 test: complete benchmark coverage for deepmerge-ts variants
  • 2cd7824 fix!: stop deepmergeInto from leak-mutating nested input containers
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [deepmerge-ts](https://github.com/RebeccaStevens/deepmerge-ts) from 7.1.6 to 8.0.1.
- [Release notes](https://github.com/RebeccaStevens/deepmerge-ts/releases)
- [Changelog](https://github.com/RebeccaStevens/deepmerge-ts/blob/main/CHANGELOG.md)
- [Commits](RebeccaStevens/deepmerge-ts@v7.1.6...v8.0.1)

---
updated-dependencies:
- dependency-name: deepmerge-ts
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code labels Aug 19, 2026
@github-actions
github-actions Bot merged commit e8e2d34 into Current Aug 19, 2026
9 checks passed
@github-actions
github-actions Bot deleted the dependabot/npm_and_yarn/deepmerge-ts-8.0.1 branch August 19, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update Javascript code

Development

Successfully merging this pull request may close these issues.

1 participant