Realm Xamarin v4.2.0 Release Notes

Release Date: 2019-10-07 // 4 months ago
  • ✨ Enhancements

    • ➕ Added int IndexOf(object) and bool Contains(object) to the IRealmCollection interface. (PR #1893)
    • 🔦 Exposed an API - SyncConfigurationBase.EnableSessionMultiplexing() that allows toggling session multiplexing on the sync client. (PR 1896)
    • ➕ Added support for faster initial downloads when using Realm.GetInstanceAsync. (Issue 1847)
    • ➕ Added an optional cancellationToken argument to Realm.GetInstanceAsync enabling clean cancelation of the in-progress download. (PR 1859)
    • ➕ Added support for Client Resync which automatically will recover the local Realm in case the server is rolled back. This largely replaces the Client Reset mechanism for fully synchronized Realms. Can be configured using FullSyncConfiguration.ClientResyncMode. (PR #1901)
    • Made the createUser argument in Credentials.UsernamePassword optional. If not specified, the user will be created or logged in if they already exist. (PR #1901)
    • 👉 Uses Fody 6.0.0, which resolves some of the compatibility issues with newer versions of other Fody-based projects. (Issue #1899)

    🛠 Fixed

    • 🛠 Fixed an infinite recursion when calling RealmCollectionBase<T>.IndexOf. (Issue #1892)

    Compatibility

    • Realm Object Server: 3.23.1 or later.

    Internal

    • ⬆️ Upgraded Sync from 4.7.0 to 4.7.1.
    • 🔀 Implemented direct access to sync workers on Cloud, bypassing the Sync Proxy: the binding will override the sync session's url prefix if the token refresh response for a realm contains a sync worker path field.

Previous changes from v4.1.0

  • 💥 Breaking Changes

    • ✂ Removed the isAdmin parameter from Credentials.Nickname. It doesn't have any effect on new ROS versions anyway as logging in an admin nickname user is not supported - this change just makes it explicit. (Issue #1879)
    • 🚚 Marked the Credentials.Nickname method as deprecated - support for the Nickname auth provider is deprecated in ROS and will be removed in a future version. (Issue #1879)
    • ✂ Removed the deleteRealm parameter from PermissionDeniedException.DeleteRealmInfo as passing false has no effect. Calling the method is now equivalent to calling it with deleteRealm: true. (PR #1890)

    ✨ Enhancements

    • ➕ Added support for unicode characters in realm path and filenames for Windows. (Core upgrade)
    • ➕ Added new credentials type: Credentials.CustomRefreshToken that can be used to create a user with a custom refresh token. This will then be validated by ROS against the configured refreshTokenValidators to obtain access tokens when opening a Realm. If creating a user like that, it's the developer's responsibility to ensure that the token is valid and refreshed as necessary to ensure that access tokens can be obtained. To that end, you can now set the refresh token of a user object by calling User.RefreshToken = "my-new-token". This should only be used in combination with users obtained by calling Credentials.CustomRefreshToken. (PR #1889)

    🛠 Fixed

    • 🐎 Constructing an IncludeDescriptor made unnecessary table comparisons. This resulted in poor performance when creating a query-based subscription (Subscription.Subscribe) with includedBacklinks. (Core upgrade)
    • ⬆️ Queries involving an indexed int column which were constrained by a LinkList with an order different from the table's order would give incorrect results. (Core upgrade)
    • ⬆️ Queries involving an indexed int column had a memory leak if run multiple times. (Core upgrade)

    Compatibility

    • Realm Object Server: 3.23.1 or later.

    Internal

    • ⬆️ Upgraded Sync from 4.5.1 to 4.7.0 and Core 5.20.0 to 5.23.1.