Skip to content
CAI
Software that uses CAICheck a score

JohnEstropia/CoreStore

39.9

Weak · 30 September 2026

40.8k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.