NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4567 most downloaded on pub.dev
Extremely fast, easy to use, and fully async NoSQL database for Flutter.
Last release 3 years ago
no release in 18 months
Release timing varies
gaps range from 8 days to 5 months
Nearly every release is documented
notes for 21 of 23 stable releases
8 versions withdrawn
withdrawn after publishing
6 years old
59 releases · first in 2020
One column per quarter.
Fix dynamic , List<dynamic> and Map<String, dynamic>
Fix dynamic, List<dynamic> and Map<String, dynamic>
⚠️ ISAR V4 IS NOT READY FOR PRODUCTION USE ⚠️
This version does not support database migration yet and cannot open Isar v3 databases. The stable version will be released in a few weeks and will support migration from v3.
Changed transactions API:
| old | new |
|---|---|
writeTxn() |
writeAsync() |
writeTxnSync() |
write() |
txn() |
readAsync() |
txnSync() |
read() |
Async methods for asynchronous operations.id or annotated with @idnullable. There is a new collection.autoIncrement() function to automatically generate ids.@enumerated instead there is a new @enumValue annotation to specify the value property of an enumcollection.update() and query.updateAll()dynamic, List<dynamic> and Map<String, dynamic> properties@utc annotation to receive DateTime objects in UTCNothing published for this version
Enabled encryption for Linux and Windows
number of isolates using Isar in parallel are unlimited now
Significantly improved get() and getAll() performance
Significantly improved get() and getAll() performance
Various fixes with Isar.openAsync()
Various fixes with Isar.openAsync()
consistent offset and limit parameters for query methods
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
Sorry for this breaking change. Unfortunately, it was necessary to fix stability issues on Android.
Sorry for this breaking change. Unfortunately, it was necessary to fix stability issues on Android.
directory is now required for Isar.open() and Isar.openSync()Fixed error building MacOS library
Nothing published for this version
Improved performance for all operations
maxSizeMiB option to Isar.open() to specify the maximum size of the database fileREDACTED.
REDACTED.
REDACTED.
REDACTED.
The Inspector now supports creating objects and importing JSON
importJsonRaw()exportJsonSync() and exportJsonRawSync()Support for arm64 iOS Simulators
.anyOf(), .allOf(), and .oneOf() could not be negatedThis release has been a lot of work! Thanks to everyone who contributed and joined the countless discussions. You are really awesome!
This release has been a lot of work! Thanks to everyone who contributed and joined the countless discussions. You are really awesome!
Special thanks to @Jtplouffe and @Peyman for their incredible work.
This version does not support the web target yet. It will be back in the next version. Please continue using 2.5.0 if you need web support.
@embedded@enumeratedid, byte, short and float typedefsIsarLinks now support all Set methods based on the Isar Id of objectsdownload option to Isar.initializeIsarCore() to download binaries automaticallyreplace option for indexescollection.getSize() and collection.getSizeSync()query.anyOf() and query.allOf() query modifiers.oneOf() query modifierdefault and stored in dir/name.isar and dir/name.isar.lockIsarLink and IsarLinks will load automatically.putSync(), .putAllSync() etc. will now save links recursively by defaultisar.getSize() and isar.getSizeSync()linksLengthEqualTo(), linksIsEmpty(), linksIsNotEmpty(), linksLengthGreaterThan(), linksLengthLessThan(), linksLengthBetween() and linkIsNull() filterslistLengthEqualTo(), listIsEmpty(), listIsNotEmpty(), listLengthGreaterThan(), listLengthLessThan(), listLengthBetween() filtersisNotNull() filterscompactOnLaunch conditions to Isar.open() for automatic database compactionisar.copyToFile() which copies a compacted version of the database to a pathisar.verify() and col.verify() methods for checking database integrity in unit testsepsilon parameterTypeConverter support in favor of @embedded and @enumerated@Id() and @Size32() annotations in favor of the Id and short typesschemas parameter from named to positionalreplaceOnConflict and saveLinks parameter from collection.put() and collection.putAll()isar parameter from Isar.txn(), Isar.writeTxn(), Isar.txnSync() and Isar.writeTxnSync()query.repeat()query.sortById() and query.distinctById().or() instead of .and() being used implicitly when combining filters.yourListAnyEqualTo() to .yourListElementEqualTo() to avoid confusionLists to IndexType.hashisar.getCollection() to isar.collection()initialReturn parameter to fireImmediatelyIsar.initializeLibraries() to Isar.initializeIsarCore()There are too many fixes to list them all.
null handling in json exportNothing 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
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
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Support for Android x86 (32 bit emulator) and macOS arm64 (Apple Silicon)
col.clear() now resets the auto increment counter to 0initializeLibraries(Map<String, String> libraries) to initializeLibraries(Map<IsarAbi, String> libraries)2.16.0IsarLink.saveSync()id queriesBroadcastChannel in FirefoxSupport for filtering and sorting links
isLoaded property to linksisar.getCollection() no longer requires the name of the collectionIsar.instanceNames now returns a Set instead of a ListBroadcastChannel API for older Safari versionsReduced Isar web code size by 50%
directory parameter of Isar.open() optional for webname parameter of Isar.getInstance() optionalIsar.defaultName constantTypeConverters with supertypesTypeConverter nullability doesn't matchFilterGroup.not constructor (thanks for the PR @jtzell)Nothing published for this version
Isar now has full web support 🎉. No changes to your code required, just run it.
Isar now has full web support 🎉. No changes to your code required, just run it.
Web passes all unit tests but is still considered beta for now.
saveLinks parameter to .put() and .putAll() which defaults to falseoverrideChanges parameter of links.load() to true to avoid unintended behaviordeleteFromDisk option to isar.close().reset() and .resetSync() methods to IsarLink and IsarLinkslinks.save() performancenull dates to be DateTime.fromMillisecondsSinceEpoch(0)[] instead of null)Fixed incorrect return value of deleteByIndex()
path dependencydeleteByIndex()Isar.close() (thanks @msxenon)$ escaping in generated code (thanks @jtzell)isar_connect is now integrated into isar
isar_connect is now integrated into isar
Isar.openSync()col.importJsonRawSync(), col.importJsonSync(), query.exportJsonRawSync(), query.exportJsonSync()@Ignore annotation not always workinggetByIndex() not returning correct object id (thanks @jtzell)The id for non-final objects is now assigned automatically after .put() and .putSync()
.put() and .putSync()double and List<double> indexes can no longer be at the beginning of a composite indexList<double> indexes can no longer be hashed.greaterThan(), .lessThan() and .between() filters and are now excluding for double values (>= -> >)IndexType.valueIsarLink and IsarLinks will no longer be initialized by Isar and must not be nullable or late.2.14 or higher is requiredisar.clear(), isar.clearSync(), col.clear() and col.clearSync()col.filter() as shortcut for col.where().filter()include parameter to .greaterThan() and .lessThan() filters and where clausesincludeLower and includeUpper parameters to .between() filters and where clausesIsar.autoIncrement to allow non-nullable auto-incrementing idsIsar.close() now returns whether the last instance was closedIndexType.hash automatically3.0.0IsarLink and IsarLinks can now be final.anyLessThan() and .anyGreaterThan() issues99999 results.getByX() and .deleteByX()@Ignore() fields were not ignoredNothing published for this version
Nothing published for this version
Fixed "Cannot allocate memory" error on older iOS devices
Added missing binaries
Added missing binaries
Switched from liblmdb to libmdbx for better performance, more stability and many internal improvements.
Switched from liblmdb to libmdbx for better performance, more stability and many internal improvements.
The internal database format has been changed to improve performance. Old databases do not work anymore!
greaterThan, lessThan and between queries for String valuesfinal properties and gettersfreezed and other code generatorscol.deleteByName('Anne').put() operations (objects are no longer mutated)replaceOnConflict option for .put() (instead of specifying it for index)Remove .where...In() and ...In() extension methods
.where...In() and ...In() extension methods.watch(lazy: bool) into .watch() and .watchLazy()include option for filterssortBy and thenBy generation.optional() and .repeat() query modifiers@ExternalCollection()caseSensitive option to .distinctBy()- Link support - Many improvements and fixes
Support for links and backlinks
- Bugfixes and many improvements
Fix dependency issue
Fix dependency issue
Initial release
Initial release
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 →