PowerSync with SQLCipher SDK for Flutter
PowerSync is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side.
This package (powersync_sqlcipher
) is the PowerSync client SDK for Flutter with encryption enabled using SQLCipher. It is currently in a beta release. This means it is safe to use in production, provided that you've tested your use cases.
If you do not require encryption in your Flutter application, we recommend using the powersync
SDK.
Installing PowerSync with SQLCipher encryption in your own project
Install the latest version of the package, for example:
flutter pub add powersync_sqlcipher
Version history can be found here.
Usage
This SDK requires a slightly different setup to the powersync
package in order to encrypt the local database:
import 'package/powersync_sqlcipher/powersync.dart';
/// Global reference to the database
late final PowerSyncDatabase db;
final cipherFactory = PowerSyncSQLCipherOpenFactory(
path: path, key: "sqlcipher-encryption-key"); // https://www.zetetic.net/sqlcipher/sqlcipher-api/#key
db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
Getting Started
Our full SDK reference contains everything you need to know to get started implementing PowerSync in your project.
Changelog
A changelog for this SDK is available here.
API Reference
The full API reference for this SDK can be found here.
Examples
For example projects built with PowerSync and Flutter, see our Demo Apps / Example Projects gallery. Most of these projects can also be found in the demos/
directory.
Found a bug or need help?
- Join our Discord server where you can browse topics from our community, ask questions, share feedback, or just say hello :)
- Please open a GitHub issue when you come across a bug.
- Have feedback or an idea? Submit an idea via our public roadmap or schedule a chat with someone from our product team.
Libraries
- powersync
- PowerSync with Encryption for Flutter.
- sqlite3
- Re-exports sqlite3 to expose sqlite3 without adding it as a direct dependency.
- sqlite3_common
- Re-exports sqlite3_common to expose sqlite3_common without adding it as a direct dependency.
- sqlite3_open
- Re-exports sqlite3_open to expose sqlite3_open without adding it as a direct dependency.
- sqlite_async
- Re-exports sqlite_async to expose sqlite_async without adding it as a direct dependency.