// the find
stephencelis/SQLite.swift
A type-safe, Swift-language layer over SQLite3.
SQLite.swift is a Swift wrapper over SQLite3 that gives you a type-safe query builder instead of raw SQL strings. You define tables and columns as typed Swift values, and the compiler catches type mismatches at build time. It's for iOS/macOS developers who want SQLite without an ORM and without stringly-typed queries.
The expression builder is genuinely good — `users.filter(id == rowid)` compiles to correct parameterized SQL and won't let you compare an Int column to a String. SQLCipher support via SPM is a nice addition for apps that need encrypted databases. FTS4/FTS5 and RTree extensions are supported, which most lightweight wrappers skip. The schema migration API (`SchemaChanger`) handles common ALTER TABLE operations that SQLite itself makes awkward.
GRDB has lapped this project on async/await support and Swift concurrency — SQLite.swift's connection model is synchronous by default and porting to async requires manual dispatch queue management. The typed query layer doesn't support complex joins well; anything beyond a simple two-table join becomes an exercise in raw SQL strings, which defeats half the point. Version is still 0.x after 10+ years, which is honest about API stability but also means breaking changes can land without a major bump. The `Expression` namespace conflict with SwiftUI (requiring `SQLite.Expression` everywhere) is a papercut that should have been fixed years ago.