JohnEstropia/CoreStore
39.9
Weak · 30 September 2026
40.8k
lines of production code
Swift
primary language
2
measurements over time
What this system is
CoreStore is a Swift library that provides a type-safe wrapper for Apple's Core Data framework, enabling developers to manage persistent data without traditional .xcdatamodeld files. It supports progressive schema migrations, reactive data binding via Combine and SwiftUI, and offers a modern, throwing API for data transactions. The system is designed for multi-platform iOS, macOS, tvOS, and watchOS applications, emphasizing type safety and efficient data fetching.
How it got here
2014–2015 — CoreStore v9.3.0 release and platform modernization
12 changes.
This period centered on the initial public release of CoreStore v9.3.0, introducing SwiftUI and Combine support while dropping legacy iOS 16+ and macOS 13+ deployment targets. The work involved restructuring the project to resolve CocoaPods naming conflicts, adding comprehensive unit tests, and configuring build schemes for multi-platform support.
2016–2020 — Swift 5 migration and API modernization
8 changes.
The project underwent a significant overhaul to adopt Swift-native patterns, replacing callback-based APIs with throwing transactions and migrating to Swift Package Manager. This period also introduced comprehensive playgrounds and a multi-platform demo app to showcase modern SwiftUI, UIKit, and complex schema migration capabilities.
Features
Added demo app launch screen and asset catalog
The demo application now includes a dedicated launch screen (LaunchScreen.storyboard) that displays the CoreStore icon and title, along with a complete set of iOS asset catalogs (AppIcon, CoreStoreIcon, and Preview Assets) to support proper app icon rendering and SwiftUI previews.
Demo/Resources · high confidence
Added macOS playground sample for CoreStore
A new playground sample for macOS has been added to demonstrate CoreStore usage. It includes model declarations for Animal, Dog, and Person entities, a DataStack setup with a SQLite store, and examples of creating objects via transactions and querying them using the new Field property syntax.
_Playground\macOS.playground · high confidence
Initial release of CoreStore with SwiftUI, Combine, and progressive migration support
This entry marks the initial public release of CoreStore, a Swift wrapper for Core Data. The library introduces type-safe object models via \CoreStoreObject\ and the \@Field\ property wrapper, eliminating the need for separate \.xcdatamodeld\ files. Key capabilities include progressive migrations for automatic model versioning, a clean fetching and querying API, and efficient importing utilities. The release also adds modern reactive programming support through Combine publishers (\ListPublisher.reactive\, \ObjectPublisher.reactive\) and SwiftUI utilities (\ListReader\, \ObjectReader\, \@ListState\, \@ObjectState\), alongside diffable data source support for \UITableView\ and \UICollectionView\. The project is configured for iOS 16+, macOS 13+, watchOS 9+, and tvOS 16+ using Swift 5.9.
(repo-wide) · high confidence
New Demo application showcasing CoreStore usage across multiple platforms
The project now includes a new Demo app that serves as a comprehensive guide for using CoreStore. It features several distinct demo modules: a 'Modern' suite demonstrating SwiftUI and UIKit implementations for Pokedex, Colors, Placemarks, and TimeZones; a 'Classic' suite showing traditional UIKit patterns for Colors; and an 'Advanced' suite illustrating complex data migration strategies (EvolutionDemo) with versioned Core Data models and mapping policies. This provides users with concrete, runnable examples of how to integrate CoreStore into both modern and legacy iOS/macOS applications.
Demo/Demo.xcodeproj · high confidence
New Evolution Demo showcasing complex CoreStore schema migrations
The demo application now includes an 'Evolution' sample that demonstrates advanced CoreStore capabilities, specifically progressive schema migrations and downgrades. This demo features a \DataStack\ configured with a history of four model versions (V1 through V4) and a \MigrationChain\ that allows users to switch between geological periods (Invertebrates, Fishes, Reptiles, Mammals), triggering automatic data migrations or downgrades as needed. The implementation includes a \Migrator\ class to manage the migration state, a \CreaturesDataSource\ to handle list publishing and mutations, and SwiftUI views (\MainView\, \ListView\, \ProgressView\) to visualize the migration progress and creature data.
Demo/Sources · high confidence
New iOS playground demonstrating CoreStore data modeling and transactions
An iOS playground has been added to showcase the updated CoreStore API, specifically illustrating how to define data models using the new \@Field\ property wrappers (such as \@Field.Stored\, \@Field.Coded\, and \@Field.Relationship\) and perform asynchronous data transactions. The sample provides a complete walkthrough of setting up a \DataStack\, creating and linking \Animal\ and \Person\ entities, and querying the data, serving as a practical reference for the new syntax.
_Playground\iOS.playground · high confidence
Removals
HardcoreData project structure removed
The HardcoreData.xcodeproj project file has been deleted from the repository. This removes the Xcode project configuration, build targets (HardcoreData framework and HardcoreDataTests), and associated file references that previously defined how the library was built and tested.
HardcoreData.xcodeproj · high confidence
Removal of HardcoreData public header
The public header file for the HardcoreData framework has been removed, eliminating the exported version numbers and the directive to import public headers. This change affects how the framework exposes its interface to consumers, likely indicating a shift in how the library is packaged or integrated.
HardcoreData · high confidence
Behavioural changes
Added Xcode schemes for macOS, tvOS, and watchOS platforms
New shared Xcode schemes have been added for the CoreStore macOS, tvOS, and watchOS targets, enabling developers to build, test, launch, profile, and archive these platforms directly from the IDE. The iOS scheme has also been updated to include specific test configurations, such as enabling NSZombieEnabled for debugging memory issues.
CoreStore.xcodeproj/xcshareddata · high confidence
Added Xcode workspace configuration for Carthage support
The project now includes an Xcode workspace with shared settings and source control blueprints to improve Carthage integration. This configuration defines the main repository along with dependencies GCDKit and Nimble, disables Xcode Previews, and suppresses the 32-bit warning to streamline the build environment for users integrating CoreStore via Carthage.
CoreStore.xcworkspace/xcshareddata · high confidence
CoreStore 8.0 introduces throwing data transactions and a new error model
CoreStore 8.0 replaces the previous callback-based transaction API with a modern, throwing interface. Data operations like \fetchOne\, \deleteAll\, and \importObject\ now throw \CoreStoreError\ values directly, allowing developers to use \try\ and \do-catch\ blocks for error handling. The library also introduces \AsynchronousDataTransaction\ for async operations, which includes a \cancel()\ method that throws \CoreStoreError.userCancelled\ to explicitly abort a transaction. This change unifies error reporting across the SDK, replacing older \NSError\ patterns with a strongly-typed, Swift-native error enum.
Sources · high confidence
CoreStore project configuration updated for iOS 16 and macOS 13
The CoreStore Xcode project has been updated to require a minimum deployment target of iOS 16 and macOS 13. This change reflects the underlying codebase's dependency on newer platform features and APIs available in these operating system versions.
CoreStore.xcodeproj · high confidence
Demo app migrated to modern iOS scene lifecycle
The demo application has been updated to use the modern iOS scene-based lifecycle, replacing the previous Objective-C implementation. This change introduces a new Info.plist configuration that defines a SceneDelegate for handling application scenes and supports standard device orientations across iPhone and iPad, alongside a new Rakefile to assist with project file formatting.
Demo · high confidence
Migration to Swift Package Manager workspace structure
The project has migrated its Xcode workspace configuration to the standard Swift Package Manager layout under .swiftpm. This involves relocating the workspace data files from the legacy HardcoreData.xcodeproj directory to .swiftpm/xcode/package.xcworkspace and adding the required IDEWorkspaceChecks.plist file to ensure proper Xcode integration for the package.
.swiftpm · high confidence
Reorganized workspace to include CoreStore and Demo projects
The CoreStore workspace has been updated to explicitly reference the CoreStore.xcodeproj and the Demo/Demo.xcodeproj. This structural change ensures that both the library and its demonstration application are correctly grouped within the same workspace, facilitating easier development and integration workflows for users building against CoreStore.
CoreStore.xcworkspace · high confidence
Workspace restructured to resolve CocoaPods name clash
The Xcode workspace configuration has been updated to support the project rename from CoreStore to HardcoreData, a change made to resolve a name clash with CocoaPods. The workspace now includes source control bindings for both the HardcoreData project and the GCDKit library, and adds the IDEWorkspaceChecks.plist to suppress Xcode's 32-bit warning.
CoreStore.xcodeproj/project.xcworkspace · medium confidence
Test coverage
Added Core Data model for unit testing; Comprehensive unit test suite for CoreStore data operations; Removed legacy test stubs in HardcoreDataTests.
Dependencies
CoreStore 9.3.0 raises minimum platform versions and updates Swift toolchain
CoreStore has been updated to version 9.3.0, requiring Swift 5.9 and raising the minimum deployment targets to iOS 16, macOS 13, tvOS 16, and watchOS 9. This change updates both the CocoaPods podspec and the Swift Package Manager manifest to reflect these stricter platform requirements.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 52 → 40 (-11.8)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 97 → 90 (-7.7)
- Architecture 89 → 87 (-2.5)
- Maturity 63 → 63 (+0.0)
- Readiness 33 → 38 (+4.8)
- Security 55 → 55 (+0.0)
- Domain Modelling 100 → 100 (+0.0)
- Accessibility 25 (new)
- Performance 65 (new)
Resolved (2)
- Documentation: no installation or build instructions (docs/README.md)
- Documentation: no project overview (docs/README.md)
New (64)
- ClassTooLong: CoreStoreSchema (Sources/CoreStoreSchema.swift)
- ClassTooLong: CustomSchemaMappingProvider (Sources/CustomSchemaMappingProvider.swift)
- ClassTooLong: ListMonitor (Sources/ListMonitor.swift)
- CoreStoreObject.cs_snapshotDictionary (cognitive 22) (Sources/CoreStoreObject.swift)
- CoreStoreSchema.fourthPassSynthesizeManagedObjectClasses (cognitive 28) (Sources/CoreStoreSchema.swift)
- CoreStoreSchema.fourthPassSynthesizeManagedObjectClasses (cyclomatic 16) (Sources/CoreStoreSchema.swift)
- CoreStoreSchema.secondPassConnectRelationshipAttributes (cognitive 24) (Sources/CoreStoreSchema.swift)
- Coverage not measured — Swift suite
- CustomSchemaMappingProvider.cs_createMappingModel (cognitive 16) (Sources/CustomSchemaMappingProvider.swift)
- CustomSchemaMappingProvider.resolveEntityMappings (cognitive 19) (Sources/CustomSchemaMappingProvider.swift)
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Duplicated block (10 lines × 4) (Sources/KeyPath+Querying.swift)
- Duplicated block (11 lines × 2) (Sources/CoreStore+CustomDebugStringConvertible.swift)
- Duplicated block (11 lines × 2) (Sources/DataStack+DataSources.swift)
- Duplicated block (11 lines × 2) (Sources/Field.Coded.swift)
- Duplicated block (12 lines × 3) (Demo/Sources/Demos/Modern/ColorsDemo/Modern.ColorsDemo.SwiftUI.DetailView.swift)
- Duplicated block (18 lines × 2) (Demo/Sources/Demos/Classic/ColorsDemo/Classic.ColorsDemo.LIstView.swift)
- Duplicated block (18 lines × 3) (Demo/Sources/Demos/Modern/ColorsDemo/Modern.ColorsDemo.MainView.swift)
- Duplicated block (20 lines × 4) (Sources/KeyPath+Querying.swift)
- Duplicated block (23 lines × 2) (Sources/NSManagedObjectContext+Querying.swift)
- …and 44 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
JohnEstropia/CoreStore was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4cf205a57b57eda24d88571a9aee4023b5c3981b — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.