Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion configuration/auth/custom.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ echo -n "your-value-here" | base64 -w 0 | tr '+/' '-_' | tr -d '='

### Generate New JWTs Using the KID and Shared Secret

Using your newly-created shared secret, you can generate JWT tokens [in your backend](/configuration/app-backend/setup) using the same KID you set in the PowerSync Service configuration. Here's a example TypeScript function using the [`jose`](https://github.com/panva/jose) library:
Using your newly-created shared secret, you can generate JWT tokens [in your backend](/configuration/app-backend/setup) using the same KID you set in the PowerSync Service configuration. Here's an example TypeScript function using the [`jose`](https://github.com/panva/jose) library:

```typescript
import * as jose from 'jose';
Expand Down
2 changes: 1 addition & 1 deletion handling-writes/handling-update-conflicts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
description: "Understand what happens when multiple users update the same records while offline."
---

By design PowerSync is unopinionated when it comes to handling conflicts on the backend. On the client, mutations are stored in an "upload queue" - an ordered log of mutations. This upload queue must be sequentially drained against backend API endpoints configured by the developer. The developer's app backend therefore dictates how mutations from clients are processed and applied against the source database. PowerSync then replicates and syncs those mutations back to the client. This is known as server-authoritative reconcilliation.
By design PowerSync is unopinionated when it comes to handling conflicts on the backend. On the client, mutations are stored in an "upload queue" - an ordered log of mutations. This upload queue must be sequentially drained against backend API endpoints configured by the developer. The developer's app backend therefore dictates how mutations from clients are processed and applied against the source database. PowerSync then replicates and syncs those mutations back to the client. This is known as server-authoritative reconciliation.

Check warning on line 6 in handling-writes/handling-update-conflicts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

handling-writes/handling-update-conflicts.mdx#L6

Did you really mean 'unopinionated'?

In the simplest backend implementation, the behavior of the overall system will be per-field Last-Write-Wins (LWW). However, this can be [customized](/handling-writes/custom-conflict-resolution).

Expand Down
2 changes: 1 addition & 1 deletion integrations/flutterflow/attachments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ The schema of the local SQLite database should now be updated to include the new

## Create `setUpAttachments` Custom Action

This creates an attachment queue which is responsible for tracking, storing and synching attachment metadata and CRUD operations.
This creates an attachment queue which is responsible for tracking, storing and syncing attachment metadata and CRUD operations.

1. Navigate to **"Custom Code"** and add a Custom Action.
2. Name the action `setUpAttachments`.
Expand Down
2 changes: 1 addition & 1 deletion maintenance-ops/monitoring-and-alerting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@
close_reason:"client closing stream"
```

The following aliases are supported for Sync & API logs. For most properties the alias matches the canonical property name; `error` and `lag` keep a short form because their underlying paths are awkward to type. You can also type the short aliases shown in parentheses; they are normalised to the canonical name on submit.
The following aliases are supported for Sync & API logs. For most properties the alias matches the canonical property name; `error` and `lag` keep a short form because their underlying paths are awkward to type. You can also type the short aliases shown in parentheses; they are normalized to the canonical name on submit.

| Alias | Property | Description |
| --- | --- | --- |
Expand Down Expand Up @@ -169,7 +169,7 @@

#### Excluding Results

Prefix a term or filter with `-` to exclude matching entries. This is useful for hiding known-noisy errors while triaging:

Check warning on line 172 in maintenance-ops/monitoring-and-alerting.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

maintenance-ops/monitoring-and-alerting.mdx#L172

Did you really mean 'triaging'?

