- DATE:
- AUTHOR:
- PowerSync Product Team
PowerSync .NET SDK: Beta Release
The PowerSync .NET SDK has reached beta. You can now build and ship production-ready desktop and MAUI apps with the full PowerSync feature set. Simultaneously, we're also releasing SQL Server backend support in beta
Together, these bring production-ready PowerSync support for teams building on the Microsoft stack.
Since the alpha, we've brought the .NET SDK to full feature parity with the rest of the PowerSync SDK family: Sync Streams, sync priority, and the Rust-based sync client are all now supported. We've also tightened up the API for long-term stability and introduced more idiomatic .NET APIs throughout.
This release also includes concrete performance wins: a read connection pool for MDSQLiteAdapter so reads can run concurrently, and queries now run on the .NET thread pool instead of blocking the caller's thread.
What's new
These are the main improvements since the alpha.
Performance
Run multiple queries concurrently without blocking —
MDSQLiteAdapternow uses a read connection pool (defaults to 5 concurrent read connections), so parallel reads no longer queue behind each other.Queries run on the .NET thread pool, so your app stays responsive while data loads.
Result mapping now uses Dapper instead of manual JSON parsing — ~2.8x faster query performance and ~15x less memory usage, plus broader .NET type support.
Sync
Sync Streams support to provide the best of both worlds: sync data upfront (for offline-first use cases) or on demand.
Show users a progress indicator during initial sync:
SyncStatus.DownloadProgress()lets you track how many rows have been downloaded.Control which data syncs first with bucket priority support — useful when some data is more critical to load than others.
Handle sync failures in your UI:
SyncStatus.DataFlownow exposesDownloadErrorandUploadErrorso you can detect and respond to sync errors.The Rust-based sync client is now the default (and only) implementation — it's faster and more reliable than the previous C# implementation.
Both
StatusUpdatedandStatusChangedevents now emit the fullSyncStatusobject, giving you complete sync state in your event handler.
Queries
React to data changes using standard C# async patterns:
Watch<T>andOnChangereturnIAsyncEnumerable, so you can useawait foreachto stream live updates through your app.Use
TriggerImmediatelyto control whether a watch query fires on setup or only when data actually changes.Query without a typed model class using untyped/dynamic queries
Getinstead ofGet<T>) — useful for ad-hoc or exploratory queries.Run multiple SQL statements in a single call with
ExecuteBatch().
Schema and table options
Declare your schema using C# attributes directly on your model classes, instead of a separate schema definition — less boilerplate, more familiar .NET style.
Fine-tune how individual tables behave:
TrackPreviousValuesgives you the old row value when data changes (useful for diffing),IgnoreEmptyUpdatesskips re-triggering watch queries when an update makes no actual change, andTrackMetadatalets you attach sync metadata to rows.Pass custom context (e.g. app version, user info) to your backend with each sync request via
AppMetadataonPowerSyncConnectionOptions.
Other additions
Check how many local changes are waiting to upload with
GetUploadQueueStats()— useful for showing sync status in your UI.Subscribe to specific events directly via the new
EventManager, instead of subscribing to all possible events and filtering manually, e.g.PowerSyncDatabase.Events.OnStatusChanged.
Beta status
The .NET SDK is now in Beta: APIs are stable, breaking changes will be communicated clearly, and the SDK is production-ready for well-tested use cases. The MAUI SDK, which is a thin wrapper around the Common SDK, is also in beta and carries the same updates.
See our Feature Status definitions for details on what Beta means in our terminology.
Getting started
Docs: SDK reference
Full changelog: PowerSync.Common CHANGELOG
If you're coming from the alpha, the changelog covers all breaking API changes made since then.
Feedback and help
Questions, bugs, or feedback? Join us in the PowerSync Discord or open an issue on GitHub.
We've published a proposal that covers the thinking behind many of the changes in this release, as well as what we're considering next, including ORM support. Have a look and please share your thoughts.