Realm v3.1.0 Release Notes

Release Date: 2017-04-05 // almost 7 years ago
  • ๐Ÿ’ฅ Breaking Changes

    • โšก๏ธ Updated file format of Realm files. Existing Realm files will automatically be migrated to the new format when they are opened, but older versions of Realm cannot open these files.
    • [ObjectServer] Due to file format changes, Realm Object Server 1.3.0 or later is required.

    โœจ Enhancements

    • โž• Added support for reverse relationships through the @LinkingObjects annotation. See io.realm.annotations.LinkingObjects for documentation.
      • This feature is in @Beta.
      • Queries on linking objects do not work. Queries like where(...).equalTo("field.linkingObjects.id", 7).findAll() are not yet supported.
      • Backlink verification is incomplete. Evil code can cause native crashes.
    • The listener on RealmObject will only be triggered if the object changes (#3894).
    • โž• Added RealmObjectChangeListener interface that provide detailed information about RealmObject field changes.
    • Listeners on RealmList and RealmResults will be triggered immediately when the transaction is committed on the same thread (#4245).
    • The real RealmMigrationNeededException is now thrown instead of IllegalArgumentException if no migration is provided for a Realm that requires it.
    • RealmQuery.distinct() can be performed on unindexed fields (#2285).
    • targetSdkVersion is now 25.
    • [ObjectServer] In case of a Client Reset, information about the location of the backed up Realm file is now reported through the ErrorHandler interface (#4080).
    • [ObjectServer] Authentication URLs now automatically append /auth if no other path segment is set (#4370).

    ๐Ÿ› Bug Fixes

    • Crash with LogicError with Bad version number on notifier thread (#4369).
    • ๐Ÿ”€ Realm.migrateRealm(RealmConfiguration) now fails correctly with an IllegalArgumentException if a SyncConfiguration is provided (#4075).
    • Potential cause for Realm file corruptions (never reported).
    • โž• Add @Override annotation to proxy class accessors and stop using raw type in proxy classes in order to remove warnings from javac (#4329).
    • findFirstAsync() now returns an invalid object if there is no object matches the query condition instead of running the query repeatedly until it can find one (#4352).
    • ๐ŸŒฒ [ObjectServer] Changing the log level after starting a session now works correctly (#4337).

    Internal

    • ๐Ÿ”€ Using the Object Store's Session and SyncManager.
    • โฌ†๏ธ Upgraded to Realm Sync 1.5.0.
    • โฌ†๏ธ Upgraded to Realm Core 2.5.1.
    • โฌ†๏ธ Upgraded Gradle to 3.4.1