Skip to content

Bump @jumoo/usync from 18.0.3 to 18.1.0 in /uSync.History/history-client in the npm-dependencies group - #1046

Closed
dependabot[bot] wants to merge 1 commit into
v18/mainfrom
dependabot/npm_and_yarn/uSync.History/history-client/npm-dependencies-0766fd98ab
Closed

Bump @jumoo/usync from 18.0.3 to 18.1.0 in /uSync.History/history-client in the npm-dependencies group#1046
dependabot[bot] wants to merge 1 commit into
v18/mainfrom
dependabot/npm_and_yarn/uSync.History/history-client/npm-dependencies-0766fd98ab

Conversation

@dependabot

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

Copy link
Copy Markdown
Contributor

Bumps the npm-dependencies group in /uSync.History/history-client with 1 update: @jumoo/usync.

Updates @jumoo/usync from 18.0.3 to 18.1.0

Release notes

Sourced from @​jumoo/usync's releases.

v18.1.0

This is a minor update to uSync for Umbraco 18 — an opt-in import performance cache, a double-export fix for save-and-publish, several allocation/perf improvements ported from v17, and a move to the Jumoo.Json package for JSON handling.

uSync 18.1.0

Added

  • Opt-in import state cache — uSync:Settings:CacheImportState (default false). uSync normally decides whether an item has changed by loading it, serializing it, and hashing it — every item, every run. With this on, uSync remembers the hash of items it has already confirmed match, so unchanged items are skipped without a database lookup or re-serialize on the next run. The first run after enabling it is no faster than before; the benefit lands on the second run. Read docs/perf/state-cache.md before enabling it, especially the limitations section. (#1016)
  • Extender API: the cancelable per-item notifications gain an optional Message (used instead of uSync's generic cancel message) and, on the import/report ones, Force, so a subscriber can stand down when the user has asked for a forced import.

Fixed

  • Content and Library items are no longer exported twice by one editor action. Umbraco 18.1 raises the saved notification for a save-and-publish as well as the published one (umbraco/Umbraco-CMS#23523); uSync now shares a record of exported items across the notifications for one operation, so each item is exported once. (#1018)
  • HandlerSettings.Clone() no longer drops CreateClean and FullFileOnDifference — handlers that set either value in their own block are now honoured.
  • Property values containing a quote, backslash or control character are now converted to valid JSON (previously produced invalid JSON in the string fallback). Inherited with the move to Jumoo.Json.
  • Restored backoffice guard and content paging fixes that were dropped in the v17 → v18 merge. (#1012)

Performance

  • Ported the v17 allocation work: fewer redundant dictionary lookups on hot paths, and internal/private classes are now sealed so the JIT can devirtualize their calls. No behavioural changes. (#1019, #1020)

    Extender API: SyncHandlerRoot.SyncChangeInfo is now sealed (still protected, so handlers can still construct/return one from IsItemCurrentAsync, just not derive from it).

  • Handler settings now inherit from HandlerDefaults. A handler's own settings block is layered over the set's defaults instead of replacing them wholesale, so it only needs to specify what it wants to change. (#1001)

    Breaking: a handler block that previously reset settings back to built-in defaults will now inherit the set's HandlerDefaults instead. Review any set mixing HandlerDefaults with per-handler blocks.

  • JSON helpers now come from the Jumoo.Json package, replacing uSync's own copy which had drifted behind it. uSync.Core.Extensions.JsonTextExtensions still works but is [Obsolete] (removed in v20) — switch to using Jumoo.Json;. Note TryGetPropertyAsObjectTryGetPropertyAsJsonObject, GetPropertyAsObjectGetPropertyAsJsonObject, and missing/null values now return null instead of string.Empty. (#1014, #1015)
  • Removed three O(n²) lookups from import (duplicate-key/"keys to keep" checks now use set lookups; second-pass content/media imports index the action list once instead of scanning it per item). (#1017)

    Actions updated by a second pass are now updated in place, keeping their original position in the results list, rather than being moved to the end. Only display/reporting order is affected. Extender API: List<uSyncAction>.CreateActionIndex() and a matching UpdateActions(index, key, handlerAlias, attempt) overload are new.

  • Serializing, comparing and expanding large property values allocates far less, some previously on the large object heap. Inherited with the move to Jumoo.Json.

Extender API

  • ISyncManagementService gains UnpackStreamAsync(Stream); the synchronous UnpackStream(Stream) is now obsolete (removed in v19). (#1005)

Cleanup

  • Cleared the remaining build warnings left over from the Umbraco 18 upgrade: replaced ITemplate.MasterTemplateAlias with LayoutTemplateAlias, and inlined the legacy {localLink:x} parsing Umbraco is removing in v18. No behavioural changes. (#1002, #1003, #1004)

Full Changelog: v18.0.3...v18.1.0

Changelog

Sourced from @​jumoo/usync's changelog.

[18.1.0] - 2026-08-12

Added

  • Opt-in import state cache — uSync:Settings:CacheImportState (default false). uSync decides whether an item has changed by loading it from Umbraco, serializing the whole thing, and comparing hashes — for every item, every run. That means an import where nothing has changed costs roughly as much as a full export, which on sites with thousands of files is the entire run time.

    With this on, uSync remembers the hash of each file it has confirmed matches, and skips those items on the next run without a database lookup or a re-serialize. Import cost goes from O(all items) of database and serialization work to O(changed items).

    It only ever remembers a file where the full check actually ran and said "no change", or that uSync has just exported (so the file was written from the database and the two match by construction). It never assumes that because an import succeeded the two sides now agree. The practical effect is that the first run after turning it on is no faster than before — the benefit arrives on the second run. An export warms it too.

    The cache lives in the site's temp folder ({LocalTempPath}/uSync/cache/), never in the uSync folder, and is thrown away whenever the database, the uSync version, or the handler settings change. Items are forgotten when Umbraco says they have been saved, deleted, moved or published; changing a doc type, data type, template, language or container clears the whole cache, because those get embedded in other items' xml. A force import always ignores it.

    What it cannot see is a database change made by something that raises no Umbraco notification — raw SQL, for example — hence the default of off. Read https://github.com/KevinJump/uSync/blob/v18/main/docs/perf/state-cache.md before enabling it, in particular the limitations section, and the note for anyone writing a custom serializer that embeds data from another item.

    Implemented entirely through uSync's existing per-item notifications, so nothing in the import, report or serialization path changed.

  • Extender API: the cancelable per-item notifications (uSyncImportingItemNotification, uSyncReportingItemNotification, and anything else deriving from CancelableuSyncItemNotification<T>) gain an optional Message, used instead of uSync's generic "change stopped by delegate event" when you set it. The import and report ones also gain Force, so a subscriber that short-cuts the check because it believes nothing has changed can stand down when the user has asked for a forced import.

Changed

  • Ported the v17 allocation work: fewer redundant dictionary lookups on the hot paths (#997), and internal/private classes are now sealed so the JIT can

... (truncated)

Commits
  • 1e1a676 Update changelog for v18.1.0 release
  • ad482ae v18.1.0 - build files.
  • 3c3ff54 Use a dedicated Lock for the export claim, not Umbraco's dictionary (#1020)
  • c2b0b46 Port #997 and #998 (dictionary + sealed/Lock perf work) from v17 (#1019)
  • 4eeb3df Add opt-in import state cache (CacheImportState, default off) (#1016)
  • bad27d9 Only export content/element items once per save-and-publish (#1018)
  • 787d71c Optimisations for list lookups in import and reportings. (#1017)
  • 248f72f 18.1.0 RC Build with Jumoo.Json (#1015)
  • 22d3e36 Use Jumoo.Json for the json helpers (#1014)
  • ac7a497 Restore backoffice guard and content paging fixes dropped in v17->v18 merge (...
  • 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 <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the npm-dependencies group in /uSync.History/history-client with 1 update: [@jumoo/usync](https://github.com/KevinJump/uSync).


Updates `@jumoo/usync` from 18.0.3 to 18.1.0
- [Release notes](https://github.com/KevinJump/uSync/releases)
- [Changelog](https://github.com/KevinJump/uSync/blob/v18/main/CHANGELOG.md)
- [Commits](v18.0.3...v18.1.0)

---
updated-dependencies:
- dependency-name: "@jumoo/usync"
  dependency-version: 18.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-dependencies
...

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
@KevinJump KevinJump closed this Aug 25, 2026
@dependabot @github

dependabot Bot commented on behalf of github Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests.

To ignore these dependencies, configure ignore rules in dependabot.yml

@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/uSync.History/history-client/npm-dependencies-0766fd98ab branch August 25, 2026 15:35
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant