# PowerSync ## Docs - [Architecture Overview](https://docs.powersync.com/architecture/architecture-overview.md): The core components of PowerSync are the service and client SDKs. - [Client Architecture](https://docs.powersync.com/architecture/client-architecture.md) - [Consistency](https://docs.powersync.com/architecture/consistency.md): PowerSync uses the concept of "checkpoints" to ensure that data is consistent. - [PowerSync Protocol](https://docs.powersync.com/architecture/powersync-protocol.md) - [PowerSync Service](https://docs.powersync.com/architecture/powersync-service.md) - [Attachments / Files](https://docs.powersync.com/client-sdks/advanced/attachments.md): Keep files out of your database and handle attachments in an entirely storage-agnostic way. PowerSync syncs minimal metadata while an offline-first queue automatically handles uploads, downloads, and retries. - [Use AWS S3 for attachment storage](https://docs.powersync.com/client-sdks/advanced/attachments-aws-s3-storage.md): Replace Supabase Storage with AWS S3 for handling attachments in the [React Native To-Do List demo app](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-native-supabase-todolist). - [PDF Attachments](https://docs.powersync.com/client-sdks/advanced/attachments-pdfs.md): Learn how to modify the [PhotoAttachmentQueue](https://github.com/powersync-ja/powersync-js/blob/main/demos/react-native-supabase-todolist/library/powersync/PhotoAttachmentQueue.ts) for PDF attachments. - [Background Syncing](https://docs.powersync.com/client-sdks/advanced/background-syncing.md): Run PowerSync operations while your app is inactive or in the background - [CRDT Data Structures](https://docs.powersync.com/client-sdks/advanced/crdts.md): PowerSync does not use [CRDTs](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type) directly as part of its sync or conflict resolution process, but CRDT data structures (from a library such as [Yjs](https://github.com/yjs/yjs) or y-crdt) may be persisted and synced using PowerSync. - [JSON, Arrays and Custom Types](https://docs.powersync.com/client-sdks/advanced/custom-types-arrays-and-json.md): PowerSync supports JSON/JSONB and arrays, and can sync other custom types by serializing them to text. - [Data Encryption](https://docs.powersync.com/client-sdks/advanced/data-encryption.md) - [GIS Data: PostGIS](https://docs.powersync.com/client-sdks/advanced/gis-data-postgis.md): For Postgres, PowerSync integrates well with PostGIS and provides tools for working with geo data. - [Local-Only Usage](https://docs.powersync.com/client-sdks/advanced/local-only-usage.md): Some use cases require data persistence before the user has registered or signed in. - [Pre-Seeding SQLite Databases](https://docs.powersync.com/client-sdks/advanced/pre-seeded-sqlite.md): Optimizing Initial Sync by Pre-Seeding SQLite Databases. - [Querying JSON Data in SQLite](https://docs.powersync.com/client-sdks/advanced/query-json-in-sqlite.md): How to query JSON data synced from your backend and stored as strings in SQLite - [Raw SQLite Tables to Bypass JSON View Limitations](https://docs.powersync.com/client-sdks/advanced/raw-tables.md): Use raw tables for native SQLite functionality and improved performance. - [Sequential ID Mapping](https://docs.powersync.com/client-sdks/advanced/sequential-id-mapping.md): Learn how to map a local UUID to a remote sequential (auto-incrementing) ID. - [State Management Libraries](https://docs.powersync.com/client-sdks/advanced/state-management.md): Use PowerSync with state management libraries in Dart/Flutter - [Unit Testing](https://docs.powersync.com/client-sdks/advanced/unit-testing.md): Set up unit tests for PowerSync in Dart/Flutter - [Cascading Delete](https://docs.powersync.com/client-sdks/cascading-delete.md): Perform cascading deletes on the client-side database - [Expo Go Support](https://docs.powersync.com/client-sdks/frameworks/expo-go-support.md): PowerSync supports Expo Go with @powersync/adapter-sql-js - [Dart/Flutter Web Support (Beta)](https://docs.powersync.com/client-sdks/frameworks/flutter-web-support.md) - [Next.js + PowerSync](https://docs.powersync.com/client-sdks/frameworks/next-js.md): A guide for creating a new Next.js application with PowerSync for offline/local first functionality - [React Hooks](https://docs.powersync.com/client-sdks/frameworks/react.md) - [React Native Web Support](https://docs.powersync.com/client-sdks/frameworks/react-native-web-support.md) - [TanStack Query & TanStack DB](https://docs.powersync.com/client-sdks/frameworks/tanstack.md): PowerSync integrates with multiple TanStack libraries. - [Vue Composables](https://docs.powersync.com/client-sdks/frameworks/vue.md) - [Full-Text Search](https://docs.powersync.com/client-sdks/full-text-search.md): Use SQLite's FTS5 extension for client-side full-text search - [Experimental: High Performance Diffs](https://docs.powersync.com/client-sdks/high-performance-diffs.md): Efficiently get row changes using trigger-based table diffs (JS) - [Infinite Scrolling](https://docs.powersync.com/client-sdks/infinite-scrolling.md): Infinite scrolling is a software design technique that loads content continuously as the user scrolls down the page/screen. - [Dart/Flutter ORM Support](https://docs.powersync.com/client-sdks/orms/flutter-orm-support.md) - [Drizzle](https://docs.powersync.com/client-sdks/orms/js/drizzle.md) - [Kysely](https://docs.powersync.com/client-sdks/orms/js/kysely.md) - [ORM Overview](https://docs.powersync.com/client-sdks/orms/js/overview.md): Reference for using ORMs in PowerSync's JavaScript-based SDKs - [TanStack DB](https://docs.powersync.com/client-sdks/orms/js/tanstack-db.md) - [Kotlin SQL Libraries](https://docs.powersync.com/client-sdks/orms/kotlin/overview.md): Reference for using PowerSync with SQL mapping libraries on Kotlin. - [Room (Alpha)](https://docs.powersync.com/client-sdks/orms/kotlin/room.md) - [SQLDelight (Beta)](https://docs.powersync.com/client-sdks/orms/kotlin/sqldelight.md) - [ORM Support Overview](https://docs.powersync.com/client-sdks/orms/overview.md): Use type-safe ORMs with PowerSync instead of raw SQL queries - [GRDB (Alpha)](https://docs.powersync.com/client-sdks/orms/swift/grdb.md) - [Client SDKs Overview](https://docs.powersync.com/client-sdks/overview.md): Client-side SDKs for syncing data with PowerSync - [Reading Data](https://docs.powersync.com/client-sdks/reading-data.md): Query data from your local SQLite database using SQL queries - [Capacitor SDK (alpha)](https://docs.powersync.com/client-sdks/reference/capacitor.md): Full SDK guide for using PowerSync in Capacitor clients - [API Reference](https://docs.powersync.com/client-sdks/reference/capacitor-api.md) - [.NET SDK (alpha)](https://docs.powersync.com/client-sdks/reference/dotnet.md): Full SDK guide for using PowerSync in .NET clients. - [Dart/Flutter SDK](https://docs.powersync.com/client-sdks/reference/flutter.md): Full SDK guide for using PowerSync in Dart/Flutter clients - [API Reference](https://docs.powersync.com/client-sdks/reference/flutter-api.md) - [JavaScript Web SDK](https://docs.powersync.com/client-sdks/reference/javascript-web.md): Full SDK guide for using PowerSync in JavaScript Web clients - [API Reference](https://docs.powersync.com/client-sdks/reference/javascript-web-api.md) - [Kotlin SDK](https://docs.powersync.com/client-sdks/reference/kotlin.md): Full SDK guide for using PowerSync in Kotlin clients - [API Reference](https://docs.powersync.com/client-sdks/reference/kotlin-api.md) - [Node.js client SDK (Beta)](https://docs.powersync.com/client-sdks/reference/node.md): SDK reference for using PowerSync in Node.js clients. - [API Reference](https://docs.powersync.com/client-sdks/reference/node-api.md) - [React Native & Expo SDK](https://docs.powersync.com/client-sdks/reference/react-native-and-expo.md): Full SDK guide for using PowerSync in React Native clients - [API Reference](https://docs.powersync.com/client-sdks/reference/react-native-api.md) - [Rust SDK (pre-alpha)](https://docs.powersync.com/client-sdks/reference/rust.md): Full SDK guide for using PowerSync in Rust applications. - [Swift SDK](https://docs.powersync.com/client-sdks/reference/swift.md): Full SDK guide for using PowerSync in Swift clients - [API Reference](https://docs.powersync.com/client-sdks/reference/swift-api.md) - [Usage Examples](https://docs.powersync.com/client-sdks/usage-examples.md): Code examples and common patterns for using PowerSync Client SDKs - [Live Queries / Watch Queries](https://docs.powersync.com/client-sdks/watch-queries.md): Build reactive UIs with watch queries that update when data changes - [Writing Data](https://docs.powersync.com/client-sdks/writing-data.md): Write data to your local SQLite database and manage the upload queue - [Client-Side Integration With Your Backend](https://docs.powersync.com/configuration/app-backend/client-side-integration.md): The 'backend connector' provides the connection between the PowerSync Client SDK and your [backend application](/configuration/app-backend/setup). - [CloudCode (for MongoDB Backend Functionality)](https://docs.powersync.com/configuration/app-backend/cloudcode.md) - [App Backend Setup](https://docs.powersync.com/configuration/app-backend/setup.md) - [Auth0](https://docs.powersync.com/configuration/auth/auth0.md): Setting up Auth0 Authentication with PowerSync - [Custom Authentication](https://docs.powersync.com/configuration/auth/custom.md): Any authentication provider can be supported by generating custom JWTs for PowerSync. - [Development Tokens](https://docs.powersync.com/configuration/auth/development-tokens.md): Generate temporary development tokens for authentication. - [Firebase Auth](https://docs.powersync.com/configuration/auth/firebase-auth.md): Setting up Firebase Authentication with PowerSync - [Authentication Setup](https://docs.powersync.com/configuration/auth/overview.md) - [Supabase Auth](https://docs.powersync.com/configuration/auth/supabase-auth.md): PowerSync can verify Supabase JWTs directly when connected to a Supabase-hosted Postgres database. - [Stytch + Supabase](https://docs.powersync.com/configuration/auth/supabase-auth/stytch.md): PowerSync is compatible with both Consumer and B2B SaaS Stytch project types when using [Stytch](https://stytch.com/) for authentication with Supabase projects. - [PowerSync Cloud Instances](https://docs.powersync.com/configuration/powersync-service/cloud-instances.md): Create and configure PowerSync Cloud instances of the PowerSync Service. - [Self-Hosted Instance Configuration](https://docs.powersync.com/configuration/powersync-service/self-hosted-instances.md): Configure the PowerSync Service for self-hosted deployments. - [Source Database Connection](https://docs.powersync.com/configuration/source-db/connection.md): Connect a PowerSync Cloud instance to your source database. - [Postgres Maintenance](https://docs.powersync.com/configuration/source-db/postgres-maintenance.md) - [Private Endpoints](https://docs.powersync.com/configuration/source-db/private-endpoints.md) - [Security & IP Filtering](https://docs.powersync.com/configuration/source-db/security-and-ip-filtering.md) - [Source Database Setup](https://docs.powersync.com/configuration/source-db/setup.md): Configure your backend source database for PowerSync, including permissions and replication settings. - [Error Codes Reference](https://docs.powersync.com/debugging/error-codes.md): Complete list of PowerSync error codes with explanations and troubleshooting guidance. - [Troubleshooting](https://docs.powersync.com/debugging/troubleshooting.md): Summary of common issues, troubleshooting tools and pointers. - [Custom Conflict Resolution](https://docs.powersync.com/handling-writes/custom-conflict-resolution.md): How to implement custom conflict resolution strategies in PowerSync to handle concurrent updates from multiple clients. - [Data Pipelines](https://docs.powersync.com/handling-writes/custom-write-checkpoints.md): Use Custom Write Checkpoints to handle asynchronous data uploads, as in chained data pipelines. - [Handling Update Conflicts](https://docs.powersync.com/handling-writes/handling-update-conflicts.md): What happens when two users update the same records while offline? - [Handling Write / Validation Errors](https://docs.powersync.com/handling-writes/handling-write-validation-errors.md): The general approach is that for transient errors (e.g. server or database unavailable), the changes are kept in the client-side upload queue, and retried at 5 second intervals, keeping the original order. In the future it will be possible to control the retry behavior. - [Writing Client Changes](https://docs.powersync.com/handling-writes/writing-client-changes.md): Your backend application needs to expose an API endpoint to apply write operations to your backend source database that are received from the PowerSync Client SDK. - [Neon + PowerSync](https://docs.powersync.com/integrations/neon.md): Tutorial-style integration guide for creating synced / local-first / offline-first apps with Neon and PowerSync, using a demo notes web app written in TypeScript. - [Integrations Overview](https://docs.powersync.com/integrations/overview.md): Learn how to integrate PowerSync with your favorite tools. - [Serverpod + PowerSync](https://docs.powersync.com/integrations/serverpod.md): Easily add offline-capable sync to your Serverpod projects with PowerSync - [Handling Attachments](https://docs.powersync.com/integrations/supabase/attachments.md): Examples of syncing attachments between a client app and Supabase Storage. - [Improve Supabase Connector](https://docs.powersync.com/integrations/supabase/connector-performance.md): Learn how to improve the performance of the Supabase Connector for the [React Native To-Do List demo app](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-native-supabase-todolist). - [Supabase + PowerSync](https://docs.powersync.com/integrations/supabase/guide.md): Tutorial-style integration guide for creating offline-first apps with Supabase and PowerSync, using a demo to-do list app in Flutter, React Native, Web, Kotlin and Swift. - [Local Development](https://docs.powersync.com/integrations/supabase/local-development.md): Local development with Supabase and PowerSync. - [Real-time Streaming](https://docs.powersync.com/integrations/supabase/realtime-streaming.md) - [RLS and Sync Rules](https://docs.powersync.com/integrations/supabase/rls-and-sync-rules.md) - [Demo Apps & Example Projects](https://docs.powersync.com/intro/examples.md) - [PowerSync Docs](https://docs.powersync.com/intro/powersync-overview.md) - [PowerSync Philosophy](https://docs.powersync.com/intro/powersync-philosophy.md): Our vision is that a local-first or offline-first app architecture should be easier for the developer to implement than cloud-first, and give a better experience for the end-user — even when they're online. - [Self-Hosting](https://docs.powersync.com/intro/self-hosting.md): An Introduction to self-hosting PowerSync in your own infrastructure (PowerSync Open Edition or PowerSync Enterprise Self-Hosted Edition). - [PowerSync Setup Guide](https://docs.powersync.com/intro/setup-guide.md): This guide walks you through adding PowerSync to your app project step-by-step. - [Understanding the SQLite Database](https://docs.powersync.com/maintenance-ops/client-database-diagnostics.md): Guide for analyzing and understanding the local SQLite database - [Compacting Buckets](https://docs.powersync.com/maintenance-ops/compacting-buckets.md): [Buckets](/architecture/powersync-service#bucket-system) store data as a history of changes, not only the current state. - [Deploying Schema Changes](https://docs.powersync.com/maintenance-ops/deploying-schema-changes.md) - [Implementing Schema Changes](https://docs.powersync.com/maintenance-ops/implementing-schema-changes.md) - [Monitoring and Alerting](https://docs.powersync.com/maintenance-ops/monitoring-and-alerting.md): Overview of monitoring and alerting functionality for PowerSync Cloud instances - [Production Readiness Best Practices Guide](https://docs.powersync.com/maintenance-ops/production-readiness-guide.md): Key recommendations for ensuring your deployment is ready for production - [Deploy PowerSync on AWS ECS](https://docs.powersync.com/maintenance-ops/self-hosting/aws-ecs.md): Guide to deploying PowerSync on AWS ECS with Fargate - [Deploy PowerSync Service on Coolify](https://docs.powersync.com/maintenance-ops/self-hosting/coolify.md): Guide for deploying the [PowerSync Service](http://localhost:3333/architecture/powersync-service) on Coolify - [Deployment Architecture](https://docs.powersync.com/maintenance-ops/self-hosting/deployment-architecture.md): Infrastructure requirements, scaling, and deployment architecture for self-hosted PowerSync - [Diagnostics](https://docs.powersync.com/maintenance-ops/self-hosting/diagnostics.md): How to use the PowerSync Service Diagnostics API - [Health Checks](https://docs.powersync.com/maintenance-ops/self-hosting/healthchecks.md) - [Metrics](https://docs.powersync.com/maintenance-ops/self-hosting/metrics.md): Managing and using the PowerSync Service Metrics - [Migrating Between Instances](https://docs.powersync.com/maintenance-ops/self-hosting/migrating-instances.md): Migrating users between PowerSync instances - [Multiple PowerSync Instances](https://docs.powersync.com/maintenance-ops/self-hosting/multiple-instances.md): Scaling using multiple instances - [Self-Hosting Maintenance & Ops](https://docs.powersync.com/maintenance-ops/self-hosting/overview.md) - [Railway + PowerSync](https://docs.powersync.com/maintenance-ops/self-hosting/railway.md): Deploy PowerSync Service with a custom backend on Railway, including Postgres source database, bucket storage, and sync diagnostics client. - [Securing Your Deployment](https://docs.powersync.com/maintenance-ops/self-hosting/securing-your-deployment.md): From a security perspective, the primary activity required will be placing a load balancer with TLS in front of PowerSync. - [Telemetry](https://docs.powersync.com/maintenance-ops/self-hosting/telemetry.md): PowerSync integrates with OpenTelemetry - [Update Sync Rules](https://docs.powersync.com/maintenance-ops/self-hosting/update-sync-rules.md): How to update sync rules in a self-hosted PowerSync deployment - [MongoDB Atlas Device Sync Migration Guide](https://docs.powersync.com/migration-guides/atlas-device-sync.md): This guide lays out all the steps of migrating from MongoDB Atlas Device Sync to PowerSync. - [Contact Us](https://docs.powersync.com/resources/contact-us.md) - [FAQ](https://docs.powersync.com/resources/faq.md): Frequently Asked Questions about PowerSync. - [Feature Status](https://docs.powersync.com/resources/feature-status.md): PowerSync feature states and their implications for factors such as API stability and support. - [HIPAA Compliance](https://docs.powersync.com/resources/hipaa.md): Details on HIPAA compliance with PowerSync Cloud - [Local-First Software](https://docs.powersync.com/resources/local-first-software.md): How does PowerSync fit in to the local-first software movement? - [Performance and Limits](https://docs.powersync.com/resources/performance-and-limits.md): Expected performance and limits for PowerSync Cloud. - [Security & HIPAA](https://docs.powersync.com/resources/security.md): Details on PowerSync Cloud's cybersecurity posture and how to report issues - [Supported Platforms](https://docs.powersync.com/resources/supported-platforms.md): Supported platforms and major features by PowerSync Client SDK - [Usage & Billing](https://docs.powersync.com/resources/usage-and-billing.md): Usage & billing for PowerSync Cloud (our cloud-hosted offering). - [Pricing Example](https://docs.powersync.com/resources/usage-and-billing/pricing-example.md): Practical example of how pricing is calculated on the Pro or Team plan of PowerSync Cloud (usage-based pricing) - [FAQ & Troubleshooting](https://docs.powersync.com/resources/usage-and-billing/usage-and-billing-faq.md): Usage and billing FAQs and troubleshooting strategies. - [Case Sensitivity](https://docs.powersync.com/sync/advanced/case-sensitivity.md): For simplicity, we recommend using only lower case identifiers for all table/collection and column/field names used in PowerSync. If you need to use a different case, continue reading. - [Client ID](https://docs.powersync.com/sync/advanced/client-id.md): On the client, PowerSync only supports a single primary key column called `id`, of type `text`. - [Compatibility](https://docs.powersync.com/sync/advanced/compatibility.md): Configure sync behavior: enable latest backwards-incompatible fixes (recommended for new projects) or keep legacy behavior. - [Guide: Many-to-Many and Join Tables](https://docs.powersync.com/sync/advanced/many-to-many-and-join-tables.md) - [Multiple Client Versions](https://docs.powersync.com/sync/advanced/multiple-client-versions.md): In some cases, different client versions may need different output schemas. - [Advanced Topics](https://docs.powersync.com/sync/advanced/overview.md): Advanced topics relating to Sync Rules / Sync Streams. - [Partitioned Tables (Postgres)](https://docs.powersync.com/sync/advanced/partitioned-tables.md): Partitioned tables and wildcard table name matching - [Prioritized Sync](https://docs.powersync.com/sync/advanced/prioritized-sync.md): In some scenarios, you may want to sync tables using different priorities. For example, you may want to sync a subset of all tables first to log a user in as fast as possible, then sync the remaining tables in the background. - [Schemas and Connections](https://docs.powersync.com/sync/advanced/schemas-and-connections.md) - [Sharded Databases](https://docs.powersync.com/sync/advanced/sharded-databases.md): Sharding is often used in backend databases to handle higher data volumes. - [Guide: Sync Data by Time](https://docs.powersync.com/sync/advanced/sync-data-by-time.md): Learn how to sync data by time in Sync Rules. - [Sync Rules & Sync Streams](https://docs.powersync.com/sync/overview.md) - [Client Parameters](https://docs.powersync.com/sync/rules/client-parameters.md): Pass parameters from the client directly for use in Sync Rules. - [Data Queries](https://docs.powersync.com/sync/rules/data-queries.md) - [Global Buckets](https://docs.powersync.com/sync/rules/global-buckets.md): The simplest Sync Rules are for "global" data — synced to all users, using "Global Buckets" - [Organize Data Into Buckets](https://docs.powersync.com/sync/rules/organize-data-into-buckets.md) - [Sync Rules](https://docs.powersync.com/sync/rules/overview.md) - [Parameter Queries](https://docs.powersync.com/sync/rules/parameter-queries.md) - [Supported SQL](https://docs.powersync.com/sync/rules/supported-sql.md) - [Sync Streams (Early Alpha)](https://docs.powersync.com/sync/streams/overview.md): Sync Streams will replace Sync Rules and are designed to allow for more dynamic syncing, while not compromising on existing offline-first capabilities. - [Types](https://docs.powersync.com/sync/types.md): PowerSync's Sync Rules and Sync Streams use the [SQLite type system](https://www.sqlite.org/datatype3.html). - [AI Tools](https://docs.powersync.com/tools/ai-tools.md): Resources for working with PowerSync with AI-powered coding tools - [CLI (Beta)](https://docs.powersync.com/tools/cli.md): Manage your PowerSync Cloud environment programmatically - [Sync Diagnostics Client](https://docs.powersync.com/tools/diagnostics-client.md) - [Local Development](https://docs.powersync.com/tools/local-development.md): Using Docker Compose to self-host PowerSync for development purposes. - [Tools](https://docs.powersync.com/tools/overview.md) - [PowerSync Dashboard](https://docs.powersync.com/tools/powersync-dashboard.md): Introduction to and overview of the PowerSync Dashboard ## Optional - [GitHub](https://github.com/powersync-ja) - [Community Discord](https://discord.com/invite/powersync) - [PowerSync Website](https://www.powersync.com/)