PowerSync is a Postgres-SQLite sync engine, which helps developers to create local-first real-time reactive apps that work seamlessly both online and offline.
This is the PowerSync client SDK for Kotlin Mutliplatform. This SDK currently supports Android and iOS as targets.
See a summary of features here.
This SDK is currently in a beta release. If you find a bug or issue, please open a GitHub issue. Questions or feedback can be posted on our community Discord - we'd love to hear from you.
-
- This is the Kotlin Multiplatform SDK implementation.
-
- SupabaseConnector.kt An example connector implementation tailed for Supabase. The backend
connector provides
the connection between your application backend and the PowerSync managed database. It is used to:
- Retrieve a token to connect to the PowerSync service.
- Apply local changes on your backend application server (and from there, to Postgres).
- SupabaseConnector.kt An example connector implementation tailed for Supabase. The backend
connector provides
the connection between your application backend and the PowerSync managed database. It is used to:
The easiest way to test the PowerSync KMP SDK is to run one of our demo applications.
Demo applications are located in the demos/
directory. See their respective README's for testing instructions:
-
demos/hello-powersync: A minimal example demonstrating the use of the PowerSync Kotlin Multiplatform SDK and the Supabase connector.
-
demos/supabase-todolist: A simple to-do list application demonstrating the use of the PowerSync Kotlin Multiplatform SDK and the Supabase connector.
The PowerSync Kotlin Multiplatform SDK is currently in a beta release. It can be used in production if you’ve tested your use cases.
Current limitations:
- Integration with SQLDelight schema and API generation (ORM) is not yet supported.
- Supports only a single database file.
Future work/ideas:
- Improved error handling.
- Attachments helper package.
- Management of DB connections on each platform natively.
- Supporting additional targets (JVM, Wasm).
Add the PowerSync Kotlin Multiplatform SDK to your project by adding the following to your build.gradle.kts
file:
kotlin {
//...
sourceSets {
commonMain.dependencies {
api("com.powersync:core:$powersyncVersion")
}
//...
}
}
If want to use the Supabase Connector, also add the following to commonMain.dependencies
:
implementation("com.powersync:connector-supabase:$powersyncVersion")
We recommend using Cocoapods (as opposed to SMP) for iOS targets. Add the following to the cocoapods
config in your build.gradle.kts
cocoapods {
//...
pod("powersync-sqlite-core") {
linkOnly = true
}
framework {
isStatic = true
export("com.powersync:core")
}
//...
}
Note: The linkOnly
attribute is set to true
and framework is set to isStatic = true
to ensure that the powersync-sqlite-core
binaries are only statically linked.
Our full SDK reference contains everything you need to know to get started implementing PowerSync in your project.
For example projects built with PowerSync and Kotlin Multiplatform, see our Demo Apps / Example Projects gallery. Most of these projects can also be found in the demos/
directory.