NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #930 most downloaded on pub.dev
indexed_db dart base interface with implementation for native (browser), file (io) and in memory.
Last release 4 days ago
05 Oct 2026
Ships fairly regularly
a new release about every 2 weeks
Some releases are documented
notes for 30 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
237 releases · first in 2014
sdb: the implementation is pluggable. A backend that is not IndexedDB implements the internal interfaces (SdbDatabaseInterface, SdbTransactionInterfac
SdbDatabaseInterface,
SdbTransactionInterface, SdbTransactionStoreRefInterface,
SdbTransactionIndexRefInterface, SdbOpenStoreRefInterface) and the
default mixins exported by src/sdb/sdb_mixin.dart; the public API, joins,
change listeners, onSnapshot and the schema helpers dispatch through them.
The idb implementation is unchanged.sdbExportDatabaseLines and sdbImportDatabase work with any sdb
factory, same lines format (DateTime and Uint8List exported as @Timestamp
and @Blob).compatMigrate1To2 awaits its row updates.sdbDefineAllTests(SdbTestContext) runs the whole sdb suite on any
SdbFactory.Internal interfaces (database, transaction, store, index, open store) and default mixins exported from src/sdb/sdb_mixin.dart so that a non IndexedDB
One column per quarter.
Internal interfaces (database, transaction, store, index, open store) and
default mixins exported from src/sdb/sdb_mixin.dart so that a non IndexedDB
backend can implement sdb; the public API, joins, change listeners,
onSnapshot and the schema helpers dispatch through them, the idb
implementation is unchanged.
sdbExportDatabaseLines/sdbImportDatabase work with any sdb factory in the
same lines format (DateTime and Uint8List as @timestamp and @Blob), the
toSembastValue/fromSembastValue helpers are exported for implementers,
compatMigrate1To2 awaits its row updates, the transaction stream completes
when the consumer cancels.
idb_test: format test for DateTime and Uint8List values, onSnapshot test on
the generic changes listener.
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
sdb: the version change requests of the other connections (another tab, an iframe, the same page), the IndexedDB versionchange and blocked events, on
versionchange and blocked
events, on SdbOpenDatabaseOptions:
versionChangeAction (SdbVersionChangeAction, close by default):
what the database does on its own when another connection opens it at a
higher version or deletes it: none (stay open, the other waits),
close (the other open completes instead of staying blocked forever,
SdbDatabase.isClosed tells), closeAndReload and
closeAlertAndReload (web: the page reloads on the new version);onVersionChangeRequest: called first, with the current and the
requested version (null on a delete), to save what must be or tell the
user your own way;blockedAction (SdbBlockedAction, alert by default): what the open
does on its own while a connection that keeps the database open at a
lower version (a tab of an older app) blocks it: a "close the other
tabs" alert on the web, or none; onBlocked is called first. The open
completes once that connection closes.VersionChangeEvent.newVersionOrNull (null on a delete); the native
Database.onVersionChange stream delivers synchronously, so a close in the
handler happens inside the browser event; the sembast one is an empty
stream instead of throwing.example/sdb_version_change_exp: two frames of one app opening the
same database at different versions.feat(sdb): versionChangeAction and blockedAction enums, web alert and…
feat(sdb): versionChangeAction and blockedAction enums, web alert and…
versionchange and blocked
events, on SdbOpenDatabaseOptions:
versionChangeAction (SdbVersionChangeAction, close by default):
what the database does on its own when another connection opens it at a
higher version or deletes it: none (stay open, the other waits),
close (the other open completes instead of staying blocked forever,
SdbDatabase.isClosed tells), closeAndReload and
closeAlertAndReload (web: the page reloads on the new version);onVersionChangeRequest: called first, with the current and the
requested version (null on a delete), to save what must be or tell the
user your own way;blockedAction (SdbBlockedAction, alert by default): what the open
does on its own while a connection that keeps the database open at a
lower version (a tab of an older app) blocks it: a "close the other
tabs" alert on the web, or none; onBlocked is called first. The open
completes once that connection closes.VersionChangeEvent.newVersionOrNull (null on a delete); the native
Database.onVersionChange stream delivers synchronously, so a close in the
handler happens inside the browser event; the sembast one is an empty
stream instead of throwing.example/sdb_version_change_exp: two frames of one app opening the
same database at different versions.feat: add join support for SDB, enabling left join functionality betw…
feat: add join support for SDB, enabling left join functionality betw…
LEFT JOIN. On SdbStoreRef and SdbIndexRef:
joinIterate/findJoinRows hand out SdbJoinRow (both sides),joinIterateRecords/findJoinRecords the source records only, one per
source record,joinIterateJoinedRecords/findJoinedRecords the referenced records only
(always inner, so never null),joinCount the number of rows.SdbJoinTarget says what the join key is matched against, a store (on
its primary key) or an index (on its index key), exactly one of the two:
authorStore.asJoinTarget, authorEmailIndex.asJoinTarget.SdbJoinFindOptions (distinct, inner, chunkSize) holds the join
specific options, next to the usual SdbFindOptions on the iterated side;
every join method takes both.idb_sqflite turns it into a single sql LEFT JOIN/INNER JOIN per
chunk, with the key range, inner, offset and limit pushed down), and by
walking a cursor otherwise; both hand out the same rows in the same order.IdbJoinQuerySupport,
implemented by an ObjectStore/Index implementation able to join natively.SdbIndexCursorRow now exposes indexKey and primaryKey.Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01BeSPt2peAnMDW5fVfk2B6F
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01BeSPt2peAnMDW5fVfk2B6F
idb-shim-database and idb-shim-sdb agent skills in skills/, installable with dart run skills@ getsdb: Apply the offset and the limit natively (sql LIMIT/OFFSET) instead of walking a cursor, when the implementation supports it, for findRecords, fin
LIMIT/OFFSET) instead of
walking a cursor, when the implementation supports it, for findRecords,
findRecordKeys, streamRecords, iterate and delete on stores and indexes.
An implementation reading its rows in one go would otherwise read the whole
store on every paged query.iterate was ignoring the offset, the skipped rows were handed to the
handler.IdbPagedQuerySupport, implemented
by an ObjectStore/Index implementation able to page natively.Nothing published for this version
chore: update version to 2.9.7 and adjust changelog
chore: update version to 2.9.7 and adjust changelog
fix: correct count logic in sdb_index and sdb_transaction_store
Nothing published for this version
Nothing published for this version
Nothing published for this version
feat: update idbFactory methods to accept dynamic types for better co…
feat: update idbFactory methods to accept dynamic types for better co…
[idb_shim] v2.9.6+2 feat: add SdbTimestamp type and related exports f…
[idb_shim] v2.9.6+2 feat: add SdbTimestamp type and related exports f…
getDatabaseFullPath() extension method on IdbFactory and SdbFactoryfullPathSdbDatabase.openDatabaseOptionsSdbTimestamp helpers (difference, addDuration, substractDuration)feat: add getDatabaseFullPath() method for improved database path han…
feat: add getDatabaseFullPath() method for improved database path han…
Add fullPath() extension method on IdbFactory and SdbFactory to get the full path of a database.
fullPath() extension method on IdbFactory and SdbFactory to get the full
path of a database.pathContext method to IdbFactory and extension method to SdbFactoryNothing published for this version
Nothing published for this version
Add sandbox() extension method on IdbFactory and SdbFactory to create a factory where every database is located below a given path.
sandbox() extension method on IdbFactory and SdbFactory to create
a factory where every database is located below a given path.Nothing published for this version
Add onCount for stores and indexes
onCount for stores and indexessdb: Add iterate on Store and Cursor.
iterate on Store and Cursor.Nothing published for this version
Nothing published for this version
sdb: Allow raw data and codec support
Nothing published for this version
sdb: Add support for SdbTimestamp in index
SdbTimestamp in indexNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
sdb: Add onSnapshot and onSnapshots support for stores, records, and indexes.
onSnapshot and onSnapshots support for stores, records, and indexes.sdb: deprecate params version, schema, onVersionChanged on SdbFactory.openDatabase and prefer open options
schema and onVersionChange in open optionsversion, schema, onVersionChanged on SdbFactory.openDatabase and prefer open optionsonVersionChange transaction, allowing manipulating data during openNothing published for this version
Nothing published for this version
Add built-in SdbTimestamp and SdbBlob to Sdb database
SdbTimestamp and SdbBlob to Sdb databaseNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add onChange listener to SdbDatabase
SdbFactory.openDatabaseOnDowngradeDelete to support schema.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Import jdb support (from sembast_web)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Supports Sdb schema and improve sdb api
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →