Automerge-classic is the original pure JavaScript implementation of Automerge, a library for building collaborative applications that can handle concurrent modifications to shared data structures. The repository implements a CRDT (Conflict-free Replicated Data Type) that functions like a JSON-like data structure, allowing multiple users to modify the same document simultaneously and then automatically merge their changes without conflicts. This makes it particularly suited for offline-first applications where network connectivity cannot be guaranteed and users need to continue working independently before synchronizing their changes.
The library is designed to solve the fundamental challenge of distributed collaborative editing by ensuring that concurrent edits from different users can be merged deterministically without requiring manual conflict resolution. The data structure maintains consistency across all replicas even when changes arrive out of order or when some participants are temporarily offline. This approach enables peer-to-peer synchronization patterns where documents can be shared directly between clients without necessarily requiring a central server.
The repository is now marked as deprecated, with all active development having shifted to a new Rust-based implementation available at the automerge/automerge repository. The Rust implementation was chosen to enable easier porting to other programming languages and platforms beyond JavaScript. However, automerge-classic remains available as the original reference implementation and continues to be used by existing projects. The README directs users to the new implementation for ongoing development while noting that automerge-repo provides extensible TypeScript examples for those working with the newer version.
From a community perspective, the repository shows active engagement with a median issue and pull request response latency of 10.6 hours and a mean latency of 20.4 hours, indicating responsive maintainers. The most active contributors tracked include MeneDev with 8 events, ept with 6 events, and bminer with 5 events. Design discussions have been a focus area for the project, reflecting the complexity of implementing robust CRDT algorithms. The repository shares contributors with other projects including testcontainers implementations for Go and Java, suggesting cross-pollination of ideas within the distributed systems community.
Installation is straightforward through npm or yarn package managers, with the library importable as a standard JavaScript module. The development setup supports comprehensive testing through both Node.js and browser-based test suites, and the build system can create bundled JavaScript files suitable for direct inclusion in web applications via script tags. The project is released under the MIT license and was developed by the Automerge contributors between 2017 and 2021. Documentation is available at automerge.org, and the project maintains an active Slack community for users and contributors to discuss implementation details and use cases.