Skip to content

Commit 67047aa

Browse files
17.1.0
1 parent d228819 commit 67047aa

540 files changed

Lines changed: 4216 additions & 2300 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55

66
<!-- ADD new changes here! -->
77

8+
<!-- /CHANGELOG NEWEST -->
9+
10+
<!-- RELEASE BELOW -->
11+
12+
### 17.1.0 (2 April 2026)
13+
814
- FIX CRDT plugin `bulkInsert` hook not including schema default values in CRDT operations, causing data loss during conflict resolution rebuild when fields rely on schema defaults
915
- FIX `RxDocument.get$()` on nested object/array paths emitting spurious values when unrelated document fields changed, because `distinctUntilChanged()` used reference equality which always fails for non-primitive values across document revisions
1016
- FIX `incrementalUpsert()` throwing a CONFLICT error when a concurrent `upsert()`/`insert()` creates the same document between the internal `findOne()` and `insert()` calls
@@ -44,10 +50,6 @@
4450
- FIX `modify()` not deep-cloning document data, allowing the modifier to corrupt internal state via shared nested references
4551
- FIX `fillObjectWithDefaults` shared mutable references for non-primitive schema defaults (arrays/objects) causing corrupted values on subsequent inserts
4652

47-
<!-- /CHANGELOG NEWEST -->
48-
49-
<!-- RELEASE BELOW -->
50-
5153
### 17.0.0 (30 March 2026)
5254

5355
🚀 **RxDB v17 is released**

docs/404.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
<link rel="preconnect" href="https://region1.analytics.google.com/">
2525
<link rel="preconnect" href="https://www.redditstatic.com/">
2626
<link rel="preconnect" href="https://pixel-config.reddit.com/">
27-
<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"RxDB","applicationCategory":"DeveloperApplication","operatingSystem":"Any","description":"A fast, local-first, reactive NoSQL database for JavaScript applications. Supports offline-first sync, real-time replication, and works across browsers, Node.js, Electron, React Native, and Flutter.","url":"https://rxdb.info","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"author":{"@type":"Organization","name":"RxDB","url":"https://rxdb.info","logo":"https://rxdb.info/files/logo/logo.svg","sameAs":["https://github.com/pubkey/rxdb","https://twitter.com/rxdbjs","https://www.linkedin.com/company/rxdb"]}}</script><link rel="stylesheet" href="/assets/css/styles.c4ad5381.css">
28-
<script src="/assets/js/runtime~main.6c7d7d21.js" defer="defer"></script>
29-
<script src="/assets/js/main.14b67b9c.js" defer="defer"></script>
27+
<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"RxDB","applicationCategory":"DeveloperApplication","operatingSystem":"Any","description":"A fast, local-first, reactive NoSQL database for JavaScript applications. Supports offline-first sync, real-time replication, and works across browsers, Node.js, Electron, React Native, and Flutter.","url":"https://rxdb.info","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"author":{"@type":"Organization","name":"RxDB","url":"https://rxdb.info","logo":"https://rxdb.info/files/logo/logo.svg","sameAs":["https://github.com/pubkey/rxdb","https://twitter.com/rxdbjs","https://www.linkedin.com/company/rxdb"]}}</script><link rel="stylesheet" href="/assets/css/styles.b6175f39.css">
28+
<script src="/assets/js/runtime~main.f2369db7.js" defer="defer"></script>
29+
<script src="/assets/js/main.7f109a48.js" defer="defer"></script>
3030
</head>
3131
<body class="navigation-with-keyboard">
3232
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PL63TR5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>

docs/adapters.html

Lines changed: 19 additions & 12 deletions
Large diffs are not rendered by default.

docs/alternatives.html

Lines changed: 6 additions & 6 deletions
Large diffs are not rendered by default.

docs/alternatives.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ In the past, RxDB supported using [LokiJS as RxStorage](./rx-storage-lokijs.md)
157157

158158
### Gundb
159159

160-
GUN is a JavaScript graph database. While having many features, the **decentralized** replication is the main unique selling point. You can replicate data Peer-to-Peer without any centralized backend server. GUN has several other features that are useful on top of that, like encryption and authentication.
160+
GUN is a JavaScript graph database. While having many features, the **decentralized** replication is the main unique selling point. You can replicate data Peer-to-Peer without any centralized backend server. GUN has several other features that are useful on top of that, like [encryption](./encryption.md) and authentication.
161161

