All Versions
44
Latest Version
Avg Release Cycle
47 days
Latest Release
15 days ago

Changelog History
Page 1

  • v4.3.0

    February 05, 2020

    ✨ Enhancements

    • πŸ”¦ Exposed an API to configure the userId and isAdmin of a user when creating credentials via Credentials.CustomRefreshToken. Previously these values would be inferred from the JWT itself but as there's no way to enforce the server configuration over which fields in the JWT payload represent the userId and the isAdmin field, it is now up to the consumer to determine the values for these.
    • πŸ‘Œ Improved logging and error handling for SSL issues on Apple platforms.

    πŸ›  Fixed

    • Realm objects can now be correctly serialized with System.Runtime.Serialization.Formatters and System.Xml.Serialization serializers. (Issue #1913)
      The private state fields of the class have been decorated with [NonSerialized] and [XmlIgnore] attributes so that eager opt-out
      serializers do not attempt to serialize fields such as Realm and ObjectSchema which contain handles to unmanaged data.
    • πŸ›  Fixed an issue that would result in a compile error when [Required] is applied on IList<string> property. (Contributed by braudabaugh)
    • πŸ›  Fixed an issue that prevented projects that include the Realm NuGet package from being debugged. (PR #1927)
    • πŸ”€ The sync client would fail to reconnect after failing to integrate a changeset. The bug would lead to further corruption of the client’s Realm file. (since 3.0.0).
    • πŸ›  The string-based query parser (results.Filter(...)) used to need the class_ prefix for class names when querying over backlink properties. This has been fixed so that only the public ObjectSchema name is necessary. For example, @links.class_Person.Siblings becomes @links.Person.Siblings.
    • πŸ›  Fixed an issue where ClientResyncMode.DiscardLocalRealm wouldn't reset the schema.

    Compatibility

    • Realm Object Server: 3.23.1 or later.

    Internal

    • ⬆️ Upgraded Sync from 4.7.5 to 4.9.5 and Core from 5.23.3 to 5.23.8.
  • v4.2.0

    October 07, 2019

    ✨ 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.
  • v4.1.0

    August 06, 2019

    πŸ’₯ 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.
  • v4.0.1

    June 27, 2019

    πŸ›  Fixed

    πŸ›  Fixed an issue that would prevent iOS apps from being published to the app store with the following error:

    πŸ›° > This bundle Payload/.../Frameworks/realm-wrappers.framework is invalid. The Info.plist file is missing the required key: CFBundleVersion.

    (Issue 1870, since 4.0.0)

    πŸ›  Fixed an issue that would cause iOS apps to crash on device upon launching. (Issue 1871, since 4.0.0)

  • v4.0.0

    June 14, 2019

    ⬆️ NOTE!!! You will need to upgrade your Realm Object Server to at least version 3.23.1 or use Realm Cloud to use the path-level Permission API (User.ApplyPermissionsAsync, User.GetGrantedPermissionsAsync, etc.). Using them against an older version of ROS will result in 404 NotFound exceptions being thrown.

    ⬆️ The Realm.Server and Realm.Database packages have been merged into the main Realm package, so when upgrading, be sure to remove them from your references.

    πŸ’₯ Breaking Changes

    • 🚚 The following deprecated methods and classes have been removed:
      • The SyncConfiguration class has been split into FullSyncConfiguration and QueryBasedSyncConfiguration. Use one of these classes to connect to the Realm Object Server.
      • The TestingExtensions.SimulateProgress method has been removed as it hasn't worked for some time.
      • The Property.IsNullable property has been removed. To check if a property is nullable, check Property.Type for the PropertyType.Nullable flag.
      • The Credentials.Provider class has been removed. Previously, it contained a few constants that were intended for internal use mostly.
      • The User.ConfigurePersistance method has been superseded by SyncConfigurationBase.Initialize.
      • User.LogOut has been removed in favor of User.LogOutAsync.
      • User.GetManagementRealm has been removed in favor of the User.ApplyPermissionsAsync set of wrapper API.
      • User.GetPermissionRealm has been removed in favor of the User.GetGrantedPermissions wrapper API.
    • πŸ—„ Deprecated the IQueryable<T>.Subscribe(string name) extension method in favor of IQueryable<T>.Subscribe(SubscriptionOptions options).
    • Reworked the internal implementation of the permission API. For the most part, the method signatures haven't changed or where they have changed, the API have remained close to the original (e.g. IQueryable<T> has changed to IEnumerable<T>). (Issue #1863)
      • Changed the return type of User.GetGrantedPermissionsAsync from IQueryable<PathPermission> to IEnumerable<PathPermission>. This means that the collection is no longer observable like regular Realm-backed collections. If you need to be notified for changes of this collection, you need to implement a polling-based mechanism yourself.
      • PathPermission.MayRead/MayWrite/MayManage have been deprecated in favor of a more-consistent AccessLevel API.
      • In User.ApplyPermissionsAsync, renamed the realmUrl parameter to realmPath.
      • In User.OfferPermissionsAsync, renamed the realmUrl parameter to realmPath.
      • Removed the PermissionOfferResponse and PermissionChange classes.
      • Removed the IPermissionObject interface.
      • Removed the ManagementObjectStatus enum.
      • Removed the User.GetPermissionChanges and User.GetPermissionOfferResponses methods.
      • The millisecondTimeout argument in User.GetGrantedPermissionsAsync has been removed.
      • The PermissionException class has been replaced by HttpException.
    • πŸ”€ The AuthenticationException class has been merged into the HttpException class.

    ✨ Enhancements

    βž• Added Session.Start() and Session.Stop() methods that allow you to pause/resume synchronization with the Realm Object Server. (Issue #138)

    βž• Added an IQueryable<T>.Subscribe(SubscriptionOptions, params Expression<Func<T, IQueryable>>[] includedBacklinks) extension method that allows you to configure additional options for the subscription, such as the name, time to live, and whether it should update an existing subscription. The includedBacklinks argument allows you to specify which backlink properties should be included in the transitive closure when doing query-based sync. For example:

    class Dog : RealmObject{ public Person Owner { get; set; } }class Person : RealmObject{ [Backlink(nameof(Dog.Owner))] public IQueryable\<Dog\> Dogs { get; } }var options = new SubscriptionOptions{ Name = "adults", TimeToLive = TimeSpan.FromDays(1), ShouldUpdate = true};var people = realm.All\<Person\>() .Where(p =\> p.Age \> 18) .Subscribe(options, p =\> p.Dogs);await people.WaitForSynchronzationAsync();// Dogs that have an owner set to a person that is over 18// will now be included in the objects synchronized locally.var firstPersonDogs = people.Results.First().Dogs;
    

    (Issue #1838 & Issue #1834)

    βž• Added a Realm.GetAllSubscriptions() extension method that allows you to obtain a collection of all registered query-based sync subscriptions. (Issue #1838)

    βž• Added AccessLevel property to PathPermission to replace the now deprecated MayRead/MayWrite/MayManage. (Issue #1863)

    βž• Added RealmOwnerId property to PathPermission that indicates who the owner of the Realm is. (Issue #1863)

    βž• Added support for building with dotnet build (previously only the msbuild command line was supported). (PR #1849)

    πŸ‘Œ Improved query performance for unindexed string columns when the query has a long chain of OR conditions. (Core upgrade)

    πŸ‘Œ Improved performance of encryption and decryption significantly by utilizing hardware optimized encryption functions. (Core upgrade)

    ⚑️ Compacting a realm into an encrypted file could take a really long time. The process is now optimized by adjusting the write buffer size relative to the used space in the realm. (Core upgrade)

    ⬆️ The string-based query parser (results.Filter("...")) now supports readable timestamps with a 'T' separator in addition to the originally supported "@" separator. For example: startDate > 1981-11-01T23:59:59:1 (Core upgrade)

    πŸ›  Fixed

    • πŸ›  Fixes an issue where using the StringExtensions.Contains(string, string, StringComparison) extension method inside a LINQ query would result in an exception being thrown on .NET Core 2.1+ or Xamarin.iOS/Android projects.(Issue #1848)
    • ⬆️ Creating an object after creating an object with the int primary key of "null" would hit an assertion failure. (Core upgrade)

    Compatibility

    • Realm Object Server: 3.23.1 or later.

    Internal

    • ⬆️ Upgraded Sync from 3.14.11 to 4.5.1 and Core 5.12.7 to 5.20.0.
  • v3.4.0

    January 09, 2019

    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.
  • v3.3.0

    November 08, 2018

    ✨ Enhancements

    • πŸ”¦ Exposed an OnProgress property on SyncConfigurationBase. It allows you to specify a progress callback that will be invoked when using Realm.GetInstanceAsync to report the download progress. (#1807)

    πŸ›  Fixed

    <!-- * (#????, since v?.?.?) -->

    • πŸ”€ Trying to call Subscription.WaitForSynchronizationAsync on a background thread (without a SynchronizationContext) would previously hang indefinitely. Now a meaningful exception will be thrown to indicate that this is not supported and this method should be called on a thread with a synchronization context. (dotnet-private#130, since v3.0.0)

    Compatibility

    • Realm Object Server: 3.0.0 or later.
    • πŸš€ APIs are backwards compatible with all previous releases in the 3.x.y series.
    • ⬆️ File format: Generates Realms with format v9 (Reads and upgrades all previous formats)
  • v3.2.1

    September 27, 2018

    πŸ› Bug fixes

    • Fixed a bug that would typically result in exceptions with a message like An unknown error has occurred. State: *some-number-larger than 127* when subscribing to queries. (dotnet-private#128, since 3.0.0)
  • v3.2.0

    September 04, 2018

    ✨ Enhancements

    • 🚚 RealmObject inheritors will now raise PropertyChanged after they have been removed from Realm. The property name in the event arguments will be IsValid.
    • 🐧 Bundle some common certificate authorities on Linux so connecting to ROS instances over SSL should work out of the box for most certificates. Notably, it will now work out of the box for Realm Cloud instances.

    πŸ› Bug fixes

    • πŸ‘» When constructing queries that compare an invalid/unmanaged RealmObject (e.g. realm.All<Foo>().Where(f => f.Bar == someBar)), a meaningful exception will now be thrown rather than an obscure ArgumentNullException.
    • βž• Added ShouldCompactOnLaunch to the PCL version of the library. (dotnet-private#125)
  • v3.1.0

    July 04, 2018

    ✨ Enhancements

    • πŸ”¦ Exposed a ChangeSet.NewModifiedIndices collection that contains information about the indices of the objects that changed in the new version of the collection (i.e. after accounting for the insertions and deletions).
    • ⚑️ Update Fody to 3.0.

    πŸ› Bug fixes

    • πŸ”€ WriteAsync will no longer perform a synchronous Refresh on the main thread. (#1729)
    • πŸ‘» Trying to add a managed Realm Object to a different instance of the same on-disk Realm will no longer throw an exception.
    • βœ‚ Removed the IList compliance for Realm collections. This fixes an issue which would cause the app to hang on Android when deselecting an item from a ListView bound to a Realm collection.

    πŸ’₯ Breaking Changes

    • πŸ”§ SyncConfiguration is now deprecated and will be removed in a future version. Two new configuration classes have been exposed - [QueryBasedSyncConfiguration](https://docs.realm.io/platform/using-synced realms/syncing-data#using-query-based-synchronization) and FullSyncConfiguration. If you were using a SyncConfiguration with IsPartial = true, then change your code to use QueryBasedSyncConfiguration. Similarly, if IsPartial was not set or was set to false, use FullSyncConfiguration.
    • βœ‚ Removed the IList compliance for Realm collections. This will prevent automatic updates of ListViews databound to Realm collections in UWP projects.