finds.dev← search

// the find

stephencelis/SQLite.swift

★ 10,185 · Swift · MIT · updated Jun 2026

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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →