# Automerge

A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.

Repository: https://github.com/automerge/automerge
Canonical: https://ross.abutalabs.com/products/automerge
Homepage: https://automerge.org
Language: JavaScript
License: MIT
License Family: permissive
Last push: 2026-08-24T00:55:23+00:00
Link (homepage): https://automerge.org
Link (site_page): https://automerge.org/docs/hello
Link (site_page): https://automerge.org/docs/tutorial/react
Link (site_page): https://automerge.org/docs/reference/library-initialization
Link (site_page): https://automerge.org/docs/reference/repositories

## Health v2 (maintenance only)
Score: 98/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 99, release rhythm 97, longevity 100
- inputs: {"age_days": 2442, "days_push": 10, "days_rel": 21, "gap_med": 24.0, "n_releases_24m": 17}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 6532, forks 265 (observed 2026-08-28T04:09:44.971339+00:00)

## What it is
Automerge is a JSON-like CRDT (conflict-free replicated data type) library that lets multiple users modify application state concurrently, even offline, and automatically merge changes without conflicts or data loss. It is implemented in Rust and compiled to WebAssembly for JavaScript environments, with automerge-repo providing storage and networking plumbing for building local-first multiplayer apps.

## Use cases
- build collaborative apps where multiple users edit the same document
- sync app state across devices while working offline
- merge concurrent edits to JSON-like data without conflicts
- add multiplayer cursors and real-time collaboration to a React app
- keep a local-first source of truth mirrored on every client
- track document history and branch or diff changes like Git
- sync data over websockets, WebRTC, or any connection-oriented protocol

## When to choose
- you need automatic conflict-free merging of structured JSON-like data
- your app must work fully offline and sync when reconnected
- you want version history, branching, and diffing for application state
- you are building multiplayer or local-first applications in JavaScript/TypeScript
- you need a network-agnostic sync engine that works with any transport

## When to avoid
- you only need plain-text collaborative editing with a mature editor ecosystem (consider Yjs)
- you need a centralized server-authoritative database with strong consistency guarantees
- your data model is simple and a traditional backend with optimistic UI suffices
- you require very small bundle sizes and cannot accommodate a WebAssembly module

## Facets
- artifact type: library
- maturity: active
- function: serialization, concurrency, state-management, sdk
- domain: microservices, web-development, frontend, developer-tools, cross-platform
- platform: browser, wasm, rust, cross-platform
- tags: crdt, local-first, offline-first, collaborative-editing, data-sync, conflict-free-replicated-data-type, multiplayer, version-control-for-data, real-time, javascript, nodejs

## Member repositories
- automerge/automerge (main) score 98
- automerge/automerge-classic (mirror) score 32

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:09:44.971339+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:07:18.970745+00:00, confidence not recorded.
  - readme: https://github.com/automerge/automerge (fetched 2026-08-28T04:09:44.971339+00:00, sha e0bb69ef3a16)
  - homepage: https://automerge.org (fetched 2026-08-29T08:06:10.434686+00:00, sha ae13d22873ec)
  - site_page: https://automerge.org/docs/hello (fetched 2026-08-29T08:06:10.438105+00:00, sha 4fa572533c42)
  - site_page: https://automerge.org/docs/tutorial/react (fetched 2026-08-29T08:06:10.440255+00:00, sha d09aab162ad9)
  - site_page: https://automerge.org/docs/reference/library-initialization (fetched 2026-08-29T08:06:10.442580+00:00, sha 9125f1dec69b)
  - site_page: https://automerge.org/docs/reference/repositories (fetched 2026-08-29T08:06:10.445326+00:00, sha 2ceb8be35fa6)
  - registry_npm: https://registry.npmjs.org/automerge-classic (fetched 2026-08-29T08:06:10.447213+00:00, sha e9362c2858bc)
- Data as of 2026-08-30T08:39:29.467469+00:00.
