A Realm extension that enables storing Swift native types (structs, classes, enums) directly in Realm databases.
Unrealm is a Swift library that extends RealmCocoa to enable storing native Swift types—such as structs, classes, and enums—directly in Realm databases. It solves the limitation of requiring inheritance from Realm's `Object` class, allowing developers to use protocol-oriented design and reduce boilerplate code. By supporting Swift's full type system, it integrates seamlessly with modern Swift development practices.
iOS/macOS developers using Realm for persistence who want to leverage Swift's native types (structs, enums) and protocol-oriented programming without Realm's inheritance constraints.
Developers choose Unrealm because it eliminates the need to inherit from `Object`, reduces boilerplate code like `@objc dynamic var` and `RealmOptional`, prevents common Realm threading crashes, and works seamlessly with Swift's Codable. It brings Realm's power to Swift's native type system.
Unrealm is an extension on RealmCocoa, which enables Swift native types to be saved in Realm.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables direct persistence of Swift structs, classes, and enums in Realm by conforming to Realmable protocols, eliminating the need to inherit from Object and promoting protocol-oriented design.
Internally handles common Realm crashes related to thread access and invalidated objects, reducing debugging time and improving app stability, as highlighted in the README.
Removes verbose syntax like @objc dynamic var and RealmOptional, allowing use of standard Swift var/let and optionals, which simplifies code and aligns with modern Swift practices.
Works seamlessly with Swift's Codable protocol for easy serialization and deserialization, enhancing interoperability with other Swift frameworks and reducing custom code.
Objects retrieved from Realm do not update automatically when modified; manual updates via realm.add(update: true) are required, which can lead to synchronization issues and increased complexity.
Swift Package Manager installation requires using the master branch instead of versioned releases, posing stability risks and complicating dependency management, as noted in the README.
Built specifically for RealmCocoa v10.15.1, which may limit access to newer Realm features or fixes, requiring careful evaluation for long-term projects.