Drift

B
B tier on Mobile DatabasesScore 7.0 · #13 of 27
Android app
Yes
Free plan
No
Runs on
Android, Browser extension, iOS, Linux, Mac, Web, Windows
drift.simonbinder.eu
The Drift homepage

Summary

Drift is a reactive persistence library for relational data in Dart and Flutter applications. It maps database rows to selected objects and provides type-safe queries; watched queries can update as streams when the underlying data changes. Its SQL parser and analyzer can validate queries at compile time and generate Dart row code, using drift_dev and build_runner for code generation. Drift supports SQLite and offers packages for PostgreSQL and libSQL connections, including local-copy synchronization with libSQL. Developers can use migration utilities, but must write migrations when changing schemas used by existing apps. Encrypted databases are possible with SQLite3MultipleCiphers and a NativeDatabase executor, provided the app sets an encryption key. Documented implementations cover Android, iOS, Windows, Linux, macOS, and web. Some APIs, including date-time modification APIs, are SQLite-only with PostgreSQL. Full web support may require COOP/COEP security headers, and Chrome on Android can have cross-tab persistence issues without them. The documentation includes a DevTools extension page, and questions or feedback can go to GitHub discussions.

Who it is for

Drift is for developers building Dart or Flutter apps that need relational data persistence. It may suit teams that want reactive queries and type-safe access to database rows.

What is good

  • Type-safe queries map rows to chosen objects.
  • Watched queries update as streams.
  • Supports SQLite, PostgreSQL, and libSQL connections.
  • Documented implementations cover mobile, desktop, and web.

What to know first

  • Developers must write migrations for schema changes.
  • Some PostgreSQL APIs are SQLite-only.
  • Full web support may require security headers.

Everything Xiaomi review

Drift: the full review

Drift offers reactive, type-safe relational persistence across documented mobile, desktop, and web implementations. Developers should account for migration work and the stated PostgreSQL and web limitations.

Overview

Drift brings relational database work into Dart and Flutter projects with typed access to stored data. It is a strong fit for developers who want reactive queries without giving up SQL; teams should be ready to manage schema changes themselves.

Rows map to developer-chosen objects, and queries can be watched as streams that update when underlying data changes. That makes Drift useful when application logic or a UI needs to react to database updates rather than fetch results only on demand.

Its SQL parser and analyzer can validate queries at compile time and generate Dart row code. That is a meaningful safeguard for SQL-heavy projects, though the compile-time tooling comes with a code-generation setup using drift_dev and build_runner.

Key features

Relational data with reactive access

Type-safe queries and mapped rows give Dart code a structured way to work with relational data. Watched queries emit updated results when the database changes, a practical advantage for apps that need stored state and active views to stay in sync.

SQL and database choices

Drift supports SQLite and has packages for PostgreSQL and libSQL connections. Its documentation also covers remote libSQL and Turso, including local-copy synchronization with libSQL. Most queries work with PostgreSQL without modification, but some APIs, including date-time modification APIs, are SQLite-only. Projects that rely on those APIs should account for that backend difference.

Migrations and encryption

Migration utilities help with schema evolution, but developers must write migrations when changing a schema used by existing apps. That gives teams a path for managing upgrades, not an automatic way around migration work. For encrypted databases, Drift can use SQLite3MultipleCiphers with a NativeDatabase executor; the app must set an encryption key.

Offline and synchronization

Drift supports offline mode and bidirectional data synchronization. Those capabilities suit applications that must work with local data and synchronize in both directions, while the particular backend still matters: local-copy synchronization is documented for libSQL.

Pricing

Drift is free, with a free plan. No paid tier is part of its stated pricing model, so there is no plan-based seat allowance, usage quota, trial period, or renewal term to weigh. The trade-off is not a tier limitation but the engineering work of setting up code generation and writing migrations for existing schemas.

Platforms

Drift's documented implementations support Android, iOS, Windows, Linux, macOS, and web. On the web, some browsers need COOP/COEP security headers for full support. Chrome on Android can have cross-tab persistence issues without those headers, so web deployments need to account for their hosting configuration and browser behavior.

The project also has a Drift DevTools extension page. For questions or feedback, the setup guide points developers to GitHub discussions.

Who it's for

Drift is aimed at developers building Dart and Flutter applications that need relational persistence. It is especially well suited to projects that benefit from typed data access, compile-time SQL checks, and query streams, and that can own their schema migration process.

It is a less natural fit when a project depends on PostgreSQL-only feature parity or needs web persistence to work without browser and hosting considerations. Those constraints do not rule Drift out, but they make backend and deployment choices part of the decision.

Pros and cons

  • Pro: Type-safe queries, row mapping, and generated Dart row code give relational data a structured place in Dart applications.
  • Pro: Watched queries update as underlying data changes, supporting reactive application logic.
  • Pro: SQLite, PostgreSQL, and libSQL integrations offer multiple relational backend paths, with offline use and bidirectional synchronization supported.
  • Con: Existing database schemas require developer-written migrations, adding ongoing upgrade work.
  • Con: Some APIs are SQLite-only, and web deployments can require COOP/COEP headers to avoid support and cross-tab persistence issues.
  • Con: Compile-time generation requires setting up drift_dev and build_runner.

