All Versions
Latest Version
Avg Release Cycle
60 days
Latest Release
123 days ago

Changelog History
Page 4

  • v0.82.1

    January 27, 2017

    πŸ› Bug fixes

    • βž• Addressed an issue where obtaining a Realm instance, reading an object, then obtaining another instance on the same thread would cause the object to become invalid and crash the application upon accessing any of its members.
  • v0.82.0

    January 23, 2017

    πŸ’₯ Breaking Changes

    • 🚚 Moved all exceptions under the Realms.Exceptions namespace. (#1075)
    • 🚚 Moved RealmSchema to Realms.Schema namespace. (#1075)
    • Made the ErrorEventArgs constructor internal. (#1075)
    • πŸ— Made ObjectSchema.Builder and RealmSchema.Builder internal. (#1075)
    • ⚑️ Passing an object that has IList properties to Add(obj, update: true) will no longer merge the lists. Instead, the IList property will contain only the items in the object. (#1040)

    ✨ Enhancements

    • βž• Added virtual OnPropertyChanged method in RealmObject that you can override to be notified of changes to the current object. (#1047)
    • βž• Added compile time checks that [Required] is applied on correct property types. (#1072)
    • Realm.Add(RealmObject obj) will now return the passed in object, similarly to Realm.Add<T>(T obj). (#1162)
    • βž• Added an extension method for string.Contains that accepts StringComparison argument and can be used in queries. When querying, only StringComparison.Ordinal and StringComparison.OrdinalIgnoreCase can be used. When not used in queries, all values for StringComparison are valid. (#1141)

    πŸ› Bug fixes

    • βž• Adding a standalone object, that has an IList<T> property that has never been accessed, to the Realm will no longer throw a NullReferenceException. (#1040)
    • IList<T> properties will now correctly return IsReadOnly = true when managed by a readonly Realm. (#1070)
    • The weaver should now correctly resolve references in PCL and netstandard assemblies. (#1117)
    • βž• Add some missing methods to the PCL reference assembly. (#1093)
    • Disposed realms will not throw ObjectDisposedException when trying to access their members. Additionally, disposing a realm will not invalidate other instances on the same thread. (#1063)
  • v0.81.0

    December 14, 2016

    πŸ’₯ Breaking Changes

    • πŸ—„ The IQueryable<T>.ToNotifyCollectionChanged extension methods that accept parameters are now deprecated. There is a new parameterless one that you should use instead. If you want to handle errors, you can do so by subscribing to the Realm.OnError event. (#938)
    • RealmResults<T> is now marked internal and Realm.All<T>() will instead return IQueryable<T>. We've added a new extension method IQueryable<T>.SubscribeForNotifications(NotificationCallbackDelegate<T>) that allows subscribing for notifications. (#942)
    • πŸš€ Realm.CreateObject<T> has been deprecated and will be removed in the next major release. (It could cause a dangerous data loss when using the synchronised realms coming soon, if a class has a PrimaryKey). (#998)
    • RealmConfiguration.ReadOnly has been renamed to RealmConfiguration.IsReadOnly and is now a property instead of a field. (#858)
    • Realm.All has been renamed to Realm.GetAll and the former has been obsoleted. (#858)
    • Realm.ObjectForPrimaryKey has been renamed to Realm.Find and the former has been obsoleted. (#858)
    • Realm.Manage has been renamed to Realm.Add and the former has been obsoleted. (#858)
    • RealmConfiguration.PathToRealm has been renamed to Realm.GetPathToRealm and the former has been obsoleted. (#858)
    • RealmResults.NotificationCallback has been extracted as a non-nested class and has been renamed to NotificationCallbackDelegate. (#858)
    • 🚚 Realm.Close has been removed in favor of Realm.Dispose. (#858)
    • RealmList<T> is now marked internal. You should use IList<T> to define collection relationships. (#858)

    ✨ Enhancements

    • In data-binding scenarios, if a setter is invoked by the binding outside of write transaction, we'll create an implicit one and commit it. This enables two-way data bindings without keeping around long-lived transactions. (#901)
    • The Realm schema can now express non-nullable reference type properties with the new [Required] attribute. (#349)
    • πŸ”¦ Exposed a new Realm.Error event that you can subscribe for to get notified for exceptions that occur outside user code. (#938)
    • The runtime types of the collection, returned from Realm.All and the collection created for IList<T> properties on RealmObject now implement INotifyCollectionChanged so you can pass them for data-binding without any additional casting. (#938, #909)
    • All RealmObjects implement INotifyPropertyChanged. This allows you to pass them directly for data-binding.
    • βž• Added Realm.Compact method that allows you to reclaim the space used by the Realm. (#968)
    • Realm.Add returns the added object. (#931)
    • πŸ‘Œ Support for backlinks aka LinkingObjects. (#219)
    • βž• Added an IList<T>.Move extension method that allows you to reorder elements within the collection. For managed Lists, it calls a native method, so it is slightly more efficient than removing and inserting an item, but more importantly, it will raise the CollectionChanged with NotifyCollectionChangedAction.Move which will result in a nice move animation, rather than a reload of a ListView. (#995)

    πŸ› Bug fixes

    • Subscribing to PropertyChanged on a RealmObject and modifying an instance of the same object on a different thread will now properly raise the event. (#909)
    • πŸ‘» Using Insert to insert items at the end of an IList property will no longer throw an exception. (#978)
  • v0.80.0

    October 27, 2016

    πŸ’₯ Breaking Changes

    • ⚑️ This version updates the file format. Older versions will not be able to open files created with this version. (#846)
    • RealmList<T> is now marked as internal. If you were using it anywhere, you should migrate to IList<T>. (#880)

    ✨ Enhancements

    • iOS Linking all should work - we now add a [Preserve] attribue to all woven members of your RealmObject subclasses so you do not need to manually add [Preserve(allMembers=true)] (#822)
    • 0️⃣ Realm.Manage calls are now much faster. You should prefer that to Realm.CreateObject unless you are setting only a few properties, while leaving the rest with default values. (#857)
    • βž• Added bool update argument to Realm.Manage. When update: true is passed, Realm will try to find and update a persisted object with the same PrimaryKey. If an object with the same PrimaryKey is not found, the umnamaged object is added. If the passed in object does not have a PrimaryKey, it will be added. Any related objects will be added or updated depending on whether they have PrimaryKeys. (#871)

      NOTE: cyclic relationships, where object references are not identical, will not be reconciled. E.g. this will work as expected:

      var person = new Person { Name = "Peter", Id = 1 };
      person.Dog = new Dog();
      person.Dog.Owner = person;

      However this will not - it will set the Person's properties to the ones from the last instance it sees:

      var person = new Person { Name = "Peter", Id = 1 };
      person.Dog = new Dog();
      person.Dog.Owner = new Person { Id = 1 };

      This is important when deserializing data from json, where you may have multiple instances of object with the same Id, but with different properties.

    • πŸ‘» Realm.Manage will no longer throw an exception if a managed object is passed. Instead, it will immediately return. (#871)

    • βž• Added non-generic version of Realm.Manage. (#871)

    • βž• Added support for nullable integer PrimaryKeys. Now you can have long? PrimaryKey property where null is a valid unique value. (#877)

    • βž• Added a weaver warning when applying Realm attributes (e.g. [Indexed] or [PrimaryKey]) on non-persisted properties. (#882)

    • βž• Added support for == and != comparisons to realm objects in LINQ (#896), e.g.:

      var peter = realm.All<Person>().FirstOrDefault(d => d.Name == "Peter");
      var petersDogs = realm.All<Dog>().Where(d => d.Owner == peter);
    • βž• Added support for StartsWith(string, StringComparison), EndsWith(string, StringComparison), and Equals(string, StringComparison) filtering in LINQ. (#893)

      NOTE: Currently only Ordinal and OrdinalIgnoreCase comparisons are supported. Trying to pass in a different one will result in runtime error. If no argument is supplied, Ordinal will be used.

  • v0.78.1

    September 15, 2016

    πŸ› Bug fixes

    • Realm.ObjectForPrimaryKey() now returns null if it failed to find an object (#833).
    • Querying anything but persisted properties now throws instead of causing a crash (#251 and #723)

    πŸ‘‰ Uses core 1.5.1

  • v0.78.0

    September 09, 2016

    πŸ’₯ Breaking Changes

    • The term ObjectId has been replaced with PrimaryKey in order to align with the other SDKs. This affects the [ObjectId] attribute used to decorate a property.

    ✨ Enhancements

    • You can retrieve single objects quickly using Realm.ObjectForPrimaryKey() if they have a [PrimaryKey] property specified. (#402)
    • ⚑️ Manual migrations are now supported. You can specify exactly how your data should be migrated when updating your data model. (#545)
    • πŸ‘ LINQ searches no longer throw a NotSupportedException if your integer type on the other side of an expression fails to exactly match your property's integer type.
    • βž• Additional LINQ methods now supported: (#802)
      • Last
      • LastOrDefault
      • FirstOrDefault
      • SingleOrDefault
      • ElementAt
      • ElementAtOrDefault

    πŸ› Bug fixes

    • Searching char field types now works. (#708)
    • Now throws a RealmMigrationSchemaNeededException if you have changed a RealmObject subclass declaration and not incremented the SchemaVersion (#518)
    • πŸ›  Fixed a bug where disposing a Transaction would throw an ObjectDisposedException if its Realm was garbage-collected (#779)
    • πŸ‘» Corrected the exception being thrown IndexOutOfRangeException to be ArgumentOutOfRangeException

    πŸ‘‰ Uses core 1.5.1

  • v0.77.2

    August 11, 2016

    ✨ Enhancements

    • πŸ— Setting your Build Verbosity to Detailed or Normal will now display a message for every property woven, which can be useful if you suspect errors with Fody weaving.
    • Better exception messages will helo diagnose EmptySchema problems (#739)
    • πŸ‘ Partial evaluation of LINQ expressions means more expressions types are supported as operands in binary expressions (#755)
    • πŸ‘Œ Support for LINQ queries that check for null against string, byte[] and Nullable<T> properties.
    • πŸ‘Œ Support for string.IsNullOrEmpty on persisted properties in LINQ queries.
    • Schema construction has been streamlined to reduce overhead when opening a Realm
    • Schema version numbers now start at 0 rather than UInt64.MaxValue

    πŸ› Bug fixes

    • RealmResults<T> should implement IQueryable.Provider implicitly (#752)
    • Realms that close implicitly will no longer invalidate other instances (#746)

    πŸ‘‰ Uses core 1.4.2

  • v0.77.1

    July 25, 2016

    Minor Changes

    • πŸ›  Fixed a bug weaving pure PCL projects, released in v0.77.0 (#715)
    • πŸ‘» Exception messages caused by using incompatible arguments in LINQ now include the offending argument (#719)
    • πŸ— PCL projects using ToNotifyCollectionChanged may have crashed due to mismatch between PCL signatures and platform builds.

    πŸ‘‰ Uses core 1.4.0

  • v0.77.0

    July 18, 2016

    Broken Version - will not build PCL projects

    πŸ’₯ Breaking Changes

    • βͺ Sort order change in previous version was reverted.

    Major Changes

    • It is now possible to introspect the schema of a Realm. (#645)
    • The Realm class received overloads for Realm.CreateObject and Realm.All that accept string arguments instead of generic parameters, enabling use of the dynamic keyword with objects whose exact type is not known at compile time. (#646)
    • To Many relationships can now be declared with an IList<DestClass> rather than requiring RealmList<DestClass>. This is significantly faster than using RealmList due to caching the list. (Issue #287)
    • Creating standalone objects with lists of related objects is now possible. Passing such an object into Realm.Manage will cause the entire object graph from that object down to become managed.

    Minor Changes

    • πŸ›  Fixed a crash on iOS when creating many short-lived realms very rapidly in parallel (Issue #653)
    • RealmObject.IsValid can be called to check if a managed object has been deleted
    • πŸ‘» Accessing properties on invalid objects will throw an exception rather than crash with a segfault (#662)
    • Exceptions thrown when creating a Realm no longer leave a leaking handle (Issue #503)

    πŸ‘‰ Uses core 1.4.0

  • v0.76.1

    June 15, 2016

    Minor Changes

    • The Realm static constructor will no longer throw a TypeLoadException when there is an active System.Reflection.Emit.AssemblyBuilder in the current AppDomain.
    • πŸ›  Fixed Attempting to JIT compile exception when using the Notifications API on iOS devices. (Issue #620)

    πŸ’₯ Breaking Changes

    No API change but sort order changes slightly with accented characters grouped together and some special characters sorting differently. "One third" now sorts ahead of "one-third".

    βœ… It uses the table at

    It groups all characters that look visually identical, that is, it puts a, Γ , Γ₯ together and before ΓΈ, o, ΓΆ even. This is a flaw because, for example, Γ₯ should come last in Denmark. But it's the best we can do now, until we get more locale aware.

    πŸ‘‰ Uses core 1.1.2