mcpField
F
flutter-isar

flutter-isar

github.com/dhruvanbhalaraData & databases30149 installsUpdated 8w ago
Repository

About flutter-isar

A skill guide for using Isar as a local structured-data database in Flutter apps. It covers schema design, repository boundaries, migrations, reactive queries, and offline-first data flows.

Key features

  1. 01Isar collection and index design
  2. 02Repository-wrapped local data access
  3. 03Schema migration guidance
  4. 04Offline-first read and write patterns
  5. 05Reactive query streams
  6. 06Sensitive data storage guidance

Use cases

  1. 01Persisting structured app data locally
  2. 02Showing cached data during refresh
  3. 03Syncing local writes asynchronously
  4. 04Streaming database changes to UI

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dhruvanbhalara/skills --skill flutter-isar

After installing, type/flutter-isarin Claude Code to confirm it loaded.

Details

From the project README

Isar Database

  • Use Isar as the primary local database for structured data persistence
  • Define collections using @collection annotation with Id field
  • Place collection definitions in the data/local/ directory of the relevant feature
  • Run dart run build_runner build --delete-conflicting-outputs after modifying collections

Schema Design

  • Keep collections focused: one collection per domain entity
  • Use @Index annotations for fields queried frequently
  • Use @enumerated for enum fields
  • Use Links and Backlinks for relationships between collections
  • NEVER store derived/computed values: compute them in the domain layer

Migrations

  • Isar handles additive schema changes automatically (new fields, new collections)
  • For breaking changes (renamed fields, removed fields), write migration logic in the repository
  • Version your database schema and check version on app startup

Repository Pattern for Local Data

  • Local DataSource wraps all Isar put, get, delete, watch calls
  • Repositories orchestrate between remote and local DataSources
  • Repositories decide cache-first vs network-first strategy per use case

Offline-First Patterns

  • Cache-First: Read from Isar first, fetch from network in background, update Isar on success
  • Network-First: Fetch from network, fall back to Isar on failure
  • Write-Behind: Write to Isar immediately, sync to server asynchronously (queue pending changes)
  • Always show cached data immediately while refreshing in background

Reactive Queries

  • Use Isar's watchLazy() or watch() to stream changes to the UI via BLoC
  • Wrap Isar watch streams in the repository and expose as Stream<List<DomainModel>>
  • Dispose stream subscriptions properly in BLoC close() method

Secure Storage

  • Use flutter_secure_storage for sensitive key-value data (tokens, encryption keys)
  • Use SharedPreferences ONLY for non-sensitive user preferences (theme, locale, onboarding flags)
  • NEVER store passwords, tokens, or secrets in SharedPreferences or plain Isar

Comments

Markdown supported