Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. iOS
  3. Skopelos

Skopelos

MITSwift2.4.0

A minimalistic, thread-safe, non-boilerplate Swift library for Core Data, inspired by Active Record.

Visit WebsiteGitHubGitHub
239 stars18 forks0 contributors

What is Skopelos?

Skopelos is a Swift library that provides a minimalistic, thread-safe wrapper around Core Data, inspired by the Active Record pattern. It simplifies data persistence in iOS/macOS apps by reducing boilerplate code and ensuring safe concurrent access to managed object contexts. The library implements a CQRS approach with clear separation of read and write operations.

Target Audience

iOS and macOS developers working with Core Data who want a safer, simpler alternative to raw Core Data or libraries like MagicalRecord, especially those building apps with complex data models and concurrency requirements.

Value Proposition

Developers choose Skopelos for its thread-safe design, reduced boilerplate, and explicit context management, which prevent common Core Data pitfalls. It offers a clean API with CQRS separation, automatic state handling, and no singleton dependency, making it testable and easy to integrate via dependency injection.

Overview

A minimalistic, thread safe, non-boilerplate and super easy to use version of Active Record on Core Data. Simply all you need for doing Core Data. Swift flavour.

Use Cases

Best For

  • Simplifying Core Data usage in Swift projects with minimal boilerplate
  • Ensuring thread-safe data access in multi-threaded iOS applications
  • Implementing a CQRS pattern for clear separation of read and write operations
  • Managing Core Data stacks with automatic state saving on app backgrounding
  • Reducing concurrency bugs in Core Data with explicit context handling
  • Building apps that require safe, sequential chaining of data operations

Not Ideal For

  • Projects heavily using Swift's modern concurrency (async/await) due to reliance on completion handlers
  • Teams wanting database-agnostic persistence, as Skopelos is exclusively tied to Core Data
  • Apps with simple data storage needs where UserDefaults or lighter solutions would suffice, avoiding Core Data overhead
  • Developers who prefer full, low-level control over their Core Data stack without any enforced hierarchy

Pros & Cons

Pros

Thread-Safe Guarantee

All data access is inherently thread-safe, preventing common Core Data concurrency bugs by enforcing context-per-thread patterns, as emphasized with the -com.apple.CoreData.ConcurrencyDebug flag recommendation.

CQRS Pattern Clarity

Implements Command and Query Responsibility Segregation with separate read() and writeSync()/writeAsync() methods, making data operations explicit and reducing errors, as shown in the clean API design.

Automatic State Management

Includes an AppStateReactor that silently saves in-flight changes when the app backgrounds or terminates, ensuring data persistence without manual intervention, as described in the README.

Minimal Boilerplate

Provides CRUD helper methods like SK_create and SK_all that simplify entity operations within safe read/write blocks, drastically reducing repetitive Core Data code, as demonstrated in the usage examples.

Cons

Core Data Lock-In

Skopelos is exclusively designed for Core Data, offering no flexibility for teams using or considering alternative databases like Realm or direct SQLite, which limits its applicability.

Limited Modern Concurrency

The library relies on traditional completion blocks for async operations, lacking native integration with Swift's async/await, making code less elegant in modern Swift projects compared to newer libraries.

Enforced Context Hierarchy

It imposes a specific managed object context stack with the main context as the single source of truth, which might not align with all architectural preferences or complex migration scenarios, reducing flexibility.

Open Source Alternative To

Skopelos is an open-source alternative to the following products:

M
MagicalRecord

MagicalRecord is a Core Data wrapper library for Objective-C and Swift that simplifies data persistence operations in iOS/macOS apps.

Frequently Asked Questions

Quick Stats

Stars239
Forks18
Contributors0
Open Issues1
Last commit4 years ago
CreatedSince 2016

Tags

#ios#data-persistence#cqrs#dependency-injection#coredata#thread-safe#sqlite#swift#core-data#active-record-pattern#persistence

Built With

S
SQLite
C
Core Data
S
Swift

Links & Resources

Website

Included in

iOS51.7kSwift26.0k
Auto-fetched 16 hours ago

Related Projects

MagicalRecordMagicalRecord

Super Awesome Easy Fetching for Core Data!

Stars10,705
Forks1,765
Last commit5 years ago
CoreStoreCoreStore

Unleashing the real power of Core Data with the elegance and safety of Swift

Stars4,052
Forks259
Last commit19 hours ago
MogeneratorMogenerator

Core Data code generation

Stars3,019
Forks385
Last commit1 year ago
SyncSync

JSON to SwiftData and back. SwiftData Sync.

Stars2,540
Forks259
Last commit27 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub