realm-java v10.10.0 Release Notes

Release Date: 2022-01-18 // 6 days ago
  • โœจ Enhancements

    • ๐Ÿ”€ [RealmApp] Add support for a new mode for synchronized realms: Flexible Sync that only synchronizes selective parts of the backend data. The following classes have been added to support this: Subscription, SubscriptionSet and MutableSubscriptionSet. This mode and all APIs are marked as Beta.

    ๐Ÿ›  Fixed

    • ๐Ÿ”€ [RealmApp] The sync client will now drain the receive queue when send fails with ECONNRESET - ensuring that any error message from the server gets received and processed. (Realm Core issue #5078)
    • ๐Ÿ“‡ [RealmApp] UserIdentity metadata table grows indefinitely. (Realm Core issue #5152)
    • Schema validation was missing for embedded objects in sets, resulting in an unhelpful error being thrown if the user attempted to define one.
    • Output from the annotation processor was not deterministic, which could result in cache misses. (Issue #7615)
    • Crashes when using RealmAny inside RealmList on ARM 32 devices. (Issue #7626)

    Compatibility

    • โฌ†๏ธ File format: Generates Realms with format v22. Unsynced Realms will be upgraded from Realm Java 2.0 and later. Synced Realms can only be read and upgraded if created with Realm Java v10.0.0-BETA.1.
    • ๐Ÿš€ APIs are backwards compatible with all previous release of realm-java in the 10.6.y series.
    • Realm Studio 11.0.0-alpha.0 or above is required to open Realms created by this version.

    Internal

    • โšก๏ธ Update to Realm Core 11.9.0, commit: 733f12702d16ab0d0c7fea0831a2aee5ca5c26db.

    Credits

    • Thanks to @jprinet for making the annotation processor output deterministic.

Previous changes from v10.9.0

  • โœจ Enhancements

    • ๐Ÿ‘ [RealmApp] Add support for UUID's as partition values. (Issue #7598)
    • ๐Ÿ”€ [RealmApp] Reduced native memory usage when working with synchronized Realms.
    • ๐Ÿ— [RealmApp] Make it possible to bundle synchronized Realms in apps using Realm.writeCopyTo() and SyncConfiguration.Builder.assetFile().
    • ๐Ÿ”ง The Realm Transformer and Realm Gradle Plugin now supports the Gradle Configuration Cache. (Issue #7299)
    • ๐Ÿ”€ [RealmApp] Introduced SyncSession.DiscardUnsyncedChangesStrategy, an alternative automatic client reset strategy that doesn't require the Realm to be closed, but discards any unsynced data from the client. This is now the default policy if not overridden.

    ๐Ÿ—„ Deprecated

    • ๐Ÿ”€ [RealmApp] SyncSession.ClientResetHandler(). Use SyncSession.ManuallyRecoverUnsyncedChangesStrategy() instead.
    • ๐Ÿ— [RealmApp] AppConfiguration.Builder.defaultClientResetHandler(). Use AppConfiguration.Builder.setDefaultSyncClientResetStrategy() instead.
    • 0๏ธโƒฃ [RealmApp] AppConfiguration.getDefaultClientResetHandler(). Use AppConfiguration.getDefaultSyncClientResetStrategy() instead.
    • ๐Ÿ— [RealmApp] SyncConfiguration.Builder.clientResetHandler(). Use SyncConfiguration.Builder.setSyncClientResetStrategy() instead.
    • ๐Ÿ”€ [RealmApp] SyncConfiguration.getClientResetHandler(). Use SyncConfiguration.getSyncClientResetStrategy() instead.

    ๐Ÿ›  Fixed

    • ๐Ÿ”€ [RealmApp] Setting AppConfiguration.syncRootDirectory() didn't have any effect beside creating the new folder. Realms were still placed in the default location.
    • ๐Ÿ”€ [RealmApp] Bug where progress notifiers continue to be called after the download of a synced realm is complete. (Issue Realm Core #4919)
    • [RealmApp] User being left in the logged in state when the user's refresh token expires. (Issue Realm Core #4882, since v10)
    • Using "sort", "distinct", or "limit" as field name in query expression would cause an "Invalid predicate" error. (Issue #7545, since v10.X.X)
    • Crash when quering with 'Not()' followed by empty group. (Issue Realm Core #4168 since v1.0.0)
    • Streaming download notifiers reported incorrect values for transferrable bytes. (Issue Realm Core #5008 since v11.5.2)
    • @sum and @avg queries on Dictionaries of floats or doubles used too much precision for intermediates, resulting in incorrect rounding.

    Compatibility

    • โฌ†๏ธ File format: Generates Realms with format v22. Unsynced Realms will be upgraded from Realm Java 2.0 and later. Synced Realms can only be read and upgraded if created with Realm Java v10.0.0-BETA.1.
    • ๐Ÿš€ APIs are backwards compatible with all previous release of realm-java in the 10.6.y series.
    • Realm Studio 11.0.0-alpha.0 or above is required to open Realms created by this version.

    Internal

    • โšก๏ธ Updated to Realm Core 11.7.0, commit: 81eafa44879eb5f5829b345005abf99adb306133.
    • ๐Ÿ— Building the SDK now requires JDK 11.
    • โšก๏ธ Updated to Gradle 7.2.
    • โšก๏ธ Updated to Android Gradle Plugin 7.1.0-beta03.
    • โšก๏ธ Updated to Kotlin 1.5.31.
    • โšก๏ธ Updated to Kotlin Coroutines 1.5.2.
    • โšก๏ธ Updated to CMake 3.21.4.
    • โšก๏ธ Updated to NDK 23.1.7779620.
    • Disable analytics for any value of the REALM_DISABLE_ANALYTICS environment variable, not just true.
    • ๐Ÿ“ˆ Disable analytics whenever the CI environment variable is set.