Background & sync
Plugin.Maui.LocalStore
Room-style local store — host picks SQLite, NuvexaDB, or another engine
Current NuGet 1.1.0
An abstract database layer for .NET MAUI on Android, iOS, Mac Catalyst, and Windows. The host picks StoreBackend; application code always uses the same ILocalStore / IStoreCollection<T> methods.
Install
dotnet add package Plugin.Maui.LocalStorePackage ID: Plugin.Maui.LocalStore
Plugin.Maui.* restores from GitHub Packages. Add the org feed first — see Use nuvyntralabs GitHub Packages from a C# project.
Overview
Plugin.Maui.LocalStore is a Room-style abstract database layer for MAUI. The host sets StoreBackend (SQLite, NuvexaDB, Realm, LiteDB, DuckDB, SQLCipher, Firebird, LMDB, RocksDB, or LevelDB). Application code stays on InsertAsync / FindByIdAsync / ReplaceAsync / DeleteByIdAsync / FindAsync. 1.1 adds AutoMigrate + Map<T>, ILocalStore.QueryAsync / ExecuteAsync, and source-generated [StoreDao] interfaces. Some engines fall back to JSON files when the native library is missing. It is not JobQueue, OfflineSync, FileVault, or androidx.room.
Current release
- 1.1.0. Current pack. Automatic engine migration (AutoMigrate, MigrateFrom, Map<T>, LocalStore.MigrateAsync). Raw SQL / NQL on ILocalStore.QueryAsync / ExecuteAsync (StoreQueryLanguage). Source-generated [StoreDao] implementations (GetDao<T>, AddMauiLocalStoreDao<T>).
- 1.0.1. Ten engines behind IStoreCollection<T>, platform table, and JSON fallback when a native library is missing. Sample uses the same OS TFMs as the library.
- 1.0.0. First stable release. Host-selected SQLite or NuvexaDB, reserved StoreBackend values, StoreFilter / StoreQuery, and INuvexaLocalStore.ExecuteNqlAsync.
Full upgrade map for the 3 September 2026 hardening wave: Hardened plugin releases.
Capabilities
- Host-selected StoreBackend; the same IStoreCollection<T> CRUD on every engine.
- SQLite, NuvexaDB, Realm, LiteDB, and SQLCipher run on Android, iOS, Windows, and Mac Catalyst.
- DuckDB, Firebird, RocksDB, LevelDB, and LMDB (Catalyst) use a JSON-file fallback when natives are missing.
- StoreFilter (Eq, Ne, Gte, Lt, And, Or) and StoreQuery (sort / skip / limit).
- AutoMigrate + Map<T>, or LocalStore.MigrateAsync, to copy collections when the destination is empty.
- ILocalStore.QueryAsync / ExecuteAsync when QueryLanguage is Sql or Nql.
- Source-generated [StoreDao] / [StoreRaw] via GetDao<T> or AddMauiLocalStoreDao<T>.
- UseMauiLocalStore, AddMauiLocalStore, or LocalStore.Open without the host.
- No sibling PackageReference to OfflineSync, JobQueue, or FileVault.
Documentation
Documentation
1.1.0 pack, ten engines, AutoMigrate, QueryAsync, [StoreDao], platform table, and JSON fallback.
Getting started
Install 1.1.0, UseMauiLocalStore, POCO + CRUD, filters, migrate, raw query, and generated DAOs.
Comparison
LocalStore vs a direct engine API, Android Room, OfflineSync, JobQueue, FileVault, and NuvexaDB.
- .NET MAUI
- SQLite
- NuvexaDB
- Local store
- C#
- Mac Catalyst
- Windows
Discussion
Comment on Plugin.Maui.LocalStore. The thread lives on this component's GitHub repository (nuvyntralabs/Plugin.Maui.LocalStore). Sign in with GitHub — Giscus uses Discussions, Utterances uses Issues.