A Swift wrapper for Core Data that enforces safe concurrency, type safety, and provides utilities for modern SwiftUI and Combine apps.
CoreStore is a Swift library that wraps Core Data to provide a safer, more type-safe, and elegant API for data persistence in iOS, macOS, watchOS, and tvOS apps. It solves common Core Data pain points like concurrency issues, complex migrations, and boilerplate code by enforcing strict architectural patterns and leveraging modern Swift features.
Swift developers building data-intensive apps for Apple platforms who want a robust, type-safe alternative to raw Core Data, especially those using SwiftUI and Combine.
Developers choose CoreStore for its enforced safe concurrency model, type-safe entity definitions without .xcdatamodeld files, seamless integration with SwiftUI and Combine, and comprehensive utilities like progressive migrations and efficient data import.
Unleashing the real power of Core Data with the elegance and safety of Swift
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enforces a strict architecture where the main context is read-only and updates are done through serial transactions, preventing common concurrency bugs like race conditions in Core Data.
Allows defining entities and properties entirely in Swift code using CoreStoreObjects, supporting custom types and keypaths for compile-time safety without .xcdatamodeld files.
Provides property wrappers like @ListState and @ObjectState for SwiftUI, and Combine publishers for reactive programming, making modern Apple framework integration seamless.
Supports automatic progressive migrations with MigrationChain to handle complex model version upgrades, simplifying long-term data evolution and reducing manual migration efforts.
Requires understanding both Core Data fundamentals and CoreStore's specific patterns, such as transaction-based updates and the separation of read-only and write contexts, which can be daunting for newcomers.
The enforced architecture and additional abstraction layers can be excessive for apps with straightforward data persistence needs, where raw Core Data or simpler solutions like Codable might be more efficient.
Inherits Core Data's inherent issues, such as performance bottlenecks with large datasets or complex relationships, and the need for careful memory management, despite the wrapper's optimizations.