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.
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.
Local-first by construction
Durable storage lives inside the app sandbox, with actor-isolated access and type-safe Structured Queries.
Explore the engine Reactive UICDC-backed live queries
@LiveQuery and @LiveQueryOne update SwiftUI from database changes without a manual refresh pipeline.
CloudKit without a backend
Keep the local database authoritative while optionally synchronizing private user data through CKSyncEngine.
Search, vectors, views, encryption
Opt into Tantivy FTS, dense and sparse vectors, incremental materialized views, and AEGIS encryption.
See Turso capabilitiesA 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
Define the model. Query it reactively.
Schema macros, structured queries, and property wrappers keep database code legible without hiding the underlying persistence model.
Native ergonomics without a low ceiling.
Apple-platform shaped
Swift concurrency, SwiftUI observation, CloudKit, and app-sandbox storage are first-class constraints.
SQLite-compatible foundation
Begin with familiar local persistence and selectively adopt advanced engine features as the product grows.
No backend requirement
The application remains useful offline before synchronization or remote infrastructure is introduced.
Build the first reactive model in minutes.
Add the package, define a table, open the database, and connect the result to SwiftUI.

