Angular Undo Redo History Store | ng-hub-ui-history

Angular undo and redo history store with Signals-friendly APIs, transactions, limits and reactive form support.

Last updated Aug 8, 2026

Overview

Why teams search for this library

Use this Angular history store when you need undo and redo on complex state without introducing a full external state library.

Install

npm install ng-hub-ui-history

Jump to

Ideal for

  • editors
  • form builders
  • low-code tools
  • configuration UIs

About history

ng-hub-ui-history is especially useful in Angular editors, form builders and configuration screens where the user expects to go backwards safely. It brings undo and redo patterns to stateful workflows without forcing a heavyweight architecture decision.

Feature guides

Manual Commits and Time Travel

Track state changes and travel backwards/forwards through linear history.

Examples:
Basic History

Manual commit, undo and redo.

{
  "title": "Getting Started with History",
  "description": "Edit and commit to create undo/redo entries."
}

Nested Objects and Arrays

Use patch-based tracking for deep object graphs and list mutations.

Examples:
Nested Object History

Nested properties and dynamic list updates.

{
  "id": "invoice-1",
  "customer": {
    "name": "Acme Corp",
    "city": "Madrid"
  },
  "lines": [
    {
      "name": "Support plan",
      "quantity": 1,
      "unitPrice": 150
    }
  ]
}

Automatic Form Tracking

Auto-commit form value changes with built-in watch helpers.

Examples:
Reactive Form Watch

watchForm() for automatic commits from FormGroup.

{
  "name": "Maria",
  "email": "maria@demo.local",
  "role": "Editor"
}

Transactions and Retention

Group multiple operations into one entry and trim old entries by configured limits.

Examples:
Transactions + Limits

Consolidated commits and FIFO retention.

Pointer: -1 / Entries: 0 / Bytes: 0

{
  "id": "transaction-editor",
  "title": "Release notes draft",
  "content": "Initial draft content.",
  "tags": [
    "draft"
  ]
}

Key features

Recent changes

Version 22.0.2 - 8/8/26, 12:00 AM

fixed: Documentation links now point at the canonical localized URLs. The README linked to https://hubui.dev/<path> with no locale prefix and no trailing slash, and both forms are 301-redirected, so every reader arriving from npm or GitHub landed on a redirect instead of the canonical page.

Version 22.0.1 - 7/28/26, 12:00 AM

added: Test suite for the diff/patch/clone utilities and multi-object undo/redo: cloneDeep isolation (nested structures, Dates), createDefaultDiff/applyDefaultPatch round-trips across representative shapes (nested objects, array insert/remove/reorder, key deletion, null transitions, deep nesting), estimateBytes sanity, and store-level coverage for independent per-object timelines, no-op transactions and redo invalidation after transactional commits. No runtime changes.

Version 22.0.0 - 6/17/26, 12:00 AM

changed: Aligned with Angular 22.

changed: README documentation standardized.

Version 0.1.0 - 2/23/26, 12:00 AM

added: Initial release with multi-object linear history.

added: Undo/redo, transactions, and maxEntries/maxBytes retention limits.

added: Reactive Forms auto-commit integration via watchForm().