```text
-error:PSYNC_S2106
Expand Down
2 changes: 1 addition & 1 deletion resources/faq.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<AccordionGroup>
<Accordion title="Why does PowerSync use SQLite as the client-side database?">
A major product principle that has guided us is to provide an open-source real database on the client-side, with a specific focus on [SQLite](https://sqlite.org/). This is as opposed to some kind of cache, key-value store or non-standards-based relational datastore.

Check warning on line 8 in resources/faq.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

resources/faq.mdx#L8

Did you really mean 'datastore'?

This approach leverages the power of SQLite and its ecosystem:

Expand Down Expand Up @@ -41,7 +41,7 @@
<Accordion title="Can a client track whether changes have been processed?">
_For example, a new record should not be displayed until the server received it, or it should be displayed as pending, or the entire screen must block with a spinner._

**While PowerSync does not have out-of-the-box support for this due to the great variety of requirements, this is easy to build on top of the sync system.** A simple approach is to store a "status" or "pending changes" column on the table, and set that whenever the client makes a change. When the server receives the change, it then sets it to "processed" / "no pending changes". So when the server has processed the change, the client automatically syncs that status back.For more granular information, record individual changes in a separate table, as explained in [Custom Conflict Resolution](/handling-writes/custom-conflict-resolution).Note: Blocking the entire screen with a spinner is not recommended, since the change may take a very long time to be processed if the user is offline.
**While PowerSync does not have out-of-the-box support for this due to the great variety of requirements, this is easy to build on top of the sync system.** A simple approach is to store a "status" or "pending changes" column on the table, and set that whenever the client makes a change. When the server receives the change, it then sets it to "processed" / "no pending changes". So when the server has processed the change, the client automatically syncs that status back. For more granular information, record individual changes in a separate table, as explained in [Custom Conflict Resolution](/handling-writes/custom-conflict-resolution). Note: Blocking the entire screen with a spinner is not recommended, since the change may take a very long time to be processed if the user is offline.
</Accordion>

<Accordion title="I don’t have direct database access, and can only access data via an API. Can I use PowerSync for this?">
Expand Down
2 changes: 1 addition & 1 deletion resources/local-first-software.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Here's how applications built using PowerSync can be brought closer to the [7 id
| --- | --- |
| **Fast**: By accessing data locally, the software should be able to respond near-instantaneously to user input | PowerSync inherently provides this: All reads and writes use a local SQLite database, resulting in near-zero latency for accessing data. |
| **Multi-Device**: Data should be synchronized across all of the devices on which a user does their work. | PowerSync automatically syncs data to different user devices. |
| **Offline**: The user should be able to read and write their data anytime, even while offline. | PowerSync allows for offline usage of applications for arbitrarily long periods of time. Developers can also optionally create apps as [offline-only](/client-sdks/advanced/local-only-usage) and turn on syncing of data when it suits them, including on a per-user basis.When syncing is configured, data is synced to users based on the [Sync Streams](/sync/streams/overview) (or [Sync Rules](/sync/rules/overview)) for offline access. Mutations to data while the user is offline are placed in an upload queue and periodically attempted to be [uploaded](/configuration/app-backend/client-side-integration) when connectivity is available (this is automatically managed by the PowerSync Client SDK). |
| **Offline**: The user should be able to read and write their data anytime, even while offline. | PowerSync allows for offline usage of applications for arbitrarily long periods of time. Developers can also optionally create apps as [offline-only](/client-sdks/advanced/local-only-usage) and turn on syncing of data when it suits them, including on a per-user basis. When syncing is configured, data is synced to users based on the [Sync Streams](/sync/streams/overview) (or [Sync Rules](/sync/rules/overview)) for offline access. Mutations to data while the user is offline are placed in an upload queue and periodically attempted to be [uploaded](/configuration/app-backend/client-side-integration) when connectivity is available (this is automatically managed by the PowerSync Client SDK). |
| **Collaboration**: The ideal is to support real-time collaboration that is on par with the best cloud apps today. | PowerSync allows building collaborative applications either with [custom conflict resolution](/handling-writes/custom-conflict-resolution), or [using CRDT](/client-sdks/advanced/crdts) data structures stored as blob data for fine-grained collaboration. |
| **Longevity**: Work the user did with the software should continue to be accessible indefinitely, even after the company that produced the software is gone. | PowerSync relies on open-source and source-available software, meaning that the end-user can self-host Postgres (open-source) and the [PowerSync Service](/architecture/powersync-service) (source-available) should they wish to continue using PowerSync to sync data after the software producer shuts down backend services. There is also an onus on the software developer to ensure longevity, such as allowing exporting of data and avoiding reliance on other proprietary backend services. |
| **Privacy**: The software should use end-to-end encryption so that servers that store a copy of users’ files only hold encrypted data that they cannot read. | For details on end-to-end encryption with PowerSync, refer to our [Encryption](/client-sdks/advanced/data-encryption) section. |
Expand Down
2 changes: 1 addition & 1 deletion resources/supported-platforms.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
| <Icon icon="js" /> Web | See [Web Compatibility](#web-compatibility). |
| <Icon icon="android" /> Android | SDK 24 (Android 7.0) |
| <Icon icon="apple" /> iOS | 15.0 |
| <Icon icon="apple" /> macOS | 14.0 (Sonoma) |

Check warning on line 15 in resources/supported-platforms.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

resources/supported-platforms.mdx#L15

Did you really mean 'Sonoma'?
| <Icon icon="windows" /> Windows | 10 |
| <Icon icon="linux" /> Linux | glibc 2.34+ |

Check warning on line 17 in resources/supported-platforms.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

resources/supported-platforms.mdx#L17

Did you really mean 'glibc'?

Note that some client SDKs may support lower versions than the ones listed here.

Expand Down Expand Up @@ -84,7 +84,7 @@
| Platform / Feature | Supported? | Platform Version | Notes |
| --- | --- | --- | --- |
| macOS | Yes | 14.0 | |
| Linux | Yes | glibc 2.34+ | |

Check warning on line 87 in resources/supported-platforms.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

resources/supported-platforms.mdx#L87

Did you really mean 'glibc'?
| Windows | Yes | 10 | |
| HTTP connection method | Yes | – | |
| WebSocket connection method | Yes | – | |
Expand All @@ -97,7 +97,7 @@
| iOS | Yes | 13.0 | Requires Flutter |
| macOS | Yes (x86-64, aarch64) | 12.0 (Monterey) | |
| Windows | Yes (x86-64, x86, aarch64) | 10 | |
| Linux | Yes (x86-64, x86, aarch64, armv7, riscv64gc) | Requires glibc 2.34+ | |

Check warning on line 100 in resources/supported-platforms.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

resources/supported-platforms.mdx#L100

Did you really mean 'glibc'?
| Web | Yes | OPFS by default, IndexedDB as backup ([see more](/client-sdks/frameworks/flutter-web-support)) | Only dart2js is tested, dart2wasm has issues |
| HTTP connection method | Yes | – | |
| WebSocket connection method | No | – | |
Expand Down Expand Up @@ -170,7 +170,7 @@

| Database | Version | Notes |
| --- | --- | --- |
| <Icon icon="elephant" iconType="solid" /> PostgreSQL | 11+ | |

Check warning on line 173 in resources/supported-platforms.mdx

View check run for this annotation

Mintlify / Mintlify Validation (powersync) - vale-spellcheck

resources/supported-platforms.mdx#L173

Use 'Postgres' instead of 'PostgreSQL'.
| <Icon icon="leaf" iconType="solid" /> MongoDB | 6.0+ | |
| <Icon icon="dolphin" iconType="solid" /> MySQL | 5.7+ | |
| <Icon icon="server" iconType="solid" /> SQL Server (beta) | SQL Server 2019+ (15.0+) or Azure SQL Database | Beta release.<br />Azure SQL Database is always running on the latest version of the SQL Server DB Engine. |
Expand All @@ -184,7 +184,7 @@

In general, PowerSync aims to support any platform version that still receives security updates from the platform provider. For platforms that follow an LTS and Current release model, this means we aim to support all active LTS releases along with the Current release.

Supporting every version that fits the above criteria is [not always feasible](#exceptions). When we cannot support all of them, we prioritise support for newer versions over older versions to ease maintenance. We will occasionally maintain support for an older version on a case-by-case basis for larger customers. Reach out to us at `hello@powersync.com` if this is you.
Supporting every version that fits the above criteria is [not always feasible](#exceptions). When we cannot support all of them, we prioritize support for newer versions over older versions to ease maintenance. We will occasionally maintain support for an older version on a case-by-case basis for larger customers. Reach out to us at `hello@powersync.com` if this is you.

### Exceptions

Expand Down
Loading