Alternatives

For a broader comparison, see Mobile Databases.

Espresso is a free Android UI-testing option for projects targeting Android 4.0.1/API 14 or later; choose it when testing an Android app interface is the need rather than relational persistence.

Hive offers a free forever plan with 1,000 AI credits per month, 200MB storage, up to 10 workspace members, and unlimited tasks. Pick it when those workspace-oriented allowances fit better than Drift's Dart and Flutter relational approach.

RxDB has a free plan with replication and realtime sync, default storages, and up to 13 open collections. It may suit a project prioritizing that replication-and-storage combination over Drift's relational, SQL-oriented model.

Ditto offers a free plan with 10 cloud device connections, 2GB storage, 5GB data transfer, no SLA, and limited support; consider it when those cloud connection limits match the project.

ObjectBox has a no-cost core database plan; consider it as an alternative if a no-cost core database is the priority.

Firebase Cloud Messaging is a no-cost messaging service, not a direct substitute for relational persistence.

Firestore has stated free-tier allowances of 50,000 document reads and 20,000 document writes per day. Choose it when those document-database quotas are a better fit than Drift's relational approach.

TBase is another free database option to consider.

Verdict

Choose Drift for a Dart or Flutter app that needs typed relational access, reactive query results, and offline or bidirectional synchronization without a software fee. Its strongest reason to choose it is the combination of SQL analysis and streams within a Dart-oriented persistence library. Look elsewhere if PostgreSQL API coverage or web persistence without extra deployment considerations is essential, or if the team cannot take on schema migrations.

Compared on mobile databases

Free plan
Yesdrift.simonbinder.eu
Offline mode
Yesdrift.simonbinder.eu
Data synchronization
bidirectionaldrift.simonbinder.eu
Mobile platforms
Android, iOSdrift.simonbinder.eu
SDK languages
Dart, Flutterdrift.simonbinder.eu

Facts

What it is
Drift is a reactive persistence library for relational data in Dart and Flutter apps.drift.simonbinder.eu · 29 Sept 2026
Type safety
Drift maps database rows to chosen objects and provides type-safe queries.drift.simonbinder.eu · 29 Sept 2026
Reactive queries
Queries can be watched as streams that update when underlying data changes.drift.simonbinder.eu · 29 Sept 2026
SQL support
Drift includes an SQL parser and analyzer that can validate queries at compile time and generate Dart row code.drift.simonbinder.eu · 29 Sept 2026
Migrations
Drift provides migration utilities, but developers need to write migrations when changing an existing database schema.drift.simonbinder.eu · 29 Sept 2026
Platforms
Drift supports Android, iOS, Windows, Linux, macOS, and web through platform-specific database implementations.drift.simonbinder.eu · 29 Sept 2026
Backends
The setup guide documents SQLite and PostgreSQL dependencies, and the documentation also covers remote libSQL and Turso.drift.simonbinder.eu · 29 Sept 2026
Encryption
Drift can use encrypted databases through SQLite3MultipleCiphers with a NativeDatabase executor, and the app must set an encryption key.drift.simonbinder.eu · 29 Sept 2026
Dev tooling
The setup uses drift_dev and build_runner to generate code at compile time.drift.simonbinder.eu · 29 Sept 2026
Developer tools
The docs provide a Drift DevTools extension page.drift.simonbinder.eu · 29 Sept 2026
Support
The setup guide directs users with questions or feedback to the project's GitHub discussions.drift.simonbinder.eu · 29 Sept 2026
Intended users
Drift is presented for developers building Dart and Flutter applications that need relational persistence.drift.simonbinder.eu · 29 Sept 2026
What it does
Drift is a reactive persistence library for relational data in Dart and Flutter applications.drift.simonbinder.eu · 30 Sept 2026
Schema changes
Drift provides migration tools, but developers need to write migrations when changing a database schema used by existing apps.drift.simonbinder.eu · 30 Sept 2026
Supported platforms
The documented implementations support Android, iOS, Windows, Linux, macOS, and web.drift.simonbinder.eu · 30 Sept 2026
Database integrations
Drift supports SQLite and has packages for PostgreSQL and libSQL connections, including local-copy synchronization with libSQL.drift.simonbinder.eu · 30 Sept 2026
PostgreSQL limit
Some APIs, including date-time modification APIs, are only supported with SQLite; most queries work with PostgreSQL without modification.drift.simonbinder.eu · 30 Sept 2026
Web browser requirements
Some browsers need COOP/COEP security headers for full web support, and Chrome on Android can have cross-tab persistence issues without the required headers.drift.simonbinder.eu · 30 Sept 2026

Best Drift alternatives

See all 20

Where it ranks on Everything Xiaomi

Is Drift yours?

Claim it for free: prove the domain, then correct facts, plans and screenshots. An editor reviews every change.

Sources