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.