Realm Xamarin v3.4.0 Release Notes

Release Date: 2019-01-09 // over 5 years ago
  • NOTE!!! 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.

    ✨ Enhancements

    • Download progress is now reported to the server, even when there are no local changes. This allows the server to do history compaction much more aggressively, especially when there are many clients that rarely or never make local changes. (#1772)
    • ⬇️ Reduce memory usage when integrating synchronized changes sent by ROS.
    • ➕ Added ability to supply a custom log function for handling logs emitted by Sync by specifying SyncConfigurationBase.CustomLogger. It must be set before opening a synchronized Realm. (#1824)
    • Clients using protocol 25 now report download progress to the server, even when they make no local changes. This allows the server to do history compaction much more aggressively, especially when there are many clients that rarely or never make local changes. (#1772)
    • ➕ Add a User-Agent header to HTTP requests made to the Realm Object Server. By default, this contains information about the Realm library version and .NET platform. Additional details may be provided (such as the application name/version) by setting SyncConfigurationBase.UserAgent prior to opening a synchronized Realm. If developing a Xamarin app, you can use the Xamarin.Essentials plugin to automate that: SyncConfiguration.UserAgent = $"{AppInfo.Name} ({AppInfo.PackageName} {AppInfo.VersionString})".

    🛠 Fixed

    • 🛠 Fixed a bug that could lead to crashes with a message such as Assertion failed: ndx < size() with (ndx, size()) = [742, 742].
    • 🛠 Fixed a bug that resulted in an incorrect LogLevel being sent to Sync when setting SyncConfigurationBase.LogLevel. (#1824, since 2.2.0)
    • 🛠 Fixed a bug that prevented Realm.GetInstanceAsync from working when used with QueryBasedSyncConfiguration. (#1827, since 3.1.0)

    💥 Breaking Changes

    • 🚚 The deprecated method realm.SubscribeToObjectsAsync has been removed in this version. (#1772)
    • 🔧 User.ConfigurePersistence has been deprecated in favor of SyncConfigurationBase.Initialize.

    Compatibility

    • Realm Object Server: 3.11.0 or later.
      ⬆️ The sync protocol version has been bumped to version 25. The server is backwards-compatible with clients using protocol version 24 or below, but clients at version 25 are not backwards-compatible with a server at protocol version 24. The server must be upgraded before any clients are upgraded.

    Internal

    • ⬆️ Upgraded Sync from 3.9.2 to 3.14.11 and Core from 5.8.0 to 5.12.7.