Changelog
12.6.1 (2024-02-26)
User#callFunction
to correctly pass arguments to the server. Previously they would be sent as an array, so if your server-side function used to handle the unwrapping of arguments, it would need an update too. The "functions factory" pattern of calling user.functions.sum(1, 2, 3)
wasn't affected by this bug. Thanks to @deckyfx for finding this and suggesting the fix! (#6447, since v12.0.0)util::Optional
to std::optional
.@realm/fetch
to the newly released v0.1.1 and no longer bundling it into the SDK package.tsc
utilizing TypeScript project references. (#6492)Changelog
12.6.0 (2024-01-29)
fetch
parameter to the AppConfiguration
. Use this to specify a custom implementation of the fetch
function used by the app to perform network requests.EOPNOTSUPP
when using posix_fallocate()
and fallback to manually consume space. This should enable android users to open a Realm on restrictive file systems. (#6349, since v12.2.0)incoming_changesets.size() != 0
when a download message is mistaken for a bootstrap message. This can happen if the synchronization session is paused and resumed at a specific time. (realm/realm-core#7238, since v10.12.0)__atomic_is_lock_free
on ARMv7 Linux. (realm/realm-core#7257)Changelog
12.5.1 (2024-01-03)
providerType
on a UserIdentity
via User.identities
always yielded undefined
. Thanks to @joelowry96 for pinpointing the fix.Changelog
12.5.0 (2023-12-19)
keyPaths
argument to the addListener
methods of Collection
and Object
. Use this to indicate a lower bound on the changes relevant for the listener. This is a lower bound, since if multiple listeners are added (each with their own "key paths") the union of these key-paths will determine the changes that are considered relevant for all listeners registered on the object or collection. In other words: A listener might fire more than the key-paths specify, if other listeners with different key-paths are present. (#6285)
// Adding a listener that will fire only on changes to the `location` property (if no other key-path listeners are added to the collection).
cars.addListener((collection, changes) => {
console.log("A car location changed");
}, ["location"]);
!m_sess
assertion. (realm/realm-core#7196, since v10.18.0)SyncSession
was explicitly resumed via reconnect()
while it was waiting to auto-resume after a non-fatal error and then another non-fatal error was received, the sync client could crash with a !m_try_again_activation_timer
assertion. (realm/realm-core#6961, since device sync was introduced)Collection
or Object
used to be undefined behavior. Now it throws, which results in runtime errors that can be resolved by ensuring that the callback is only added once per object. (#6310)Changelog
12.4.0 (2023-12-13)
RealmEventName
type. (#6300)Realm.Object
and Realm.Collection
objects on Node.js, by providing a custom "inspect" symbol. (#2758)When mapTo is used on a property of type List, an error like Property 'test_list' does not exist on 'Task' objects
occurs when trying to access the property. (#6268, since v12.0.0)
Fixed bug where apps running under JavaScriptCore on Android will terminate with the error message No identifiers allowed directly after numeric literal
. (#6194, since v12.2.0)
When an object had an embedded object as one of its properties, updating that property to null
or undefined
did not update the property in the database. (#6280, since v12.0.0)
Fixed download of platform + arch specific prebuilt binaries when building an Electron app using electron-builder
. (#3828)
Notification listeners on a Dictionary
would only fire when the dictionary itself changed (via inserts or deletions) but not when changes were made to the underlying objects. (#6310, since v12.0.0)
Fixed deadlock which occurred when accessing the current user from the App
from within a callback from the User
listener. (realm/realm-core#7183, since v12.2.1)
Errors encountered while reapplying local changes for client reset recovery on partition-based sync Realms would result in the client reset attempt not being recorded, possibly resulting in an endless loop of attempting and failing to automatically recover the client reset. Flexible sync and errors from the server after completing the local recovery were handled correctly. (realm/realm-core#7149, since v10.3.0-rc.1)
During a client reset with recovery when recovering a move or set operation on a List<Object>
or List<Mixed>
that operated on indices that were not also added in the recovery, links to an object which had been deleted by another client while offline would be recreated by the recovering client. But the objects of these links would only have the primary key populated and all other fields would be default values. Now, instead of creating these zombie objects, the lists being recovered skip such deleted links. (realm/realm-core#7112 since the beginning of client reset with recovery in v10.18.0)
During a client reset recovery a Set of links could be missing items, or an exception could be thrown that prevents recovery e.g., Requested index 1 calling get() on set 'source.collection' when max is 0
. (realm/realm-core#7112, since the beginning of client reset with recovery in v10.18.0)
Calling sort()
or distinct()
on a LnkSet
that had unresolved links in it would produce duplicate indices. (realm/realm-core#7112, since the beginning of client reset with recovery in v10.18.0)
Automatic client reset recovery would duplicate insertions in a list when recovering a write which made an unrecoverable change to a list (i.e. modifying or deleting a pre-existing entry), followed by a subscription change, followed by a write which added an entry to the list. (realm/realm-core#7155, since v10.19.4)
Fixed several causes of "decryption failed" exceptions that could happen when opening multiple encrypted Realm files in the same process while using Apple/linux and storing the Realms on an exFAT file system. (realm/realm-core#7156, since v1.0.0)
If the very first open of a flexible sync Realm triggered a client reset, the configuration had an initial subscriptions callback, both before and after reset callbacks, and the initial subscription callback began a read transaction without ending it (which is normally going to be the case), opening the frozen Realm for the after reset callback would trigger a BadVersion exception. (realm/realm-core#7161, since v10.19.4)
Changelog
12.3.1 (2023-11-23)
KeyNotFound
exception when subscriptions are marked complete after a client reset. (realm/realm-core#7090, since v10.19.0)DiscardLocal
client reset on a FLX Realm could leave subscriptions in an invalid state. (realm/realm-core#7110, since v10.19.4)Realm.List
by index, the new object would be inserted at the end rather than replacing the existing object at the given index. (#6239, since v12.0.0)SyncConfiguration.clientReset
was undefined
, no client reset mode was set which could lead to an app crash with the message m_mode != ClientResyncMode::Manual
. The default mode is now RecoverUnsyncedChanges
and no callbacks are defined. (#6260, since v12.0.0)realm-constants.json
file used for analytics / telemetry, which used to cause errors such as Unable to resolve module ../realm-constants.json
for users installing the package into a mono-repo. We're now storing this information in the realm/package.json
file instead. (#6144, since v12.0.0-rc.2)Changelog
12.3.0 (2023-11-03)
onBefore
, onAfter
, and onFallback
client reset callbacks were not called. (#6201, since v12.0.0)Symbol.unscopables
has been implemented on the base class of Realm.Results
, Realm.List
, and Realm.Set
. (#6215)Changelog
12.2.1 (2023-10-05)
Realm.User.providerType
is deprecated, and will be remove in next major version. Use Realm.User.identities
instead.write_not_allowed
error from the server would have led to a crash. (realm/realm-core#6978, since v11.5.0)Point
(case insensitive) an exception would have been thrown. Instead of disrupting the query, those objects are now just ignored. (realm/realm-core#6989, since v12.0.0)Realm.User
per auth provider. This mostly worked, but had some quirks:
Realm.User
used to create them. As a result, querying a user for its sessions could give incorrect results, and logging one user out could close the wrong sessions.Realm.User
s would delete all local Realm files for all Realm.User
s for that user.Realm.User
s left the other Realm.User
s in an invalid state.Realm.User
which was originally created via anonymous login and then linked to an identity would still be treated as an anonymous users and removed entirely on logout.