162162
While testing it was really hard to get basic things running. GUN is open source, but because of how the source code [is written](https://github.com/amark/gun/blob/master/src/put.js), it is very difficult to understand what is going wrong.
163163

@@ -188,7 +188,7 @@ RxDB supports using [Dexie.js as Database storage](./rx-storage-dexie.md) which
188188

189189
LowDB is a small, local JSON database powered by the Lodash library. It is designed to be simple, easy to use, and straightforward. LowDB allows you to perform native JavaScript queries and persist data in a flat JSON file. Written in TypeScript, it's particularly well-suited for small projects, prototyping, or when you need a lightweight, file-based database.
190190

191-
As an alternative to LowDB, [RxDB](./) offers real-time reactivity, allowing developers to subscribe to database changes, a feature not natively available in LowDB. Additionally, RxDB provides robust [query capabilities](./rx-query.md), including the ability to subscribe to query results for automatic UI updates. These features make RxDB a strong alternative to LowDB for more complex and dynamic applications.
191+
As an alternative to LowDB, [RxDB](./) offers real-time [reactivity](./reactivity.md), allowing developers to subscribe to database changes, a feature not natively available in LowDB. Additionally, RxDB provides robust [query capabilities](./rx-query.md), including the ability to subscribe to query results for automatic UI updates. These features make RxDB a strong alternative to LowDB for more complex and dynamic applications.
192192

193193
### localForage
194194
localForage is a popular JavaScript library for offline storage that provides a simple, promise-based API. It abstracts over different storage mechanisms such as [IndexedDB](./rx-storage-indexeddb.md), WebSQL, or [localStorage](./articles/localstorage.md), making it easier to write code once and have it work seamlessly across various browsers. While localForage is great for storing data locally in a key-value manner, it doesn't provide the real-time reactive queries, [conflict handling](./transactions-conflicts-revisions.md), or revision-based replication that RxDB does. This makes localForage a useful choice for straightforward caching or persistent storage needs, but not ideal for advanced offline-first scenarios requiring multi-user collaboration or complex querying.

docs/articles/angular-database.html

Lines changed: 6 additions & 6 deletions
Large diffs are not rendered by default.

docs/articles/angular-database.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ RxDB stands for Reactive Database and is built on the principles of reactive pro
3131
To begin our journey with RxDB, let's understand its key concepts and features.
3232

3333
### What is RxDB?
34-
[RxDB](https://rxdb.info/) is a client-side database that follows the principles of reactive programming. It is built on top of IndexedDB, the [native browser database](./browser-database.md), and leverages the RxJS library for reactive data handling. RxDB provides a simple and intuitive API for managing data and offers features like data replication, multi-tab support, and efficient query handling.
34+
[RxDB](https://rxdb.info/) is a client-side database that follows the principles of reactive programming. It is built on top of IndexedDB, the [native browser database](./browser-database.md), and leverages the RxJS library for reactive data handling. RxDB provides a simple and intuitive API for managing data and offers features like data [replication](../replication.md), multi-tab support, and efficient query handling.
3535

3636
<center>
3737

@@ -48,7 +48,7 @@ At the core of RxDB is the concept of reactive data handling. RxDB leverages obs
4848
One of the standout features of RxDB is its offline-first approach. It allows you to build applications that can work seamlessly in offline scenarios. RxDB stores data locally and automatically synchronizes changes with the server when the network becomes available. This capability is particularly useful for applications that need to function in low-connectivity or unreliable network environments.
4949

5050
### Data Replication
51-
RxDB provides built-in support for data replication between clients and servers. This means you can synchronize data across multiple devices or instances of your application effortlessly. RxDB handles conflict resolution and ensures that data remains consistent across all connected clients.
51+
RxDB provides built-in support for data replication between clients and servers. This means you can synchronize data across multiple devices or instances of your application effortlessly. RxDB handles [conflict resolution](../transactions-conflicts-revisions.md) and ensures that data remains consistent across all connected clients.
5252

5353
### Observable Queries
5454
RxDB offers a powerful querying mechanism with support for [observable queries](../rx-query.md). This allows you to create dynamic queries that automatically update when the underlying data changes. By leveraging RxDB's observable queries, you can build reactive UI components that respond to data changes in real-time.

0 commit comments

Comments
 (0)