The real-time database for Flutter
A Flutter/Dart port of InstantDB. Offline-first SQLite, instant sync across clients, reactive widgets, and a fully type-safe query & transaction layer generated from your models.
$ flutter pub add flutter_instantdb
// Reactive, typed query — rebuilds on change
final todos = await TodoTable()
.query()
.where((t) => t.done.eq(false))
.order((t) => t.createdAt.desc())
.getAll(db);
// Typed write — wrong types won't compile
await db.transact(
TodoTable().tx(db).createModel(
Todo(id: db.id(), title: 'Ship it', done: false),
),
);One codebase · every platform
Everything you need to build collaborative apps
The local-first developer experience of InstantDB, native to Flutter.
Real-time sync
Changes propagate instantly to every connected client with reliable conflict resolution.
Offline-first
Local SQLite storage. Your app works offline and syncs the moment connectivity returns.
Reactive UI
Widgets rebuild automatically when data changes — powered by Signals, no manual state.
Type-safe
A typed query + transaction DSL catches wrong fields and value types at compile time.
Code generation
Annotate a model with @InstantModel and generate typed tables, relations and writes.
Presence
Cursors, typing indicators, reactions and avatars for live multiplayer collaboration.
Your models, end to end type-safe
Declare a model, run the generator, and get typed tables, relation accessors, reactive queries and transactions. Relations, cursor pagination and whole-model writes — all checked by the compiler.
- Typed query DSL with where / order / pagination
- Code generation from @InstantModel classes
- @InstantLink relations with typed .include(...)
- Typed transactions: create / update / merge / link
@InstantModel('todos')
class Todo {
final String id;
final String title;
final bool done;
@InstantLink()
final List<Tag> tags;
}
// generated → TodoTable, getAll, tx, include…Ship a synced app this afternoon
Go from an empty project to a real-time, offline-first, reactive todo list in minutes.