Realm 10.20.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Realm --version 10.20.0                
NuGet\Install-Package Realm -Version 10.20.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Realm" Version="10.20.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Realm --version 10.20.0                
#r "nuget: Realm, 10.20.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Realm as a Cake Addin
#addin nuget:?package=Realm&version=10.20.0

// Install Realm as a Cake Tool
#tool nuget:?package=Realm&version=10.20.0                

Realm is a mobile database: a replacement for SQLite

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net46 is compatible.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid is compatible. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios is compatible. 
Xamarin.Mac xamarinmac is compatible. 
Xamarin.TVOS xamarintvos is compatible. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (39)

Showing the top 5 NuGet packages that depend on Realm:

Package Downloads
ppy.osu.Game

Package Description

Iridium360.Connect.Framework

This framework allows you to bind your Android or iOS device with i360RockSTAR tracker

ItEnterprise.Common.CoreStandard

ItEnterprise Common.CoreStandard for Xamarin Forms

Arc4u.Standard.Diagnostics.Serilog.Sinks.RealmDb

Package Description

ItEnterprise.WmsStandard

ItEnterprise WmsStandard for Xamarin Forms

GitHub repositories (7)

Showing the top 5 popular GitHub repositories that depend on Realm:

Repository Stars
ppy/osu
rhythm is just a *click* away!
realm/realm-dotnet
Realm is a mobile database: a replacement for SQLite & ORMs
sgermosen/xReader
XML, NEWS, RSS & Scrapping Reader maked in Xamarin, for educational purpose.
Piotrekol/CollectionManager
An extensive tool for creating, editing, and exporting of osu! collections.
realm/realm-draw
The official Realm Draw app used in promotional videos
Version Downloads Last updated
20.0.0 14,491 9/9/2024
12.4.1 8,374 9/16/2024
12.4.0 16,665 8/25/2024
12.3.0 34,046 7/20/2024
12.2.0 50,117 5/22/2024
12.1.0 12,696 5/1/2024
12.0.0 12,664 4/17/2024
11.7.0 92,254 2/5/2024
11.6.1 89,431 11/17/2023
11.6.0 22,813 11/4/2023
11.5.0 276,948 9/16/2023
11.4.0 31,809 8/16/2023
11.3.0 46,992 7/26/2023
11.2.0 17,042 7/8/2023
11.1.2 110,082 6/20/2023
11.1.1 7,507 6/19/2023
11.1.0 2,737 6/17/2023
11.0.0 47,424 5/8/2023
10.21.1 44,305 4/21/2023
10.21.0 24,601 3/24/2023
10.20.0 90,913 2/10/2023
10.19.0 35,839 1/6/2023
10.18.0 138,188 11/2/2022
10.17.0 93,874 10/6/2022
10.16.0 12,908 10/3/2022
10.15.1 110,783 8/8/2022
10.15.0 5,733 8/5/2022
10.14.0 188,149 6/2/2022
10.13.0 28,411 5/18/2022
10.12.0 18,420 5/5/2022
10.11.2 35,121 4/21/2022
10.11.1 21,832 3/31/2022
10.11.0 5,571 3/28/2022
10.10.0 96,249 2/28/2022
10.9.0 81,734 1/21/2022
10.8.0 38,440 1/17/2022
10.7.1 106,636 11/20/2021
10.7.0 7,235 11/10/2021
10.6.0 169,427 9/30/2021
10.5.1 18,481 9/22/2021
10.5.0 31,059 9/9/2021
10.4.1 3,813 9/3/2021
10.4.0 11,384 8/31/2021
10.3.0 140,210 7/7/2021
10.2.1 27,139 7/1/2021
10.2.0 28,653 6/15/2021
10.2.0-beta.2 786 5/5/2021
10.2.0-beta.1 363 4/12/2021
10.1.4 19,988 5/12/2021
10.1.3 23,381 4/29/2021
10.1.2 29,711 3/19/2021
10.1.1 22,716 2/25/2021
10.1.0 15,845 2/9/2021
10.0.1 7,795 2/2/2021
10.0.0-beta.6 445 1/26/2021
10.0.0-beta.5 653 1/19/2021 10.0.0-beta.5 is deprecated because it has critical bugs.
10.0.0-beta.3 1,167 12/10/2020
10.0.0-beta.2 1,488 11/4/2020
10.0.0-beta.1 747 10/16/2020
10.0.0-alpha.43 374 10/9/2020
10.0.0-alpha.34 484 10/4/2020
5.1.3 26,562 2/10/2021
5.1.2 84,557 10/20/2020
5.1.1 28,014 10/2/2020
5.1.0 7,580 9/30/2020
5.0.1 10,874 9/9/2020
4.3.0 278,629 2/5/2020
4.2.0 70,401 10/8/2019
4.1.0 87,845 8/6/2019
4.0.1 20,425 6/27/2019
4.0.0 6,366 6/14/2019
3.4.0 104,175 1/9/2019
3.3.0 26,487 11/8/2018
3.2.1 49,447 9/27/2018
3.2.0 17,213 9/4/2018
3.1.0 33,399 7/4/2018
3.0.0 110,316 4/16/2018
2.2.0 14,871 3/22/2018
2.1.0 55,284 11/13/2017
2.0.0 18,436 10/17/2017
2.0.0-rc1 2,634 10/3/2017
1.6.0 35,628 8/15/2017
1.5.0 18,058 6/20/2017
1.4.0 14,977 5/19/2017
1.3.0 3,772 5/16/2017
1.2.1 8,014 5/1/2017
1.2.0 6,033 4/4/2017
1.1.1 7,554 3/15/2017
1.1.0 3,730 3/3/2017
1.0.4 4,961 2/21/2017
1.0.3 17,118 2/14/2017
0.82.1 18,527 1/27/2017
0.82.0 3,445 1/23/2017
0.81.0 5,543 12/15/2016
0.80.0 11,660 10/27/2016
0.78.1 20,645 9/15/2016
0.78.0 2,787 9/11/2016
0.77.2 5,660 8/11/2016
0.77.1 3,220 7/28/2016
0.76.1 6,112 6/15/2016
0.76.0 3,472 6/9/2016
0.75.0 3,288 6/3/2016
0.74.1 5,970 5/10/2016

