- Added support for finding Realm-level permissions in Query-based Realms using
realm.getPermissions()
. (#2036) - Added support for finding Class-level permissions in Query-based Realms using
realm.getPermissions(className)
. (#2036) - Added
Realm.Permissions.Realm.findOrCreate(roleName)
andRealm.Permissions.Class.findOrCreate(roleName)
which makes it easier to find or create permissions for a given role when using query-based Realms. (#2036)
- Allow
Realm.deleteFile
to be used with a sync configuration. Previously, only local Realms could be deleted with this API and thesync
property on the configuration would be ignored. (#2045, since v1.0.0)
- File format: ver. 7 (upgrades automatically from previous formats)
- Realm Object Server: 3.11.0 or later.
- APIs are backwards compatible with all previous release of realm in the 2.x.y series.
- None.
- None.
- None.
- File format: ver. 7 (upgrades automatically from previous formats)
- You will need to upgrade your Realm Object Server to at least version 3.11.0 or use Realm Cloud.
If you try to connect to a ROS v3.10.x or previous, you will see an error like
Wrong protocol version in Sync HTTP request, client protocol version = 25, server protocol version = 24
. - APIs are backwards compatible with all previous release of realm in the 2.x.y series.
- None.
- When using a synced Realm where you only receive updates from the server and never update the realm locally, the client will now report download progress to the server such that it can compact files on the server. This enhancement doesn't affect the client.
- File format: ver. 7 (upgrades automatically from previous formats)
- You will need to upgrade your Realm Object Server to at least version 3.11.0 or use Realm Cloud.
If you try to connect to a ROS v3.10.x or previous, you will see an error like
Wrong protocol version in Sync HTTP request, client protocol version = 25, server protocol version = 24
. - APIs are backwards compatible with all previous release of realm in the 2.x.y series.
- Upgraded to Realm Core v5.11.1.
- Upgraded to Realm Sync v3.10.0 (with new protocol version 25).
- None.
- Fixed a bug where logging in using an admin token returned a promise. The correct behavior is to be synchronous. (related to #2037, since v2.16.1)
- File format: ver. 7 (upgrades automatically from previous formats)
- Realm Object Server: 3.0.0 or later.
- APIs are backwards compatible with all previous release of realm in the 2.x.y series.
- None.
- None.
- Fixed a bug in creating credentials using an admin token. The app would stop saying
then()
is not a function. (#2037, since v2.16.0-rc.2)
- File format: ver. 7 (upgrades automatically from previous formats)
- Realm Object Server: 3.0.0 or later.
- APIs are backwards compatible with all previous release of realm in the 2.x.y series.
- None.
- Fixed the type definition for
Realm.Permissions.User
. Thanks to @apperside! (#2012, since v2.3.0-beta.2) - When adding a schema definition (e.g.
let config = user.createConfiguration(); config.schema = [Dog, Person]
) the permission schema would be removed, resulting in anunknown object type __Permission
if using query based Realm. (#2017, since v2.3.0). - As part of including the permission schema implicitly when using query based Realm, the schema
Realm.Permissions.Realm
was missing, which may break any query including it. (#2016, since v2.3.0) - Fixed the type definition for
Realm.getPrivileges()
,Realm.getPrivileges(className)
andRealm.getPrivileges(object)
. (#2030, since v2.2.14)
- None
- Realm Object Server: 3.0.0 or later
- File format: ver 7. (upgrades from previous formats automatically)
- None.
-
The authentication API has been completely revamped. (#2002)
- The following methods have been deprecated and will be removed at a next major version:
Realm.Sync.User.login
Realm.Sync.User.register
Realm.Sync.User.authenticate
Realm.Sync.User.registerWithProvider
Realm.Sync.User.adminUser
- A new
Realm.Sync.User.login
method has been added that accepts the server url and a credentials object. - A new class -
Realm.Sync.Credentials
has been added that contains factory methods to create credentials with all supported providers. - Here are some examples on how to transform your old code to use the new API:
Old New const user = await Realm.Sync.User.login(serverUrl, 'username', 'password');
const credentials = Realm.Sync.Credentials.usernamePassword('username', 'password');
const user = await Realm.Sync.User.login(serverUrl, credentials);
const jwtToken = 'acc3ssT0ken...';
const user = await Realm.Sync.User.registerWithProvider(serverUrl, 'jwt', jwtToken);
const jwtToken = 'acc3ssT0ken...';
const credentials = Realm.Sync.Credentials.jwt(jwtToken);
const user = await Realm.Sync.User.login(serverUrl, credentials);
const customToken = 'acc3ssT0ken...';
const userInfo = { someValue: true };
const user = await Realm.Sync.User.registerWithProvider(serverUrl, 'custom/fooauth', customToken, userInfo);
const customToken = 'acc3ssT0ken...';
const userInfo = { someValue: true };
const credentials = Realm.Sync.Credentials.custom('custom/fooauth', customToken, userInfo);
const user = await Realm.Sync.User.login(serverUrl, credentials);
- The following methods have been deprecated and will be removed at a next major version:
-
Exposed
Realm.Sync.User.serialize()
to create a persistable representation of a user instance, as well asRealm.Sync.User.deserialize()
to later inflate aUser
instance that can be used to connect to Realm Object Server and open synchronized Realms. (#1276) -
Added
Realm.Sync.Session.pause()
andRealm.Sync.Session.resume()
to allow controlling when to sync data. (#2014) -
Added support for
LIMIT
in queries to restrict the size of the results set. This is in particular useful for query-based synced Realms. An example of the syntax isage >= 20 LIMIT(2)
. (#2008)
- Fixed the type definition for
User.authenticate()
. (#2000, since v2.2.0) - Added
Realm.Sync.Subscription.removeAllListeners()
to theSubscription
proxy class used when debugging a React Native app. (#474, since v2.3.2) - Fixed a memory corruption in
writeCopyTo()
when using encryption. This could be experienced as:Error: Unable to open a realm at path ...
. Thanks to @mandrigin! (#1748, since v2.3.4) - Fixed the type definitions for
Session.addConnectionNotification()
andSession.removeConnectionNotification()
. Thanks to @gabro! (#2003, since v2.15.0) - Removed a false negative warning when using
User.createConfiguration()
. (#1989, since v2.15.3) - Fixed a bug where
Realm.write()
crashed with segmentation fault when trying to insert a record without providing values for the properties that are optional in the schema. (#479, since v2.15.3)
- Realm Object Server: 3.0.0 or later
- File format: ver 7. (upgrades from previous formats automatically)
- Upgraded to Realm Core v5.10.0.
- Upgraded to Realm Sync v3.9.9.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed a bug if
fullSynchronization
is not defined in the configuration used for opening a synced Realm. This could lead to an exception when opening a synced Realm (#1989).
- Realm Core v5.7.2.
- Realm Sync v3.9.1.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed a bug that would cause the Global Notifier to crash with the following error message:
A schema version must be specified when the schema is specified
.
- Realm Core v5.7.2.
- Realm Sync v3.9.1.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- [Sync] Added
Realm.Sync.ConnectionState
representing the states a connection to the server can be in. - [Sync] Added support for
Session.addConnectionNotification()
andSession.removeConnectionNotification
. - [Sync] Added
Session.connectionState
. - [Sync] Added
Session.isConnected()
. - [Sync] Added a check to prevent the case where query-based sync is opened without a schema. It is not possible to deduce the schema, and subscribing to a query-based sync will lead to an error if no schema is defined (#1976).
- React Native for Android now supports the Android Gradle Plugin 3.0 (#1742).
- [Sync] Fixed a crash in subscription listeners (#1926).
- [Sync] Classes used by the Object-level permission system are now automatically part of the schema for Query-based Realms (#1966).
- [Sync] Fixed distinct queries with query-based sync (broken since v2.11.0).
- Support parallel run of muliple iOS builds with React Native on the same CI machine (contributed by @mandrigin).
- [Sync] Fixed a bug in the client where a session was not properly discarded after a deactivation process ending with the reception of an ERROR message. When this happened, it would lead to corruption of the client's internal datastructures.
- Updated to Object Store commit: 97fd03819f398b3c81c8b007feaca8636629050b
- Updated external packages with help from
npm audit
. - Upgraded to Realm Sync v3.9.1 (to match the devtoolset-6 upgrade).
- Upgraded to devtoolset-6 on Centos for Linux builds.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- [Sync] Fixed a potential memory corruption.
- Realm Core v5.7.2.
- Upgraded to Realm Sync v3.8.8.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- [Sync] The schema definition for
permissionsSchema.Class
defined aclass_name
property instead ofname
(#1942).
- Upgraded to Realm Core v5.7.2.
- Upgraded to Realm Sync v3.8.7.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- [Sync] Various bugfixes.
- Upgraded to Realm Core v5.7.2.
- Upgraded to Realm Sync v3.8.3.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- [Sync] Improved performance of changeset parsing.
- [Sync] Fixed a bug in the build system which prevented OpenSSL to be linked (#1864)
- Fixed a bug in RN Android which prevented apps to specify
minSdkVersion
, etc. (#1914).
- Upgraded to Realm Core v5.7.1.
- Upgraded to Realm Sync v3.8.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Improved performance of creating objects with string primary keys.
- Improved memory management to allow larger transactions.
- Improved performance of
realm.create()
when running in node.
- Fixed a bug which caused RN Android to fail loading (#1904).
- Upgraded to Realm Core v5.6.5.
- Upgraded to Realm Sync v3.7.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Improved performance for devices which can support large address spaces.
- [Sync] Exposed custom HTTP headers in
Realm.Configuration
(#1897). - Improved performance of
Realm.compact()
.
- [RN Android] Ported workaround for crashes in
memmove
/memcpy
on some old Android devices (#1163 and #1895).
- Upgraded to Realm Core v5.6.3.
- Upgraded to Realm Sync v3.5.8.
- Added properties of
Realm.Sync.User
to debugger support. - Fixed class names in API documentation (wrong names were introduced in v2.6.0).
- Added prebuilding for Electron v2.0 (Electron is not supported).
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Added
Realm.createTemplateObject(objectSchema)
(#1870).
- [Sync] Fixed a bug which could potentially flood Realm Object Server with PING messages.
- Upgraded to Realm Sync v3.5.6.
- Realm Core v5.6.2.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Added support for compacting synchronized Realms and allowed setting the
shouldCompactOnLaunch
config property for them.
- Fix incorrect documentation of the
shouldCompactOnLaunch
parameters.
- Realm Core v5.6.2.
- Realm Sync v3.5.5.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- [Sync] Fixed a bug that could result in a crash with the message "bad changeset error".
- Upgraded to Realm Sync v3.5.5.
- Realm Core v5.6.2.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed a potential corruption.
- Upgraded to Realm Core v5.6.2.
- Upgraded to Realm Sync v3.5.4.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed a bug in how arrays of primitive types are represented. The bug prevented a schema from one Realm to be used when opening another (#1847).
- Added a more readable error message in the query parser when requesting an a bad argument (#1808).
- Upgraded to Realm Core v5.6.1.
- Upgraded to Realm Sync v3.5.3.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- [Sync] Fixed a problem which would sometimes cause
bad permission object
andbad changeset
errors.
- Upgraded to Realm Sync v3.5.2.
- Realm Core v5.6.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Add the
oldModifications
andnewModifications
properties to the listener change objects, which report the indices that changed in the collection both before and after the changes being notified for. Themodifications
property is kept as an alias foroldModifications
but might be removed in a future version.
- [Sync] Fixed a bug which crash query-based Realms. A bug in gcc's optimizer will generate code which in some case will lead to a memory violation and eventually a segmentation fault.
- Changed download URL for Linux binaries (
scripts/download-realm.js
). - Upgraded to Realm Sync v3.5.1.
- Realm Core v5.6.0.
- Realm Sync v3.5.1.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
The feature known as Partial synchronization has been renamed to Query-based synchronization and is now the default mode for synchronized Realms. This has impacted a number of APIs. See below for the details.
- [Sync]
Realm.Configuration.SyncConfiguration.partial
has been deprecated in favor ofRealm.Configuration.SyncConfiguration.fullSynchronization
. - [Sync]
Realm.automaticSyncConfiguration()
has been deprecated in favor ofRealm.Sync.User.createConfiguration()
.
- None.
- [Sync]
Realm.Configuration.SyncConfiguration.fullSynchronization
has been added. - [Sync]
Realm.Sync.User.createConfiguration(config)
has been added for creating default and user defined sync configurations.
- Fixed TypeScript definition of
Realm.objects()
andRealm.objectForPrimaryKey()
(#1803).
- [Sync]
Realm.Configuration.SyncConfig._disablePartialSyncUrlChecks
has been renamed toRealm.Configuration.sync._disableQueryBasedSyncUrlChecks
. - Realm Sync v3.3.0.
- Realm Core v5.6.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed a segfault when the object schema is unknown (realm-js-private #454).
- Realm Sync v3.3.0.
- Realm Core v5.6.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed a crash when invalid schema cache is used to look up a property (realm-js-private #452).
- Realm Sync v3.3.0.
- Realm Core v5.6.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Added
isEmpty()
method onRealm.Results
andRealm.List
. - Added schema change listener to
Realm.addListener()
(#1825).
- Fixed
Realm.open()
to work without passing a config. - Fixed a bug in
Realm.open()
to work without passing a config.
- Realm Sync v3.3.0.
- Realm Core v5.6.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- [Sync] The SSL configuration options are now grouped in a new config object. (#1465)
- [Sync] The Adapter can accept a new config parameter that specifies SSL settings for spawned sync sessions.
- Added
Object.linkingObjectsCount()
method, that returns total count of incoming links.
- Fix a crash when attempting to use the data adaptor or sync event listener introduced in 2.4.1.
- Realm Sync v3.3.0.
- Realm Core v5.6.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- [Sync] Emit a
delete
event to the Sync event listener whenever a Realm matching the regex is deleted from the server.
- Building React Native Android projects using Java version 9 used deprecated API's (#1779).
- None.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Added minimal support for Realm deletions to the Global Notifier (realm-js-private #443).
- Fixed TypeScript defintion for
open_ssl_verify_callback
configuration option (#1652).
- Updated to Relm Sync 3.3.0.
- Updated to Realm Core 5.6.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Added password reset wrappers (#1699).
- Added a certificate validation using Android Keystore for RN (#1761).
- Fixed logout error due to fetch body not being stringified (#1731).
- Added
Subscription
import tobrowser/index.js
and register type converter (#1711). - Fixed call to
logout()
when debugging React Native apps (#1744).
- Updated
scripts/test.sh
so it doesn't hang forever when the React tests fail to start (#1764).
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed named LinkingObject queries across different classes (#1734).
- Fixed a bug when refreshing admin token due to network errors (realm-js-private #433).
- None.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- None.
- Fixed a bug where leaking Realms when an error occurs within an event handler (#1725).
- Added trace logging to the global notifier (realm-js-private #426).
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0 or later
- None.
- Added
Realm.Sync.Subscription.removeAllListeners()
.
- Tested with Realm Object Server 3.0.0.
- Sync protocol: 24
- Server-side history format: 4
- File format: 7
- Realm Object Server: 3.0.0-alpha.8 or later
- None.
- Added an optional user as argument to
Realm.automaticSyncConfiguration
(#1708).
- [Sync] Avoid hammering the ROS authentication service when large numbers of Realms are opened at once.
- Tested with Realm Object Server 3.0.0-rc.1.
- [Sync] Sync protocol changed to version 24.
- [Sync] History schema format for server-side Realm files bumped to version 4. This means that after the server has been upgraded, it cannot be downgraded again without restoring state from backup.
- [Sync]
Realm.subscribeToObjects()
has been removed. UseRealm.Results.subscribe()
instead.
- [Sync] Reduced initial download times in Realms with long transaction histories.
- [Sync] Wait for pending notifications to complete when removing a sync listener (#1648).
- Enabled sort and distinct in the query string. If sort or distinct are also applied outside of the query string, the conditions are stacked.
- Example syntax:
age > 20 SORT(name ASC, age DESC) DISTINCT(name)
- The ordering for sorting can be one of the following case insensitive literals:
ASC
,ASCENDING
,DESC
,DESCENDING
. - Any number of properties can appear inside the brackets in a comma separated list.
- Any number of sort/distinct conditions can be indicated, they will be applied in the specified order.
- Sort or distinct cannot operate independently, these conditions must be attached to at least one query filter.
- Example syntax:
- Added support for queries over named backlinks (#1498/#1660).
- Example syntax:
parents.age > 25
andparents.@count == 2
.
- Example syntax:
- [Sync] Added
Realm.Results.subscribe()
to subscribe to partial synced Realms. - [Sync] Added class
Realm.Sync.Subscription
and enumRealm.Sync.SubscriptionState
to support partial synced Realms. - [Sync] Added an object-level permission subsystem. It is possible to grant fine-grained priviliges to users.
- Added object-level permissions:
- Schemas
Realm.Permissions.Realm
,Realm.Permissions.Class
,Realm.Permissions.Role
,Realm.Permissions.User
, andRealm.Permissions.Permission
to support working with permissions. These schemas can be used in user-defined Realms and schemas. - Permissions are enforced by the object server but connectivity is not required.
- Method
Realm.privilges()
to compute privileges on a Realm, a Realm object schema, or a Realm object. The method returns either aRealm.Permissions.Realm
orRealm.Permissions.Class
object. - For non-synced Realms, all privileges are always granted.
- For more details, please read the reference documentation.
- Schemas
- [Sync] Revoke refresh token upon logout (#1354).
- Added
Realm.automaticSyncConfiguration()
which will return the configuration for a default synced Realm (#1688). - [Sync] Deprecated
Realm.Sync.setFeatureToken
(#1689).
- Fixed usage of disk space preallocation which would occasionally fail on recent MacOS running with the APFS filesystem (Realm Core #3005).
- Updated to Realm Core 5.4.0.
- Updated to Realm Sync 3.0.0.
- Tested against Realm Object Server 3.0.0-alpha.8.
- Added
_disablePartialSyncUrlChecks
toRealm.Configuration
.
- None.
- None.
- None.
- Updated to Realm Sync 2.2.17
- None.
- None.
- Avoid crashing if partial Realms find their way into the admin Realm when using Realm Object Server v3.0.0 or later (realm-js-private #430).
- None.
- None.
- None.
- Fixed a bug where leaking Realms when an error occurs within an event handler (#1725).
- Added trace logging to the global notifier (realm-js-private #426).
- None.
- None.
- [Sync] Do a better job of not opening the notifier pipe file for global notifier realms.
- None.
- None.
- None.
- [Sync] Avoid hammering the ROS authentication service when large numbers of Realms are opened at once.
- None.
- None.
- None.
- Fixed a bug that could result in notifications from the global notifier being delayed or not delivered at all when multiple Realms change at once.
- None.
- None.
- None.
- [Sync] Fixed race condition in handling of session bootstrapping in client.
- Updated to Realm Sync 2.2.15.
- None.
- None.
- [Sync] Fixed handling of SSL certificates for the sync client.
- Updated to Realm Sync 2.2.14.
- None.
- None.
- Validate that a given type appears at most once in the schema.
- None.
- None.
- None.
- [Sync] A use-after-free bug was fixed which could cause arrays of primitives to behave unexpectedly.
- Updated to Realm Sync 2.2.12.
- None.
- None.
- Improved root certificate checking.
- Updated to Realm Sync 2.2.11.
- None.
- [Sync] For OpenSSL, the sync client includes a fixed list of certificates in its SSL certificate verification besides the default trust store in the case where the user is not specifying its own trust certificates or callback.
- None.
- Updated to Realm Sync 2.2.10.
- None.
- [Sync] Wait for pending notifications to complete when removing a sync listener (#1648).
- Add schema name to missing primary key error message
- [Sync] Fixed a bug causing use-after-free crashes in Global Notifier (realm-js-private #405).
- None.
- None.
- None.
- [Sync] Fixed a bug where arguments were not transferred when debugging.
- None.
- None.
- None.
- [Sync] Fixed a typing error leading to
_getExistingUser
wasn't defined in the Chrome debugging support library (#1625). - Fixed a bug in the TypeScript definition of
PermissionCondition
(#1574). - [Electron] Fixed a
dlopen
error related to OpenSSL that prevented using realm-js on Linux (#1636).
- None.
- None.
- None.
- [Sync] Fixed a bug where errors in
refreshAdminToken
wasn't catched (#1627). - [Sync] Added
_getExitingUser
to the Chrome debugging support library.
- None.
- None.
- None.
- [Sync] Fixed a bug in upload progress reporting.
- [Sync] Fixed a bug where any errors which occurred when trying to sync the admin Realm were ignored, which made attempting to add a listener with an invalid admin user silently do nothing.
- None.
- None.
- None.
- [Sync] Added missing
Realm.Sync
listener functions.
- None.
- None.
- None.
- [Sync] Fixed a bug preventing opening Realms with an admin token without a working ROS directory service (#1615).
- None.
- None.
- Added new query features to support a subset of
NSPredicates
for exampleLIKE
for string matches,@count
and@sum
in lists. See documentation for more details. - Potential performance enhancements in cases of many writes between queries.
- [Sync] Added method
Realm.Sync.User.authenticate
to unify authentication of users. - [Sync] Added JWT authenfication (#1548).
- Fix a bug where
Realm.open
could unexpectedly raise a "Realm at path ... already opened with different schema version" error. subscribeToObjects
was added as a property for Chrome debugging (#1608).- Increased request timeout for token refresh requests to 10 seconds. This should help with failing token refreshes on a loaded server (#1586).
- Updated to Realm Sync 2.2.9.
- Updated to Realm Core 5.1.2 (see "Enhancements").
- Explicitly send
register: false
when logging in withRealm.Sync.User.login
to avoid creating the user if they don't exist.
- None.
- None.
- [Sync] Fixed a bug where long reconnection happens when a proxy in front of the sync worker returns one of those.
- [Sync] Updated to Realm Object Server v2.2.0 for testing.
- Updated to Realm Sync 2.1.10 (see "Bug fixes").
- None.
- Added property
Realm.isClosed
which indicates if a Realm instance is closed or not. - Added property
disableFormatUpgrade
to the Realm configuration object which disables automatic file format upgrade when opening a Realm file.
- None.
- Updated to React Native 0.50.4 (test and example apps).
- None.
- None.
- [Sync] When authentication fails due to a misbehaving server, a proper error is thrown.
- [Sync] Strings can now be assigned to Date columns. When that happens the JavaScript Date constructor will be invoked to parse the string.
- [Sync] Base64 strings can now be assigned to Data columns.
- None.
- None.
- Fixed a bug in 3rd party JSON parser:
localeconv()
does not exist on Android API < 21 and should not be called.
- Fixed issues in unit tests (
addListener
hangs on Android). - Upgraded to Realm Sync 2.1.8 (no external effects).
- None.
- None
- [Sync] Fixed a bug where deleted-then-recreated objects with identical primary keys to become empty.
- [Sync] Fixed a bug in outward partial sync is changed to ensure convergence of partial sync in the case where the client creates a primary key object, that is already present on the server, and subscribes to it in the same transaction.
- Updated to Realm Sync 2.1.7 (see under "Bug fixes").
- None.
- None
- Fix json parsing in RN debugger.
- None.
- None.
- None
- Reenable Realm for RN Android (#1506), which was disabled only in 2.0.8 by mistake.
- None.
- None.
- [Sync] Improving performance of processing large changesets.
- [Sync] Changesets over 16MB in size are now handled correctly.
- Updated to Realm Sync 2.1.6.
- Updated to JSON for Modern C++ 2.1.1.
- None
- None
- Fixes Realm.open hangs in React Native debugger for iOS and Android
- Updated to Realm Sync 2.1.4.
- None.
- Improved notification performance for objects with no object or list properties.
- Fixed a compilation error related to object IDs for React Native on Android (#1480).
- Fixed a race condition where closing and immediately reopening a synchronized Realm opened using an admin token user would fail.
- None.
- None.
- None.
- None.
- Added support for object IDs.
- Updated to Realm Sync 2.1.2.
- None.
- None.
- None.
- Updated to Realm Sync 2.1.1.
- None.
- Better support for React Native 0.49 for iOS (#1431).
- Added property
name
toerror
inSync.error
callback. - Sync error handler provides also a property called
name
;code
is not changed.
- Fixed missing Realm constructor in while debugging React Native apps (#1436).
- Removed argument in documentation of
Realm.Sync.Adapter.realmAtPath()
.
- None.
- None.
- None.
- Fix several cases where adding collection listeners from within a listener callback would produce incorrect results.
- None.
- None.
- None.
- None.
- Upgraded to Realm Sync 2.1.0.
- Switch to Sync protocol 2.0, compatible with Realm Object Server 2.0.0. This version does NOT support 1.x.x of Realm Object Server.
- Upgraded to Realm Core 4.0.1, which has a new file format. If older Realm versions are opened, the database will be migrated automatically.
- Deprecate node 4 and node 5 support.
- Renamed
setAccessToken()
tosetFeatureToken()
. - During iteration (
for ... of
) ofRealm.Results
, the results will be frozen using thesnapshot()
method (#1366).
- The data model now support arrays of primitive types!
- Added
update
method toRealm.Results
to support bulk updates (#808). - Added support for aggregate functions on
Realm.Results
andRealm.List
of primitive types. - Handling of the situation when the client has to reset due to mismatching Realm versions (#795).
- Added
Realm.subscribeToObjects()
to listen for changes in partially synced Realms. - Add support for sorting Lists and Results on values from linked objects.
- Configuration of sync file system is not done on module import but later when actually needed by sync (#1351)
Realm.Sync.User.adminUser()
will now throw an exception if either token or server argument is invalid.
- Avoid closing then reopening a sync session when using
Realm.open
(#1391). - Respect custom Realm paths when using
Realm.open
(#1392 and #1393). - Fixed bug in
Realm.subscribeToObjects()
. - An issue where access tokens were not refreshed correctly has been addressed.
- OpenSSL for Android is distributed in a separate package, and the build system needed updates to accommendate this.
- Added
-fvisibility=hidden
to Android builds (reduces size of.so
file). - Add
Session._overrideServer
to force an existing session to connect to a different server. - Alignment of permission schemas.
- Upgrading to Realm Sync 2.0.2.
- Upgrading to Realm Object Server 2.0.0
- None.
- Add a callback function used to verify SSL certificates in the sync config.
- Added aggregate functions
min()
,max()
,sum()
, andavg()
toRealm.Results
andRealm.List
(#807). - Added
deleteRealmIfMigrationNeeded
to configuration to delete a Realm if migration needed (#502).
- Fixed port conflict between RN >= 0.48 inspector proxy and RPC server used for Chrome debugging (#1294).
- Workaround for RN >= 0.49 metro-bundler check for single string literal argument to
require()
(#1342)
- Improve performance of the RPC worker for chrome debugging.
- Added Progress API
realm.syncSession.addProgressNotification
andrealm.syncSession.removeProgressNotification
- Added additional parameter for
Realm.open
andRealm.openAsync
for download progress notifications - Added
Realm.deleteFile
for deleting a Realm (#363). - Added
Realm.deleteModel
for deleting a Realm model in a migration (#573). - Added support for in-memory Realms.
Realm.Sync.User.login
,Realm.Sync.User.register
, andRealm.Sync.User.registerWithProvider
return Promises and deprecate the callback style for them. Callbacks will continue to work for backward compatibility.
- Adding missing TypeScript definitions; Permissions (#1283),
setFeatureToken()
, and instructions (#1298). - Removed
loginWithProvider
from TypeScript definition files. This API never existed and was incorrectly added.
- None
- None
- Fix accessToken.
- None
- Added methods
Realm.beginTransaction()
,Realm.commitTransaction()
,Realm.cancelTransaction()
to manually control write transactions. - Added property
Realm.isInTransaction
which indicates if write transaction is in progress. - Added
shouldCompactOnLaunch
to configuration (#507). - Added
Realm.compact()
for manually compacting Realm files. - Added various methods for permission management (#1204).
- None
- setAccessToken renamed to setFeatureToken. setAccessToken still works for now.
- None
- None
- None
- None
- RN 0.47 no longer breaks for Android due to a superfluous @override annotation
- None
- None
Realm.openAsync
will no longer open the realm if a sync error has occured. Previously this resulted in the callback being invoked twice - once with an error and a second time - with the synchronously opened Realm.- Database adapters will no longer process the sync history of realm files that are not requested by the adapter configuration. Previously this would lead to crashes for realm files that contained schemas that don't define primary keys.
=======
- None
- None
- Added
Realm.prototype.empty
which is a property that indicates whether or not the realm has any objects in it.
- Fix crash on Node.js when a listener callback throws an error.
The error will now be forwarded to Node's fatal error handling facilities. This means better error reporting,
the ability to debug such errors in a Node.js debugger, and proper invocation of the
uncaughtError
event on theprocess
object.
- None
- Add support for iOS React Native 0.46. Thanks @ovr!
- Add support for Linking Objects (AKA Backlinks).
- Add support for retrieving user account information.
- Add optional
server
parameter toRealm.Sync.User.adminUser
Specifying the server address the same way as inRealm.Sync.User.login
allows the admin token user to use the permission realm APIs.
- Fix regression where setting a Results or List object to a
list
property would throw.
- None
- None
- Fix admin users not appearing in
Realm.Sync.User.all
, which broke getting an access token for them.
- None
- Added
indexOf()
method onRealm.Results
andRealm.List
that returns the index of the object in the collection.
- Fix opening synced realms with a logged-in admin user.
- None
- Accessing
Realm.Sync
when sync is not enabled will no longer throw, but returnundefined
. - Better error messages when creating objects.
- Added bundled TypeScript declarations of the Realm API.
- Added
objectSchema()
method onRealm.Object
that returns the schema for the object.
- Fix
Realm.Sync.User.prototype.isAdmin
returningfalse
for logged-in admin users.
- None
- Updated core and sync dependencies
- Unified packaging
- Fix crash when used with the React Native C++ bridge
- Fix
Realm.open
andRealm.asyncOpen
missing when in the React Native debugger
- None
- Add Realm open async API support.
- None
- Files written by Realm this version cannot be read by earlier versions of Realm. Old files can still be opened and files open in read-only mode will not be modified.
- The
setVerifyServersSslCertificate
method has been deleted - The SyncConfig now gets two more optional parameters,
validate_ssl
andssl_trust_certificate_path
.
- None
- None
- This version is not compatible with versions of the Realm Object Server lower than 1.3.0.
- None.
- Fixed bug where opening synced realms with an encryption key would fail.
- None
- Add support for Node.js on Windows (#863).
- Fixed an error when installing Realm React Native module on Windows (#799).
- Thanks to David Howell (@dbhowell) for adding a fix to Windows install (#849).
- None
- None
- Proactively refresh sync user tokens to avoid a reconnect delay (#840)
- None
- None
- Fix crash when the sync user token expires (#839)
- None
- Add the Management Realm accessor on the User class, and its schema (#779)
- None
- None
- None
- Always download Node binaries except on Windows, for unit testing (#789)
- None
- More specific error message when setting a property to a wrong type (#730)
- Fix chrome debugging on React Native 0.39 and up (#766)
- None
- More explicit handling of missing constructor (#742)
- Realm open on another thread (#473)
- symbol() variable not found (#761)
- None
- None
- Fix compile error for collection notification in chrome debug mode
- None
- Node.js support
- Support for fine grained notifications on
List
andResults
objects - Updated test and examples for react-natve v0.37.0
- None
- None
- None
- Support for react-native v0.31.0
- Deprecate
Realm.Types
. Please specify the type name as lowercase string instead.
- None
- None
- Please use
rnpm 1.9.0
or later to link your project. Older versions are no longer supported. - ReactNative versions older than v0.14.0 are no longer supported
- Support for ReactNative versions v0.28.0+
- Added support for debugging in Visual Studio Code.
- None
- None
- None
- Fix linker error when building for minimum target version of iOS 7.
- Fix for failure in
strip
command when building an archive.
- None
- Added
isValid()
method toList
andResults
to check for deleted or invalidated objects - Added
objectForPrimaryKey(type, key)
method toRealm
- Fix for crash when setting object properties to objects from other Realms
- Fix for exception sometimes thrown when reloading in Chrome debug mode
- None
- None
- Fix for crash when updating Realms with optional date properties to the new file format
- None
- None
- Fix for crash when inserting dates from before the epoch
- Fix for crash when using collection snapshot after realm.deleteAll()
- With this release we have switched over to a new cross platform compatible date format. This change will only require action from users who are using both the JS and Cocoa or Android bindings simultaneously and accessing Realm files from both bindings. In these cases you need to open the Realm file with the latest version of the iOS or Android bindings before accessing the Realm from JS to prevent an unnecessary conversion.
- None
- Date properties are now stored in a format compatible with the Realm Browser and other bindings.
- Fix for using
class MyObject extends Realm.Object
in a React Native project. - Fix a memory leak caused by constructing a Realm instance of an already opened Realm.
- Fix for better supporting hot module reloading.
- Fix for some warnings when using
ListView
with React Native 0.25+ - Fix for queries that use a keypath starting with "not".
- None
- Support for queries comparing optional properties to
null
object.isValid()
has been added to enable checking if an object has been deleted- Note: Custom object classes can extend
Realm.Object
to inherit this method
- Note: Custom object classes can extend
- Support opening a Realm as read-only with the
readOnly
configuration option - Support for providing a custom migration function (please see the docs for details)
- Added
path
,readOnly
,schema
, andschemaVersion
properties toRealm
instances - Optional and list properties are no longer required when creating objects
- When accessing an empty Results
undefined
is returned rather than throwing an exception - Accessing a deleted object throws a JS exception rather than crashing
- Accessing an invalidated Results snapshot throws a JS exception rather than crashing
- Fix for error message when specifying properties with invalid object types
- Fix memory leak when reloading an app in debug mode
- Setting non-persisted properties now works as expected
- Fix for using Android Studio to build app using Realm
- Fix for sharing Realm between JS and Objective-C/Swift
- Realm for React Native is now packaged as a static library for iOS
- Remove the reference to
RealmJS.xcodeproj
from your Xcode project (under theLibraries
group) - Make sure
rnpm
is installed and up-to-date:npm install -g rnpm
- Run
rnpm link realm
from your app's root directory
- Remove the reference to
- Support for encrypted Realms
- List and Results now inherit from Realm.Collection
- List and Results is now iterable (e.g. supports
for...of
loops) - Add common Array methods to List and Results
- Accept constructor in create() and objects() methods
- Support relative paths when opening Realms
- Support case insensitive queries by adding
[c]
after operators - Support for indexed
bool
,string
, andint
properties - Added
Realm.schemaVersion
method, which supports unopened Realms
- Fix for crash on Android when initializing the Realm module
- Fix for using Chrome debug mode from a device
- Fix for List splice method not accepting a single argument
- Don't download or unpack core libraries unnecessarily
- Initial Release