Skip to content

Releases: realm/realm-swift

v20.0.3

16 Jun 04:12
Compare
Choose a tag to compare

Enhancements

  • Update build scripts for Xcode 16.4.
  • Add support for building with Xcode 26 beta 1.

Compatibility

  • Carthage release for Swift is built with Xcode 16.4.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-26 beta 1.

v10.54.5

16 Jun 00:17
Compare
Choose a tag to compare

Enhancements

  • Add Xcode 16.4 binaries.
  • Add support for building with Xcode 26 beta 1.

Compatibility

  • Realm Studio: 15.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 16.4.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-26 beta 1.

v20.0.2

16 Apr 16:43
f8d74e9
Compare
Choose a tag to compare

Enhancements

  • Update build scripts for Xcode 16.2.

Compatibility

  • Carthage release for Swift is built with Xcode 16.3.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.3.

v10.54.4

10 Apr 04:36
Compare
Choose a tag to compare

Enhancements

  • Add Xcode 16.3 binaries.

Compatibility

  • Realm Studio: 15.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 16.3.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.3.

v10.54.3

08 Mar 04:06
8cb364a
Compare
Choose a tag to compare

Enhancements

  • Enable automatic client reset handling for Events Realms. These Realms
    typically do not trigger client resets, but may if sync is restarted when one
    is partially uploaded. (Core #8072).

Compatibility

  • Realm Studio: 15.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 16.2.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.2.

Internal

  • Upgraded realm-core from v14.13.1 to 14.14.0

v20.0.1

27 Dec 20:42
bae6c4b
Compare
Choose a tag to compare

Enhancements

  • Update build scripts for Xcode 16.2.

Fixed

  • A query with a number of predicates ORed together may result in a
    crash on some platforms (strict weak ordering check failing on iphone)
    (#8028, since v10.50.0).

Compatibility

  • Realm Studio: 15.0.0 or later.
  • Carthage release for Swift is built with Xcode 16.2.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.2.

Internal

  • Upgraded realm-core from v20.0.0 to 20.1.0

v10.54.2

17 Dec 21:54
Compare
Choose a tag to compare

Enhancements

  • Add prebuilt binaries for Xcode 16.2.

Compatibility

  • Realm Studio: 15.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 16.2.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.2.

v10.54.1

22 Oct 18:32
Compare
Choose a tag to compare

Enhancements

  • None.

Fixed

  • The events library would attempt to upload backup files created as part of
    file format upgrades, causing backup copies of those backups to be made,
    looping until the maximum file name size was reached
    (Core #8040, since v10.26.0).

Compatibility

  • Realm Studio: 15.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 15.4.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.1 beta.

Internal

  • Upgraded realm-core from v14.13.0 to 14.13.1

v10.54.0

21 Sep 17:54
Compare
Choose a tag to compare

The minimum supported version of Xcode is now 15.3.

Enhancements

  • Build in Swift 6 language mode when using Xcode 16. Libraries build in Swift
    6 mode can be consumed by apps built in Swift 5 mode, so this should not have
    any immediate effects beyond eliminating some warnings and ensuring that all
    Realm APIs can be used in Swift 6 mode. Some notes about using Realm Swift in
    Swift 6:
    • try await Realm(actor: actor) has been replaced with try await Realm.open() to work around isolated parameters not being implemented for
      initializers (swiftlang/swift#71174). The actor is
      now automatically inferred and should not be manually passed in.
    • @ThreadSafe is not usable as a property wrapper on local variables and
      function arguments in Swift 6 mode. Sendability checking for property
      wrappers never got implemented due to them being quietly deprecated in favor
      of macros. It can still be used as a property wrapper for class properties
      and as a manual wrapper locally, but note that it does not combine well with
      actor-isolated Realms.
    • In Swift 6 mode a few mongo client functions have changed from returning
      [AnyHashable: Any] to Document. These should have been Document all
      along, and the old return type no longer compiles due to not being Sendable.
  • Some SwiftUI components are now explicitly marked as @MainActor. These
    types were implicitly @MainActor in Swift 5, but became nonisolated when
    using Xcode 16 in Swift 5 mode due to the removal of implicit isolation when
    using property wrappers on member variables. This resulted in some new
    sendability warnings in Xcode 16 (or errors in Swift 6 mode).
  • Add Xcode 16 and 16.1 binaries to the release packages.

Fixed

  • Having a query with a number of predicates ORed together may result in a
    crash on some platforms (strict weak ordering check failing on iphone)
    (#8028, since v10.50.0)

Compatibility

  • Realm Studio: 15.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 15.4.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.1 beta.

Internal

  • Upgraded realm-core from v14.12.1 to 14.13.0

v20.0.0

09 Sep 17:18
Compare
Choose a tag to compare

The minimum supported version of Xcode is now 15.3.

Enhancements

  • Build in Swift 6 language mode when using Xcode 16. Libraries build in Swift 6 mode can be consumed by apps built in Swift 5 mode, so this should not have any immediate effects beyond eliminating some warnings and ensuring that all Realm APIs can be used in Swift 6 mode. Some notes about using Realm Swift in Swift 6:
    • try await Realm(actor: actor) has been replaced with try await Realm.open() to work around isolated parameters not being implemented for initializers (swiftlang/swift#71174). The actor is now automatically inferred and should not be manually passed in.
    • @ThreadSafe is not usable as a property wrapper on local variables and function arguments in Swift 6 mode. Sendability checking for property wrappers never got implemented due to them being quietly deprecated in favor of macros. It can still be used as a property wrapper for class properties and as a manual wrapper locally, but note that it does not combine well with actor-isolated Realms.
  • Some SwiftUI components are now explicitly marked as @MainActor. These types were implicitly @MainActor in Swift 5, but became nonisolated when using Xcode 16 in Swift 5 mode due to the removal of implicit isolation when using property wrappers on member variables. This resulted in some new sendability warnings in Xcode 16 (or errors in Swift 6 mode).
  • Add Xcode 16 and 16.1 binaries to the release packages (currently built with beta 6 and beta 1 respectively).

Breaking Changes

  • All Atlas App Services and Atlas Device Sync functionality has been removed. Users of Atlas Device Sync should pin to v10.

  • Queries on AnyRealmValue properties previously considered strings to be equivalent to Data containing the UTF-8 encoded string. Strings and Data are now considered different types and queries for one of them will not match the other.

  • Realms are no longer autoreleased when initialized. This means that code along the lines of the following will no longer work:

    try! Realm().beginWrite()
    try! Realm().create(MyObject.self, value: ...)
    try! Realm().commitWrite()

    This was a pattern which was somewhat natural with the original version of the objective-c API, but only worked in debug builds and would fail in release builds. We decided to make it consistently work by forcing the Realm to be autoreleased rather than let users write code which appeared to work but was actually broken. In modern Swift this code is very strange, and autoreleasing the Realm made it much more difficult to ensure that the file is actually closed at predictable times.

    Realms are now returned retained in both debug and release modes, so this will always break rather than appearing to work. Note that there is still a weak cache of Realms and Realm() will still return a reference to the existing Realm if there is one open on the current thread.

  • Iterating a Map now produces the tuple (key: KeyType, value: ValueType) rather than a very similar struct, and .asKeyValueSequence() has been removed. This aligns Map with Dictionary and makes many operations defined by Sequence work on Map.

  • Passing an empty array for notification keypaths to filter on (e.g. obj.observe(keyPaths: [])) was treated the same as passing nil, i.e. no filtering was done. It now instead observes no keypaths. For objects this means it will only report the object being deleted, and for collections it will only report collection-level changes and not changes to the objects inside the collection.

  • Decimal128(string:) was marked as throws, but it never actually threw an error and instead returned NaN if the string could not be parsed as a decimal128. That behavior was kept and it is no longer marked as throws.

Compatibility

  • Realm Studio: 15.0.0 or later.
  • Carthage release for Swift is built with Xcode 15.4.0.
  • CocoaPods: 1.10 or later.
  • Xcode: 15.3.0-16.1 beta.

Internal

  • Upgraded realm-core from v14.12.1 to v20.0.0.