## 10.20.0 (2023-02-10)

**File format version bumped. Old files will be automatically upgraded but cannot be downgraded and opened with older versions of the .NET SDK.**

### Breaking Changes
* `User.GetPushClient` has been deprecated as it will be disabled soon on the server. (Issue [#3073](https://github.com/realm/realm-dotnet/issues/3073))

### Enhancements
* The realm file will be shrunk if the larger file size is no longer needed. (Core 13.0.0)
* Most of the file growth caused by version pinning is eliminated. (Core 13.0.0)
* Improve performance of acquiring read locks when a read lock for that version is already held. This speeds up many operations related to change notifications, and particularly refreshing a Realm which has change notifiers registered. (Core 13.2.0)
* Upgrade OpenSSL from 1.1.1n to 3.0.7. (Core 13.2.0)
* Converting flexible sync realms to bundled and local realms is now supported (Core 13.2.0)
* Add support for nested classes for source generated classes. (Issue [#3031](https://github.com/realm/realm-dotnet/issues/3031))
* Enhanced support for nullable reference types in the model definition for source generated classes. This allows to use realm models as usual when nullable context is active, and removes the need to use of the `Required` attribute to indicate required properties, as this information will be inferred directly from the nullability status. There are some considerations regarding the nullability of properties that link to realm object:
 - Properties that link to a single realm object are inherently nullable, and thus the type must be defined as nullable.
 - List, Sets and Backlinks cannot contain null objects, and thus the type parameter must be non-nullable.
 - Dictionaries can contain null values, and thus the type parameter must be nullable.

 Defining the properties with a different nullability annotation than what has been outlined here will raise a diagnostic error. For instance:
 ```cs
 public partial class Person: IRealmObject
 {
     //Single values
     public Dog? MyDog { get; set; } //Correct

     public Dog MyDog { get; set; } //Error

     //List
     public IList<Dog> MyDogs { get; } //Correct

     public IList<Dog?> MyDogs { get; } //Error

     //Set
     public ISet<Dog> MyDogs { get; } //Correct

     public ISet<Dog?> MyDogs { get; } //Error

     //Dictionary
     public IDictionary<string, Dog?> MyDogs { get; } //Correct

     public IDictionary<string, Dog> MyDogs { get; } //Error

     //Backlink
     [Realms.Backlink("...")]
     public IQueryable<Dog> MyDogs { get; } //Correct

     [Realms.Backlink("...")]
     public IQueryable<Dog?> MyDogs { get; } //Error
 }
 ```
 We realise that some developers would still prefer to have more freedom in the nullability annotation of such properties, and it is possible to do so by setting  `realm.ignore_objects_nullability = true` in a global configuration file (more information about global configuration files can be found in the [.NET documentation](https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/configuration-files)). If this is enabled, all the previous properties will be considered valid, and the nullability annotations for properties linking to objects will be ignored.
* Improved performance of `PropertyChanged` and `CollectionChanged` notifications. (Issue [#3112](https://github.com/realm/realm-dotnet/issues/3112))
* Added support for tvOS in Xamarin/MAUI and Unity applications. (Issue [#3161](https://github.com/realm/realm-dotnet/issues/3161))
* Improve the performance of `Realm.Freeze()`. (Core 13.3.0)

### Fixed
* `ISet<RealmValue>` consider string and binary data equivalent. This could cause the client to be inconsistent with the server if a string and some binary data with equivalent content was inserted from Atlas. (Core 13.0.0)
* Fixed wrong assertion on query error that could result in a crash. (Core 13.1.0)
* Fixed an issue preventing opening an encrypted file on a device with a page size bigger than the one on which the file was produced. (Core 13.1.1)
* Fixed possible segfault in sync client where async callback was using object after being deallocated (Core 13.2.0)
* Fixed crash when using client reset with recovery and flexible sync with a single subscription (Core 13.2.0)
* Added a more descriptive error message when a model's property is unsupported. It'll now suggest that the target type may need to inherit from `RealmObject`. (Issue [#3162](https://github.com/realm/realm-dotnet/issues/3162))
* Disposing a Realm instance while an active transaction is running will now correctly roll back the transaction. (Issue [#2924](https://github.com/realm/realm-dotnet/issues/2924))
* Fixed an issue that would cause `PropertyChanged` notifications to be delivered for collection properties when the content of the collection was modified even if the collection itself was not replaced. (Issue [#3112](https://github.com/realm/realm-dotnet/issues/3112))
* Fixed an issue where weaving assemblies on Unity could result in `System.InvalidOperationException`. (Issue [#3199](https://github.com/realm/realm-dotnet/issues/3199))
* `Session.Stop` will now correctly keep the session stopped until `Session.Start` is called. Previously, there were a number of circumstances that could cause the session to be resumed, even if not explicitly requested. (Core 13.3.0)
* When client reset with recovery is used and the recovery does not actually result in any new local commits, the sync client may have gotten stuck in a cycle with a A fatal error occured during client reset: 'A previous 'Recovery' mode reset from <timestamp> did not succeed, giving up on 'Recovery' mode to prevent a cycle' error message. (Core 13.3.0)
* Fixed diverging history in flexible sync if writes occur during bootstrap to objects that just came into view. (Core 13.3.0)
* Fix several data races when opening cached frozen Realms. New frozen Realms were added to the cache and the lock released before they were fully initialized, resulting in races if they were immediately read from the cache on another thread. (Core 13.3.0)
* If a client reset w/recovery or discard local is interrupted while the "fresh" realm is being downloaded, the sync client may crash with a MultpleSyncAgents exception. (Core 13.3.0)
* Changesets from the server sent during FLX bootstrapping that are larger than 16MB can cause the sync client to crash with a LogicError. (Core 13.3.0)
* Sharing Realm files between a Catalyst app and Realm Studio did not properly synchronize access to the Realm file. (Core 13.4.0)

### Compatibility
* Realm Studio: 13.0.0 or later.

### Internal
* Using Core 13.4.0.
* Updated `DynamicRealmObjectHelper.TryGetPrimaryKeyValue` not to use reflection. (Issue [#3166](https://github.com/realm/realm-dotnet/issues/3166))
* Fixed UWP tests workflow when running a debug build. (Issue [#3030](https://github.com/realm/realm-dotnet/issues/3030))