For a library for building local-first applications, the strongest matches are yjs/yjs (Yjs is a CRDT-based shared data type library and), automerge/automerge (Automerge is a CRDT-based state synchronization library that provides) and orbitdb/orbit-db (OrbitDB is a decentralized CRDT-based NoSQL database that runs). n0-computer/iroh and orbitdb/orbitdb round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Explore the best local-first development tools. Compare top open-source libraries for offline-ready apps, ranked by activity to find the best fit.
Yjs is a CRDT framework and real-time state synchronization engine providing shared data types for collaborative software. It functions as a shared data type library of collaborative maps, arrays, and text structures that converge automatically across distributed clients, serving as a local-first data store and a collaborative editor backend. The system distinguishes itself through a synchronization engine that encodes document changes into commutative binary updates. It employs state-vector based differencing to transmit only missing incremental updates between peers and uses relative-positi
Yjs is a CRDT-based shared data type library and real-time synchronization engine that natively supports offline-first persistence, automatic conflict resolution, and peer-to-peer data sharing, making it a direct fit for building local-first applications with eventual synchronization.
Automerge is a distributed state synchronization engine and library for conflict-free replicated data types. It enables multiple nodes to perform concurrent updates to a shared dataset while guaranteeing that all replicas eventually converge to the same state. The project provides a high-performance implementation written in Rust to manage state merging and synchronization. It employs a byte-compressed synchronization protocol to transmit minimal delta updates between peers, facilitating data consistency in peer-to-peer and real-time collaborative environments. The system covers broad capabi
Automerge is a CRDT-based state synchronization library that provides offline-first data persistence, automatic conflict resolution, and peer-to-peer sync, directly enabling the local-first architecture you are looking for.
Orbit DB is a decentralized NoSQL database that utilizes conflict-free replicated data types to ensure eventual consistency across a network of nodes. It functions as a peer-to-peer data store that uses IPFS for content-addressing and synchronization, allowing for the maintenance of application state without a central server or authority. The system is built upon a cryptographically verifiable, immutable operation log, which serves as the foundation for custom decentralized data models. This architecture enables the implementation of various data storage patterns, including JSON document stor
OrbitDB is a decentralized CRDT-based NoSQL database that runs locally and syncs peer-to-peer, providing offline-first data persistence, automatic conflict resolution, and realtime synchronization — directly enabling the local-first architecture you want.
Iroh is a peer-to-peer networking stack and distributed system designed for secure direct connections, content-addressed storage, and synchronized data sharing. It provides a foundation for decentralized applications by combining a QUIC-based networking layer with primitives for distributed state and data transfer. The project distinguishes itself through a comprehensive suite of decentralized capabilities, including a distributed data store using conflict-free replicated data types for collaborative synchronization and a content-addressed storage system for verifiable, resumable transfers of
Iroh is a Rust library providing a P2P networking and sync layer with CRDT-based conflict resolution, content-addressed local storage, and secure data transfer — directly enabling the offline-first, eventual-sync architecture this search targets.
OrbitDB is a decentralized data storage system that enables the creation of serverless databases residing across a network of peers. It functions as a peer-to-peer database that integrates with a content-addressed storage layer to distribute and replicate data without a central server. The system utilizes conflict-free replicated data types to ensure eventual consistency and state convergence across distributed nodes. It maintains an immutable record of updates using a directed acyclic graph to preserve causal ordering and cryptographic integrity. Access is managed through a decentralized ide
OrbitDB is a peer-to-peer database using CRDTs and IPFS to offer offline-first persistence, automatic conflict resolution, realtime sync, and data encryption — exactly the kind of library for building local-first applications with decentralized synchronization.
WatermelonDB is an offline-first data synchronization engine and reactive database library designed for mobile and web applications. It provides a persistent storage layer backed by SQLite, enabling applications to maintain full functionality and data consistency while operating without an internet connection. The framework distinguishes itself through a reactive data binding system that automatically updates user interface components whenever underlying database records change. It utilizes schema-driven model mapping to generate type-safe interfaces and employs lazy object materialization to
WatermelonDB is an offline-first reactive database and sync engine for React/React Native apps, providing an embedded SQLite store with automatic data binding and synchronization — which directly fits the need for a local-first development library with core offline persistence and sync capabilities.
This is a mobile object database and NoSQL local data store that replaces relational tables with a schema-based model. It functions as a reactive data store, using live object observations and change notifications to trigger automatic user interface refreshes. The system provides built-in mobile cloud data synchronization to keep local datasets consistent with a remote server across multiple devices. It also includes security features for encrypted local storage, protecting sensitive on-disk data using at-rest encryption keys and fine-grained access control. Broad capabilities include object
Realm Swift is a mobile object database with built-in sync, offline-first persistence, automatic conflict resolution, live change notifications, and encryption — a comprehensive local-first framework for building apps that work offline and sync seamlessly.
PouchDB is a JavaScript NoSQL document database that runs directly in the browser. It serves as an offline-first data store that allows applications to save state and user data locally using persistent storage. The database is compatible with CouchDB, implementing its API to enable synchronization between browser environments and remote servers. This allows for cross-device data syncing and the development of local-first software that operates without a constant internet connection. The project covers data storage and synchronization capabilities, including the ability to migrate database sc
PouchDB is a browser-based NoSQL database purpose-built for offline-first applications, providing local persistent storage and automatic synchronization with CouchDB servers — a genuine local-first development library, even though it lacks peer-to-peer sharing and built-in client-side encryption.
This project is a reactive, offline-first NoSQL database engine designed for JavaScript applications. It provides a robust framework for managing application state by synchronizing data across browsers, mobile devices, and server-side runtimes. By treating local storage as the primary source of truth, it enables applications to remain functional without network connectivity, automatically reconciling changes with remote backends once a connection is restored. The database distinguishes itself through a modular architecture that supports cross-environment synchronization and high-performance d
RxDB is an offline-first NoSQL database engine for JavaScript that treats local storage as the primary source of truth, providing realtime sync, conflict resolution (via CRDTs), and support for multiple embedded databases — exactly the kind of local-first development library this search is after.
json-joy is a comprehensive library for building real-time collaborative applications and distributed systems. It provides a robust framework for managing shared JSON-like data structures that automatically merge concurrent edits from multiple users, ensuring consistent state across all replicas without requiring a central coordination server. The project distinguishes itself through a high-performance approach to data handling, utilizing conflict-free replicated data types and logical clock-based synchronization to maintain data integrity. It includes a specialized engine for navigating and
json-joy is a CRDT-based library for building real-time collaborative local-first applications with automatic conflict resolution and peer-to-peer sync, covering offline capability and eventual consistency, though it does not explicitly include an embedded local database or client-side encryption out of the box.
The reverse-linear-sync-engine is a data synchronization framework designed to manage distributed application state. It provides a system for tracking local data mutations, resolving discrepancies between multiple sources, and maintaining consistency across connected clients through a centralized transaction-based model. The engine distinguishes itself by integrating reactive state observation with a transaction history stack. This combination allows the framework to automatically refresh interface components when data changes while simultaneously enabling precise undo and redo functionality.
This is a JavaScript sync engine library that covers real-time synchronization and conflict resolution, key components for local-first development, but it focuses on the sync layer rather than providing a full offline-first stack with embedded database or encryption.
| Repository | Stars | Sprache | Lizenz | Letzter Push |
|---|---|---|---|---|
| yjs/yjs | 22.1K | JavaScript | NOASSERTION | |
| automerge/automerge | 6.4K | JavaScript | MIT | |
| orbitdb/orbit-db | 8.8K | JavaScript | MIT | |
| n0-computer/iroh | 7.9K | Rust | apache-2.0 | |
| orbitdb/orbitdb | 8.7K | JavaScript | mit | |
| nozbe/watermelondb | 11.7K | JavaScript | MIT | |
| realm/realm-swift | 16.6K | Objective-C | Apache-2.0 | |
| pouchdb/pouchdb | 17.6K | JavaScript | Apache-2.0 | |
| pubkey/rxdb | 23K | TypeScript | apache-2.0 | |
| streamich/json-joy | 1.1K | TypeScript | NOASSERTION |