Realm
Realm is a mobile-first, open source object database designed to run directly inside phones, tablets, and wearables. It provides a simple, object-oriented data model that eliminates the need for an ORM, allowing developers to define models as regular classes in languages like Swift, Java, Kotlin, C#, JavaScript, Dart, and C++. Realm's architecture ensures high performance and low memory usage by employing a zero-copy design, lazy loading, and multi-version concurrency control (MVCC) for thread-safe operations. It's live objects and collections automatically update across threads, enabling reactive programming patterns. Realm supports relationships between objects via links and backlinks, facilitating complex data structures. Developers can utilize tools like Realm Studio to inspect and manipulate local Realm databases and integrate Realm into various platforms, including React Native, Flutter, Xamarin, and Node.js.
Learn more
RxDB
RxDB is a local-first, NoSQL JavaScript database optimized for modern web and mobile applications. It enables offline-first functionality by storing data directly on the client using storage engines like IndexedDB, OPFS, SQLite, and more. RxDB offers real-time reactivity, allowing developers to subscribe to changes in documents, fields, or queries, ensuring that UI components update automatically as data changes. Its flexible replication engine supports syncing with various backends and custom endpoints. RxDB integrates seamlessly with frameworks and environments. Additional features include field-level encryption, schema validation, conflict resolution, backup and restore, attachments, and CRDT support. By reducing server load and providing low-latency local queries, RxDB enhances performance and scalability, making it ideal for applications that require real-time updates, offline access, and cross-platform consistency.
Learn more
Dexie
Dexie.js is a minimalistic and bulletproof IndexedDB wrapper library designed to simplify client-side storage. At only ~29k minified and gzipped, it offers a concise API that addresses the complexities of native IndexedDB, such as ambivalent error handling, poor queries, lack of reactivity, and code complexity. Dexie.js provides a well-thought-through API design, robust error handling, extendability, change tracking awareness, and extended KeyRange support, including case-insensitive search, set matches, and OR operations. It embraces the IndexedDB specification and all its features, allowing developers to use existing IndexedDB data without the need for data migration. Dexie.js supports composable real-time queries, enabling components to mirror the database in real-time across various front-end frameworks like React, Svelte, Vue, and Angular. With Dexie Cloud, developers can build consistent, authenticated, and access-controlled local-first apps with just a few lines of extra code.
Learn more
Core Data
Use Core Data to save your application’s permanent data for offline use, to cache temporary data, and to add undo functionality to your app on a single device. To sync data across multiple devices in a single iCloud account, Core Data automatically mirrors your schema to a CloudKit container. Through Core Data’s Data model editor, you define your data’s types and relationships, and generate respective class definitions. Core Data can then manage object instances at runtime to provide several features. Core Data abstracts the details of mapping your objects to a store, making it easy to save data from Swift and Objective-C without administering a database directly. Core Data’s undo manager tracks changes and can roll them back individually, in groups, or all at once, making it easy to add undo and redo support to your app. Perform potentially UI-blocking data tasks, like parsing JSON into objects, in the background.
Learn more