NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
An Eloquent-inspired ORM for Flutter. Supports SQLite, PostgreSQL and PowerSync with fluent queries, relationships, soft deletes, timestamps, casts and more.
Last release 7 months ago
12 Feb 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 20 of 20 stable releases
Nothing withdrawn
no release was ever pulled
9 months old
20 releases · first in 2025
One column per month.
Schema: Added support for table alterations (Schema.table(...)) and column modifications via the new Blueprint and Grammar updates.
Schema.table(...)) and column modifications via the new Blueprint and Grammar updates.change() method to ColumnDefinition for modifying existing columns.SQLiteGrammar and PostgresGrammar to generate DDL for schema changes (ADD COLUMN, ALTER COLUMN, DROP COLUMN).bavard_migration package.dart run bavard CLI tool for scaffolding models and pivots without code generation.
make:model: Generates a Model class with schema, accessors, and casts.make:pivot: Generates a Pivot class with accessors and columns list.Core: Added stackTrace support to BavardException and all its subclasses. This ensures that when database errors or transaction failures are caught an
stackTrace support to BavardException and all its subclasses. This ensures that when database errors or transaction failures are caught and rethrown, the original stack trace is preserved for easier debugging.formatBoolForDebug() to Grammar to support dialect-specific boolean formatting (e.g., TRUE/FALSE for Postgres vs 1/0 for SQLite) in debug SQL output.MockDatabaseSpy constructor to accept an optional Grammar, enabling better testing of dialect-specific behaviors in unit tests.SharedPartBuilder for code generation.Pivot constructor pattern to UserRole([Map<String, dynamic> attributes = const {}]) : super(Map.from(attributes)). This ensures better isolation of pivot data and supports parameterless instantiation.stackTrace property and how to use it for debugging.HasSoftDeletes and relationships (BelongsTo, HasMany, etc.) by fully qualifying column names with their table aliases (e.g. users.deleted_at instead of deleted_at). This prevents "ambiguous column name" errors in complex queries involving joins.QueryBuilder.toSql() and toRawSql() to correctly apply global scopes (like soft deletes) before compiling the SQL.QueryBuilder.toRawSql() where placeholder replacement (?) was incorrectly applied to points of domanda inside string literals. It now uses a safer parser that respects string boundaries.Core: Added insertAll() method to QueryBuilder for high-performance bulk record insertion. It generates a single SQL query (VALUES (...), (...)) and b
insertAll() method to QueryBuilder for high-performance bulk record insertion. It generates a single SQL query (VALUES (...), (...)) and bypasses model events for efficiency.cursor({int batchSize}) method to QueryBuilder for lazy streaming of large datasets using offset-based pagination. This allows iterating over thousands of records without loading them all into memory at once.union(), unionAll(), intersect(), and except(). These methods allow combining results from multiple queries with automatic binding aggregation and proper SQL generation.withRelations now accepts a Map<String, ScopeCallback> where the value is a callback to apply constraints (e.g. where) to the eager loading query.Reference: Updated "Database Adapters" guide to reflect the new simplified DatabaseAdapter interface and explained that watch logic is now handled by
DatabaseAdapter interface and explained that watch logic is now handled by the core.Core: Implemented database-agnostic watch() functionality. The logic for tracking table changes and notifying listeners has been moved from individual
watch() functionality. The logic for tracking table changes and notifying listeners has been moved from individual adapters to the central DatabaseManager.DatabaseManager now handles notification buffering during transactions. Table changes are only emitted to watch streams after a transaction is successfully committed, preventing dirty reads.DatabaseAdapter interface by removing watch-specific methods, making it easier to implement new database drivers.watch behavior within transactions (commit/rollback scenarios) in transaction_test.dart and watch_test.dart.Core: Support for Custom Attribute Casts via the AttributeCast interface.
AttributeCast<T, R> interface.updated_at is now only updated if the model has other dirty attributes, preventing redundant queries.IdColumn, CreatedAtColumn, etc.) now have default names, enabling zero-config automatic casting.example/shared_test_suite.make test-all to the Makefile for a full one-shot test execution (Unit + SQLite + Postgres).PostgresAdapter to handle binary data (Blobs) using TypedValue and fixed SQL placeholder interpolation.HasTimestamps to use the internal casting system instead of raw attribute access.Core: Refactored HasCasts to automatically derive casting rules from the columns list (Schema), eliminating the need for a manual casts map in most ca
HasCasts to automatically derive casting rules from the columns list (Schema), eliminating the need for a manual casts map in most cases.integer, boolean, doubleType) and Dart runtime types (int, bool, double).Core: Added distinct() method to QueryBuilder to support SELECT DISTINCT queries.
distinct() method to QueryBuilder to support SELECT DISTINCT queries.HasSoftDeletes mixin to correctly handle deletedAt type compatibility (getter DateTime?, setter DateTime?) and corrected internal key typo (delete_at -> deleted_at).Core: Fixed type created_at, updated_at
Core: Fixed type created_at, updated_at and cancel_at
Schema: Added IdColumn, CreatedAtColumn, UpdatedAtColumn, and DeletedAtColumn to enable fully type-safe queries on standard fields.
IdColumn, CreatedAtColumn, UpdatedAtColumn, and DeletedAtColumn to enable fully type-safe queries on standard fields.createdAt, updatedAt, deletedAt) directly to HasTimestamps and HasSoftDeletes mixins.User.schema.id) now automatically resolve to the model's actual configuration (e.g. primaryKey) at runtime.@fillable generator now intelligently ignores standard columns if the corresponding mixins are present, preventing code duplication and conflicts.Column hierarchy to support polymorphic column lists via SchemaColumn interface, fixing type variance issues in many-to-many pivots.build_runner).Relations: Added attach() and detach() methods to BelongsToMany for easy management of many-to-many relationships.
attach() and detach() methods to BelongsToMany for easy management of many-to-many relationships.example/postgresql-docker.Column objects as keys in insert and update methods.BelongsToMany attach/detach operations.QueryBuilder.avg() to robustly handle numeric string results, improving compatibility with PostgreSQL numeric types.sqlite-docker and postgresql-docker examples to eliminate raw SQL queries in favor of ORM-native methods.Dependencies: Update dependencies
Dependencies: Update dependencies
Dependencies: Update dependencies
Dependencies: Update dependencies
Dependencies: Update dependencies
Core: Enhanced QueryBuilder with comprehensive support for Column objects across all methods (select, where, groupBy, orderBy, count, sum, etc.), enab
QueryBuilder with comprehensive support for Column objects across all methods (select, where, groupBy, orderBy, count, sum, etc.), enabling fully type-safe queries."users"."id") when using Column objects to prevent column ambiguity during joins.whereColumn and orWhereColumn methods for comparing two columns.whereBetween, orWhereBetween, whereNotBetween, and orWhereNotBetween methods.Column objects in BelongsToMany pivot filters (wherePivot, withPivot, etc.) with automatic pivot table prefixing.WhereCondition) to QueryBuilder methods.### Changed - Documentation: Update doc.
### Changed - Documentation: Update doc. - Examples: Change locations.
Your coding agent can read these notes before it upgrades. Set up the MCP server →