Isar Database

High-performance NoSQL database for Flutter/Dart — designed as a faster alternative to Hive with query support. Isar uses a custom storage engine with ACID transactions, a type-safe query API via code generation, full-text search, indexes, and reactive streams (watch collections for changes). Works on iOS, Android, macOS, Windows, Linux, and web. Much faster than sqflite for complex queries; faster than Hive for large collections. Schema defined via Dart annotations + code generation (isar_generator). Part of the Isar family that also includes isar_flutter_libs.

Evaluated Mar 06, 2026 (0d ago) v3.x
Homepage ↗ Repo ↗ Developer Tools flutter dart database nosql local-storage offline reactive mobile desktop
⚙ Agent Friendliness
66
/ 100
Can an agent use this?
🔒 Security
89
/ 100
Is it safe for agents?
⚡ Reliability
78
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
82
Error Messages
80
Auth Simplicity
98
Rate Limits
98

🔒 Security

TLS Enforcement
98
Auth Strength
90
Scope Granularity
85
Dep. Hygiene
82
Secret Handling
88

Local database protected by OS app sandbox on iOS/Android. Optional AES-256 encryption via isar_flutter_libs encryption parameter. No network exposure. Data at rest protection depends on OS encryption and optional Isar encryption.

⚡ Reliability

Uptime/SLA
80
Version Stability
75
Breaking Changes
68
Error Recovery
88
AF Security Reliability

Best When

You're building a Flutter mobile/desktop app that needs a fast, type-safe local NoSQL database with reactive queries, full-text search, and complex filtering beyond key-value storage.

Avoid When

You need relational data with JOINs (use drift/sqflite), you're building web-only (experimental web support), or you need simple key-value storage (use shared_preferences or Hive).

Use Cases

  • Store agent conversation history and context locally in Flutter apps using Isar — offline-first agent experiences that sync later when connected
  • Cache agent API responses locally for offline access using Isar's type-safe collections — structured NoSQL storage faster than shared_preferences for complex objects
  • Build reactive Flutter UIs that update when agent data changes using Isar's stream-based change notification — watchLazy and watch methods for live data binding
  • Implement full-text search across locally stored agent content using Isar's string index search — faster than SQLite LIKE queries for text-heavy agent data
  • Store agent ML model outputs, embeddings, or feature vectors locally using Isar's native list support — no serialization boilerplate for typed Dart objects

Not For

  • Server-side Dart applications — Isar is optimized for mobile/desktop clients; use PostgreSQL or SQLite (via drift) for server-side persistence
  • Relational data with complex JOINs — Isar is NoSQL/document-oriented; use drift (SQLite) or sqflite for strongly relational data models with foreign key constraints
  • Web-only Flutter apps requiring IndexedDB — Isar's web support is experimental; Hive or sembast are more stable for Flutter Web

Interface

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
Yes
Webhooks
No

Authentication

Methods: none
OAuth: No Scopes: No

Local database — no auth concepts. File-system level protection on mobile via app sandbox. Encryption support available via isar_flutter_libs with encryption option.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

Isar is Apache 2.0 licensed. Free for all use. Creator (Simon Leier) maintains as open source.

Agent Metadata

Pagination
offset
Idempotent
Full
Retry Guidance
Not documented

Known Gotchas

  • Code generation required — Isar models require @Collection annotation and `flutter pub run build_runner build` to generate .g.dart files; forgetting to regenerate after schema changes causes runtime errors
  • Schema migrations are manual — Isar doesn't auto-migrate; schema changes between app versions require version bump in Isar.open() and manual migration callbacks; no automatic ALTER TABLE equivalent
  • Isar instances must be opened before use — Isar.open() is async and must complete before any collection operations; common mistake is accessing isar before await Isar.open() completes in app startup
  • Transactions for multi-collection writes — writes to multiple collections without a transaction are not atomic; use isar.writeTxn(() async { ... }) for coordinated multi-collection writes
  • Watch/watchLazy streams don't emit initial value — stream only emits on changes after subscription; initial UI load requires explicit query + then watchLazy for subsequent changes
  • ID field must be Isar-managed or manually assigned — use @Id() annotation on an int field; Isar auto-assigns IDs starting at 1; manually assigning 0 or null creates auto-ID; conflicts possible if client generates IDs independently of Isar's counter

Alternatives

Full Evaluation Report

Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Isar Database.

$99

Scores are editorial opinions as of 2026-03-06.

5215
Packages Evaluated
26151
Need Evaluation
173
Need Re-evaluation
Community Powered