Skip to content
Nuvyntra Labs

Versus a direct engine API

sqlite-net, Nuventra.NuvexaDB, Realm, LiteDB, and the other engines stay available. LocalStore is the host-selected adapter: one IStoreCollection<T> surface so application code does not take a dependency on SQL, NQL, or a vendor SDK. Use the engine package directly when you need that engine’s full surface.

NeedLocalStoreDirect engine
Same CRUD if the backend changesYesRewrite the data layer
SQL / NQL / Realm queriesStoreFilter / StoreQuery; QueryAsync when QueryLanguage is Sql or NqlFull engine language
Copy collections to another engineAutoMigrate + Map<T>, or MigrateAsyncWrite your own exporter
Relationships / schema migrationsLimited / none inside one engineEngine-specific
Encrypted .nvx or SQLCipherEncryptionKey on optionsEngine-native APIs
Nuvexa Data Studio / NQL updateQueryAsync / INuvexaLocalStoreNuventra.NuvexaDB

Versus Android Room

Room is a compile-time SQLite mapper for Android. LocalStore is not a Room port: [StoreDao] generates a facade over IStoreCollection<T>, [StoreRaw] is not @Query with compile-time SQL validation, and there are no automatic schema migrations inside one engine. The resemblance is the host-picks-the-engine / app-uses-one-API shape, plus optional generated DAOs.

RequirementLocalStoreAndroid Room
Host-selected engineYes (10 backends)SQLite only
Generated DAOsYes ([StoreDao] / [StoreRaw])Yes (@Dao / @Query)
Cross-platform MAUIAndroid, iOS, Mac Catalyst, WindowsAndroid
Copy between enginesAutoMigrate + Map<T>N/A
Schema migrationsNo automatic migration inside one engineYes

Versus sibling persistence plugins

NeedStart with
Local documents / rows, host picks the enginePlugin.Maui.LocalStore
Offline-first writes, queued sync, conflictsPlugin.Maui.OfflineSync
Durable jobs, retry, dead letterPlugin.Maui.JobQueue
Retry failed telemetry / orders / paymentsPlugin.Maui.RetryQueue
Encrypted files (images, PDFs)Plugin.Maui.FileVault
Embedded .nvx, NQL, Data StudioNuventra.NuvexaDB

OfflineSync is a sync engine. JobQueue is a durable task queue that happens to use SQLite. FileVault encrypts files, not collections. NuvexaDB is the document engine LocalStore can host — use it directly when you want Data Studio and the full NuvexaDatabase surface, not a Room-style facade.

Embedded NoSQL engine that LocalStore can open as StoreBackend.Nuvexa. NuvexaDB

Queued sync and conflicts — not a local CRUD API. Plugin.Maui.OfflineSync

When to choose LocalStore

  • You want Room-style local CRUD on MAUI without writing SQL or NQL on the shared path.
  • The host must pick SQLite, NuvexaDB, Realm, LiteDB, SQLCipher, or another shipped engine.
  • You may later copy collections with AutoMigrate + Map<T>, or run QueryAsync / a generated DAO.
  • You need Android, iOS, Mac Catalyst, and Windows on net10.0.
  • You accept that some engines fall back to JSON files on mobile, and that QueryLanguage is None there.

Stay on the engine SDK when you already standardized on sqlite-net or NuvexaDB and need that query language. Use OfflineSync when the question is conflicted sync. Use JobQueue when the question is durable work. Use FileVault when the artifact is a file, not a row.

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.