This reference documents the core types and classes used in Flutter InstantDB.
Core Classes
InstantDB
Main database class providing all database operations.
class InstantDB {
String get appId;
InstantConfig get config;
AuthManager get auth;
PresenceManager get presence;
TransactionBuilder get tx;
// Reactive signals
Signal<bool> get isReady;
Signal<bool> get isOnline;
// Initialization
static Future<InstantDB> init({
required String appId,
InstantConfig? config,
InstantSchema? schema,
});
// Query methods
Signal<QueryResult> query(Map<String, dynamic> query, {bool syncedOnly = false});
Future<QueryResult> queryOnce(Map<String, dynamic> query, {bool syncedOnly = false});
// Transaction methods
Future<TransactionResult> transact(dynamic transaction);
// Auth methods
Stream<AuthUser?> subscribeAuth();
// Utilities
String id();
}InstantConfig
Configuration options for database initialization.
class InstantConfig {
const InstantConfig({
this.persistenceDir,
this.syncEnabled = true,
this.baseUrl = 'https://api.instantdb.com',
this.maxCacheSize = 50 * 1024 * 1024,
this.reconnectDelay = const Duration(seconds: 1),
this.verboseLogging = false,
});
final String? persistenceDir;
final bool syncEnabled;
final String baseUrl;
final int maxCacheSize;
final Duration reconnectDelay;
final bool verboseLogging;
}QueryResult
Result returned by query operations.
class QueryResult {
final Map<String, dynamic>? data;
final String? error;
final bool isLoading;
bool get hasData => data != null;
bool get hasError => error != null;
}AuthUser
Represents an authenticated user.
class AuthUser {
final String id;
final String email;
final DateTime createdAt;
final Map<String, dynamic>? metadata;
}TransactionResult
Result returned by transaction operations.
class TransactionResult {
final bool success;
final String? error;
final Map<String, dynamic>? data;
}Presence Types
PresenceData
Represents a user’s presence state in a room.
class PresenceData {
final String userId;
final Map<String, dynamic> data;
final DateTime lastSeen;
}CursorData
Represents cursor position and metadata.
class CursorData {
final String userId;
final String? userName;
final String? userColor;
final double x;
final double y;
final Map<String, dynamic>? metadata;
final DateTime lastUpdated;
}ReactionData
Represents a reaction sent to a room.
class ReactionData {
final String id;
final String userId;
final String roomId;
final String emoji;
final Map<String, dynamic>? metadata;
final DateTime timestamp;
}Transaction Internals
Operation
Represents a single database mutation.
class Operation {
final OperationType type;
final String entityType;
final String entityId;
final Map<String, dynamic>? data;
}
enum OperationType {
add,
update,
delete,
merge,
link,
unlink,
retract
}LookupRef
Reference used to look up entities by an attribute other than id.
class LookupRef {
final String entityType;
final String attribute;
final dynamic value;
}TransactionChunk
A wrapper for a list of operations, often generated by the fluent tx API.
class TransactionChunk {
final List<Operation> operations;
}