Skip to main content
Swift 6 · iOS · macOS

The local-first database built for Swift apps.

BoutiqueDB combines SQLite-compatible local persistence, CDC-backed LiveQuery, CloudKit synchronization, and Turso engine capabilities in one native Swift package.

Local-firstSQLite-compatibleReactive SwiftUIOptional CloudKit
Turso engineSQLite · FTS · vectors · encryption
BoutiqueDB actorQueries · migrations · transactions
BoutiqueDB
BoutiqueDBNative persistence for Apple platforms
LiveQuery
CloudKit
Swift
One native data layer

Start simple. Keep the ceiling high.

BoutiqueDB handles the local database path first, then lets the app adopt reactive observation, private synchronization, search, vectors, and encryption only when they are useful.

Designed as a system

A predictable path from SwiftUI to durable data.

The public API stays Swift-native. BoutiqueDB owns isolation and observation, the Turso engine owns storage, and CloudKit remains an optional synchronization layer.

Read the architecture guide
SwiftUIViews and app state
→
LiveQueryCDC observation
BoutiqueDB actorQueries · migrations · transactions · isolation
Turso engineLocal durable storage
CloudKitOptional private sync
Swift-native API

Define the model. Query it reactively.

Schema macros, structured queries, and property wrappers keep database code legible without hiding the underlying persistence model.

Type-safe query construction Local operation without a service Reactive SwiftUI observation
NotesView.swiftSwift
Why BoutiqueDB

Native ergonomics without a low ceiling.

01

Apple-platform shaped

Swift concurrency, SwiftUI observation, CloudKit, and app-sandbox storage are first-class constraints.

02

SQLite-compatible foundation

Begin with familiar local persistence and selectively adopt advanced engine features as the product grows.

03

No backend requirement

The application remains useful offline before synchronization or remote infrastructure is introduced.

Compare persistence options
Start with the local database

Build the first reactive model in minutes.

Add the package, define a table, open the database, and connect the result to SwiftUI.