{"repo":"mutativejs/travels","free":true,"listed":false,"github":"https://github.com/mutativejs/travels","clone":"git clone https://github.com/mutativejs/travels.git","description":"A fast, framework-agnostic undo/redo core powered by Mutative JSON Patch","language":"TypeScript","stars":909,"topics":["time-tracking","undo-redo","redo","undo"],"license":"MIT","category":"productivity","readme_excerpt":"Travels Patch-based undo/redo optimized for large state, small updates, long history, and persistence. Travels gives your users the power to undo and redo their actions—essential for text editors, drawing apps, form builders, and any interactive application. Unlike traditional undo systems that copy entire state objects for each change, Travels stores only the differences (JSON Patches), making history much smaller to keep in memory and persist when updates touch a small part of a large state tree. Works with React, Vue, Zustand, or vanilla JavaScript. Table of Contents - Why Travels? Performance That Scales - Choosing the Right Undo Strategy - Installation - Quick Start - Core Concepts - API Reference - createTravels - Instance Methods - maxHistory option - Controlled Journal: Integrate an External State Owner - Mutable Mode: Keep Reactive State In Place - Archive Mode: Control When Changes Are Saved - State Requirements and Compatibility - Framework Integration - Persistence: Saving History to Storage - TypeScript Support - Advanced: Extending Travels with Custom Logic - Maintenance - Related Projects - License Why Travels? Performance That Scales Traditional undo systems clone your entire state object for each change. If your state is 1MB and the user makes 100 edits, that's 100MB of memory. Travels stores only the differences between states (JSON Patches following RFC 6902), so that same 1MB object with 100 small edits might use just a few kilobytes. Travels is not design","default_branch":null,"files":null,"tree":[],"storefront":"/r/mutativejs","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mutativejs/travels/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}