All Versions
285
Latest Version
Avg Release Cycle
11 days
Latest Release
950 days ago

Changelog History
Page 7

  • v10.1.4 Changes

    November 16, 2020

    โœจ Enhancements

    • โž• Add arm64 slices to the macOS builds.

    Compatibility

    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.2.
    • CocoaPods: 1.10 or later.

    Internal

    • โฌ†๏ธ Upgraded realm-core from v10.0.1 to v10.1.3
    • โฌ†๏ธ Upgraded realm-sync from v10.0.1 to v10.1.3
  • v10.1.3 Changes

    November 13, 2020

    โœจ Enhancements

    • โž• Add Xcode 12.2 binaries to the release package.

    ๐Ÿ›  Fixed

    • Disallow setting RLMRealmConfiguration.deleteRealmIfMigrationNeeded/Realm.Config.deleteRealmIfMigrationNeeded when sync is enabled. This did not actually work as it does not delete the relevant server state and broke in confusing ways (PR #6931).

    Compatibility

    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.1.
    • CocoaPods: 1.10 or later.
  • v10.1.2 Changes

    November 06, 2020

    โœจ Enhancements

    • ๐Ÿ‘ป Some error states which previously threw a misleading "NoSuchTable" exception now throw a more descriptive exception.

    ๐Ÿ›  Fixed

    • ๐Ÿš€ One of the Swift packages did not have the minimum deployment target set, resulting in errors when archiving an app which imported Realm via SPM (#6914 and #6874).
    • Reenable filelock emulation on watchOS so that the OS does not kill the app when it is suspended while a Realm is open on watchOS 7 (#6861, since v5.4.8)
    • ๐Ÿ›  Fix crash in case insensitive query on indexed string columns when nothing matches (#6836, since v5.0.0).
    • Null values in a List<Float?> or List<Double?> were incorrectly treated as non-null in some places. It is unknown if this caused any functional problems when using the public API. (Core PR #3987, since v5.0.0).
    • ๐Ÿ”€ Deleting an entry in a list in two different clients could end deleting the wrong entry in one client when the changes are merged (since v10.0.0).

    Compatibility

    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.1.
    • CocoaPods: 1.10 or later.

    Internal

    • โฌ†๏ธ Upgraded realm-core from v10.0.0 to v10.1.1
    • โฌ†๏ธ Upgraded realm-sync from v10.0.0 to v10.1.1
  • v10.1.1 Changes

    October 27, 2020

    โœจ Enhancements

    • Set the minimum CocoaPods version in the podspec so that trying to install with older versions gives a more useful error (PR #6892).

    ๐Ÿ›  Fixed

    • Embedded objects could not be marked as ObjectKeyIdentifable (PR #6890, since v10.0.0).

    Compatibility

    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.1.
    • CocoaPods: 1.10 or later.
  • v10.1.0 Changes

    October 22, 2020

    CocoaPods 1.10 or later is now required to install Realm.

    โœจ Enhancements

    • ๐Ÿ‘ป Throw an exception for Objects that have none of its properties marked with @objc.
    • ๐Ÿ‘ Mac Catalyst and arm64 simulators are now supported when integrating via Cocoapods.
    • โž• Add Xcode 12.1 binaries to the release package.
    • โž• Add Combine support for Realm.asyncOpen().

    ๐Ÿ›  Fixed

    • ๐Ÿ”€ Implement precise and unbatched notification of sync completion events. This avoids a race condition where an earlier upload completion event will notify a later waiter whose changes haven't been uploaded yet. (#1118).

    Compatibility

    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.1.
  • v10.0.0 Changes

    October 16, 2020

    ๐Ÿš€ This release is functionally identical to v10.0.0-rc.2.

    โฌ†๏ธ NOTE: This version upgrades the Realm file format version to add support for ๐Ÿ†• new data types. Realm files opened will be automatically upgraded and cannot be read by versions older than v10.0.0.

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ“‡ Rename Realm.Publishers to RealmPublishers to avoid confusion with Combine.Publishers.
    • โœ‚ Remove [RLMSyncManager shared]. This is now instatiated as a property on App/RLMApp.
    • ๐Ÿšš RLMSyncManager.pinnedCertificatePaths has been removed.
    • ๐Ÿšš Classes RLMUserAccountInfo & RLMUserInfo (swift: UserInfo, UserAccountInfo) have been removed.
    • ๐Ÿ”€ RLMSyncUser/SyncUser has been renamed to RLMUser/User.
    • ๐Ÿ‘ We no longer support Realm Cloud (legacy), but instead the new "MongoDB Realm" Cloud. MongoDB Realm is a serverless platform that enables developers to quickly build applications without having to set up server infrastructure. MongoDB Realm is built on top of MongoDB Atlas, automatically integrating the connection to your database.
    • โœ‚ Remove support for Query-based sync, including the configuration parameters and the RLMSyncSubscription and SyncSubscription types (#6437).
    • โœ‚ Remove everything related to sync permissions, including both the path-based permission system and the object-level privileges for query-based sync. Permissions are now configured via MongoDB Atlas. (#6445)
    • โœ‚ Remove support for Realm Object Server.
    • ๐Ÿ”€ Non-embedded objects in synchronized Realms must always have a primary key named "_id".
    • All Swift callbacks for asynchronous operations which can fail are now passed a Result<Value, Error> parameter instead of two separate Value? and Error? parameters.

    โœจ Enhancements

    • โž• Add support for next generation sync. Support for syncing to MongoDB instead of Realm Object Server. Applications must be created at realm.mongodb.com
    • ๐Ÿ‘ The memory mapping scheme for Realm files has changed to better support opening very large files.
    • โž• Add support for the ObjectId data type. This is an automatically-generated unique identifier similar to a GUID or a UUID. (PR #6450).
    • โž• Add support for the Decimal128 data type. This is a 128-bit IEEE 754 decimal floating point number similar to NSDecimalNumber. (PR #6450).
    • โž• Add support for embedded objects. Embedded objects are objects which are owned by a single parent object, and are deleted when that parent object is deleted. They are defined by subclassing EmbeddedObject / RLMEmbeddedObject rather than Object / RLMObject.
    • โž• Add -[RLMUser customData]/User.customData. Custom data is configured in your MongoDB Realm App.
    • โž• Add -[RLMUser callFunctionNamed:arguments:completion:]/User.functions. This is the entry point for calling Remote MongoDB Realm functions. Functions allow you to define and execute server-side logic for your application. Functions are written in modern JavaScript (ES6+) and execute in a serverless manner. When you call a function, you can dynamically access components of the current application as well as information about the request to execute the function and the logged in user that sent the request.
    • โž• Add -[RLMUser mongoClientWithServiceName:]/User.mongoClient. This is the entry point for calling your Remote MongoDB Service. The read operations are -[RLMMongoCollection findWhere:completion:], -[RLMMongoCollection countWhere:completion:]and -[RLMMongoCollection aggregateWithPipeline:completion:]. The write operations are -[RLMMongoCollection insertOneDocument:completion:], -[RLMMongoCollection insertManyDocuments:completion:], -[RLMMongoCollection updateOneDocument:completion:], -[RLMMongoCollection updateManyDocuments:completion:], -[RLMMongoCollection deleteOneDocument:completion:], and -[RLMMongoCollection deleteManyDocuments:completion:]. If you are already familiar with MongoDB drivers, it is important to understand that the remote MongoCollection only provides access to the operations available in MongoDB Realm.
    • ๐Ÿ”ง Obtaining a Realm configuration from a user is now done with [RLMUser configurationWithPartitionValue:]/User.configuration(partitionValue:). Partition values can currently be of types String, Int, or ObjectId, and fill a similar role to Realm URLs did with Realm Cloud. The main difference is that partitions are meant to be more closely associated with your data. For example, if you are running a Dog kennel, and have a field breed that acts as your partition key, you could open up realms based on the breed of the dogs.
    • โž• Add ability to stream change events on a remote MongoDB collection with [RLMMongoCollection watch:delegate:delegateQueue:], MongoCollection.watch(delegate:). When calling watch(delegate:) you will be given a RLMChangeStream (ChangeStream) which can be used to end watching by calling close(). Change events can also be streamed using the MongoCollection.watch Combine publisher that will stream change events each time the remote MongoDB collection is updated.
    • โž• Add the ability to listen for when a Watch Change Stream is opened when using Combine. Use onOpen(event:) directly after opening a WatchPublisher to register a callback to be invoked once the change stream is opened.
    • Objects with integer primary keys no longer require a separate index for the
    • ๐ŸŽ primary key column, improving insert performance and slightly reducing file size.

    Compatibility

    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12

    Internal

    • โฌ†๏ธ Upgraded realm-core from v6.1.4 to v10.0.0
    • โฌ†๏ธ Upgraded realm-sync from v5.0.29 to v10.0.0
  • v10.0.0-rc.2 Changes

    October 15, 2020

    โœจ Enhancements

    • โž• Add the ability to listen for when a Watch Change Stream is opened when using Combine. Use onOpen(event:) directly after opening a WatchPublisher to register a callback to be invoked once the change stream is opened.

    ๐Ÿ’ฅ Breaking Changes

    • The insert operations on Mongo collections now report the inserted documents' IDs as BSON rather than ObjectId.
    • Embedded objects can no longer form cycles at the schema level. For example, type A can no longer have an object property of type A, or an object property of type B if type B links to type A. This was always rejected by the server, but previously was allowed in non-synchronized Realms.
    • Primary key properties are once again marked as being indexed. This reflects an internal change to how primary keys are handled that should not have any other visible effects.
    • ๐Ÿ”„ Change paired return types from Swift completion handlers to return Result<Value, Error>.
    • ๐Ÿ‘ Adjust how RealmSwift.Object is defined to add support for Swift Library Evolution mode. This should normally not have any effect, but you may need to add override to initializers of object subclasses.
    • โž• Add .null type to AnyBSON. This creates a distinction between null values and properly absent BSON types.

    ๐Ÿ›  Fixed

    • Set the precision correctly when serializing doubles in extended json.
    • ๐Ÿ”ง Reading the objectTypes array from a Realm Configuration would not include the embedded object types which were set in the array.
    • Reject loops in embedded objects as part of local schema validation rather than as a server error.
    • Although MongoClient is obtained from a User, it was actually using the User's App's current user rather than the User it was obtained from to make requests.

    ๐Ÿš€ This release also contains the following changes from 5.4.7 - 5.5.0

    โœจ Enhancements

    • โž• Add the ability to capture a NotificationToken when using a Combine publisher that observes a Realm Object or Collection. The user will call saveToken(on:at:) directly after invoking the publisher to use the feature.

    ๐Ÿ›  Fixed

    • When using Realm.write(withoutNotifying:) there was a chance that the supplied observation blocks would not be skipped when in a write transaction. (Object Store #1103)
    • Comparing two identical unmanaged List<>/RLMArray objects would fail. (#5665).
    • Case-insensitive equality queries on indexed string properties failed to clear some internal state when rerunning the query. This could manifest as duplicate results or "key not found" errors. (#6830, #6694, since 5.0.0).
    • Equality queries on indexed string properties would sometimes throw "key not found" exceptions if the hash of the string happened to have bit 62 set. (.NET #2025, since v5.0.0).
    • Queries comparing non-optional int properties to nil would behave as if they were comparing against zero instead (since v5.0.0).

    Compatibility

    • โฌ†๏ธ File format: Generates Realms with format v12 (Reads and upgrades all previous formats)
    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.

    Internal

    • โฌ†๏ธ Upgraded realm-core from v10.0.0-beta.9 to v10.0.0
    • โฌ†๏ธ Upgraded realm-sync from v10.0.0-beta.14 to v10.0.0
  • v10.0.0-rc.1 Changes

    October 02, 2020

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ”„ Change the following methods on RLMUser to properties:
      • [RLMUser emailPasswordAuth] => RLMUser.emailPasswordAuth
      • [RLMUser identities] => RLMUser.identities
      • [RLMUser allSessions] => RLMUser.allSessions
      • [RLMUser apiKeysAuth] => RLMUser.apiKeysAuth
    • Other changes to RLMUser:
      • nullable has been removed from RLMUser.identifier
      • nullable has been removed from RLMUser.customData
    • ๐Ÿ”„ Change the following methods on RLMApp to properties:
      • [RLMApp allUsers] => RLMApp.allUsers
      • [RLMApp currentUser] => RLMApp.currentUser
      • [RLMApp emailPasswordAuth] => RLMApp.emailPasswordAuth
    • Define RealmSwift.Credentials as an enum instead of a typealias. Example usage has changed from Credentials(googleAuthCode: "token") to Credentials.google(serverAuthCode: "serverAuthCode"), and Credentials(facebookToken: "token") to Credentials.facebook(accessToken: "accessToken"), etc.
    • โœ‚ Remove error parameter and redefine payload in + (instancetype)credentialsWithFunctionPayload:(NSDictionary *)payload error:(NSError **)error;. It is now defined as + (instancetype)credentialsWithFunctionPayload:(NSDictionary<NSString *, id<RLMBSON>> *)payload;

    Compatibility

    • โฌ†๏ธ File format: Generates Realms with format v12 (Reads and upgrades all previous formats)
    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 10.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.
  • v10.0.0-beta.6 Changes

    October 01, 2020

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ”„ Change Google Credential parameter names to better reflect the required auth code:
      • Credentials(googleToken:) => Credentials(googleAuthCode:)
      • [RLMCredentials credentialsWithGoogleToken:] => [RLMCredentials credentialsWithGoogleAuthCode:]
    • ๐Ÿ“‡ Rename Realm.Publishers to RealmPublishers to avoid confusion with Combine.Publishers

    ๐Ÿ›  Fixed

    • Deleting objects could sometimes change the ObjectId remaining objects from null to ObjectId("deaddeaddeaddeaddeaddead") when there are more than 1000 objects. (Since v10.0.0-alpha.1)
    • ๐Ÿ›  Fixed an assertion failure when adding an index to a nullable ObjectId property that contains nulls. (since v10.0.0-alpha.1).

    ๐Ÿš€ This release also contains the following changes from 5.4.0 - 5.4.6:

    โœจ Enhancements

    • โž• Add prebuilt binary for Xcode 11.7 to the release package.
    • โž• Add prebuilt binary for Xcode 12 to the release package.
    • ๐Ÿ‘Œ Improve the asymtotic performance of NOT IN queries on indexed properties. It is now O(Number of Rows) rather than O(Number of Rows * Number of values in IN clause.)
    • ๐ŸŽ Slightly (<5%) improve the performance of most operations which involve reading from a Realm file.

    ๐Ÿ›  Fixed

    • โฌ†๏ธ Upgrading pre-5.x files with string primary keys would result in a file where realm.object(ofType:forPrimaryKey:) would fail to find the object. (#6716, since 5.2.0)
    • A write transaction which modifies an object with more than 16 managed properties and causes the Realm file to grow larger than 2 GB could cause an assertion failure mentioning "m_has_refs". (JS #3194, since 5.0.0).
    • Objects with more than 32 properties could corrupt the Realm file and result in a variety of crashes. (Java #7057, since 5.0.0).
    • ๐Ÿ›  Fix deadlocks when opening a Realm file in both the iOS simulator and Realm Studio (#6743, since 5.3.6).
    • ๐Ÿ›  Fix Springboard deadlocking when an app is unsuspended while it has an open Realm file which is stored in an app group on iOS 10-12 (#6749, since 5.3.6).
    • If you use encryption your application cound crash with a message like "Opening Realm files of format version 0 is not supported by this version of Realm". (#6889 among others, since 5.0.0)
    • Confining a Realm to a serial queue would throw an error claiming that the queue was not a serial queue on iOS versions older than 12. (#6735, since 5.0.0).
    • Results would sometimes give stale results inside a write transaction if a write which should have updated the Results was made before the first access of a pre-existing Results object. (#6721, since 5.0.0)
    • ๐Ÿ›  Fix Archiving the Realm and RealmSwift frameworks with Xcode 12. (#6774)
    • ๐Ÿ›  Fix compilation via Carthage when using Xcode 12 (#6717).
    • Fix a crash inside realm::Array(Type)::init_from_mem() which would sometimes occur when running a query over links immediately after creating objects of the queried type. (#6789 and possibly others, since 5.0.0).
    • Possibly fix problems when changing the type of the primary key of an object from optional to non-optional.
    • Rerunning a equality query on an indexed string property would give incorrect results if a previous run of the query matched multiple objects and it now matches one object. This could manifest as either finding a non-matching object or a "key not found" exception being thrown. (#6536, since 5.0.0).

    Compatibility

    • โฌ†๏ธ File format: Generates Realms with format v12 (Reads and upgrades all previous formats)
    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 12.

    Internal

    • โฌ†๏ธ Upgraded realm-core from v10.0.0-beta.7 to v10.0.0-beta.9
    • โฌ†๏ธ Upgraded realm-sync from v10.0.0-beta.11 to v10.0.0-beta.14
  • v10.0.0-beta.5 Changes

    September 16, 2020

    โœจ Enhancements

    • โž• Add User.loggedIn.
    • โž• Add support for multiple Realm Apps.
    • โœ‚ Remove [RLMSyncManager shared]. This is now instatiated as a property on the app itself.
    • โž• Add Combine support for:
      • PushClient
      • APIKeyAuth
      • User
      • MongoCollection
      • EmailPasswordAuth
      • App.login

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fix MongoCollection.watch to consistently deliver events on a given queue.
    • ๐Ÿ›  Fix [RLMUser logOutWithCompletion] and User.logOut to now log out the correct user.
    • ๐Ÿ›  Fix crash on startup on iOS versions older than 13 (since v10.0.0-beta.3).

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿšš RLMSyncManager.pinnedCertificatePaths has been removed.
    • Classes RLMUserAccountInfo & RLMUserInfo (swift: UserInfo, UserAccountInfo) have been removed.
    • The following functionality has been renamed to align Cocoa with the other Realm SDKs:
    Old API New API
    RLMUser.identity RLMUser.identifier
    User.identity User.id
    -[RLMCredentials credentialsWithUsername:password:] -[RLMCredentials credentialsWithEmail:password:]
    Credentials(username:password:) Credentials(email:password:)
    -[RLMUser apiKeyAuth] -[RLMUser apiKeysAuth]
    User.apiKeyAuth() User.apiKeysAuth()
    -[RLMEmailPasswordAuth registerEmail:password:completion:] -[RLMEmailPasswordAuth registerUserWithEmail:password:completion:]
    App.emailPasswordAuth().registerEmail(email:password:) App.emailPasswordAuth().registerUser(email:password:)

    Compatibility

    • โฌ†๏ธ File format: Generates Realms with format v12 (Reads and upgrades all previous formats)
    • Realm Studio: 10.0.0 or later.
    • ๐Ÿš€ APIs are backwards compatible with all previous releases in the 5.x.y series.
    • ๐Ÿš€ Carthage release for Swift is built with Xcode 11.6.

    Internal

    • โฌ†๏ธ Upgraded realm-core from v10.0.0-beta.6 to v10.0.0-beta.7
    • โฌ†๏ธ Upgraded realm-sync from v10.0.0-beta.10 to v10.0.0-beta.11