|
min. read

PowerSync Update: November 2024

Kobie Botha

We continued progress on multiple fronts during November. In addition to product milestones, our Discord community is also growing rapidly (invite here), now regularly seeing 500+ messages per week. Feel free to ask us anything: PowerSync engineers are based in multiple timezones and do their best to respond quickly. We’ve also introduced a Trusted Engineer badge for community members who’ve become PowerSync experts. On to other milestones:

New Sync Rules Capabilities

We’re continuously working to make Sync Rules more intuitive and capable. In November, we released three new Sync Rules functions:

  • [.inline-code-snippet]substring(text, start, length)[.inline-code-snippet]: Extracts a portion of a string based on specified start index and length. Start index is 1-based. Example: [.inline-code-snippet]substring(created_at, 1, 10)[.inline-code-snippet] returns the date portion of the timestamp.
  • [.inline-code-snippet]json_each(data)[.inline-code-snippet]: Expands a JSON array or object from a request or token parameter into a set of parameter rows. Example: [.inline-code-snippet]SELECT value as project_id FROM json_each(request.jwt() -> 'project_ids')[.inline-code-snippet]
  • [.inline-code-snippet]json_keys(data)[.inline-code-snippet]: Returns the set of keys of a JSON object as a JSON array. Example: [.inline-code-snippet]select * from items where bucket.user_id in json_keys(permissions_json)[.inline-code-snippet]

Read the docs

Issue Alerting Now Available On All Plans

Issue alerts are now available on all plans, allowing developers to catch connection, replication and sync issues early. Email notifications for all are coming soon. Pro, Team and Enterprise plan users can already wire up webhooks to send alert notifications to other systems.

Read the docs

Drizzle ORM Support

The [.inline-code-snippet]@powersync/drizzle-driver[.inline-code-snippet] package integrates Drizzle with our React Native and JavaScript/Web SDKs.

We know that developers often have strong opinions on using ORMs, so instead of enforcing one approach, we support everything from raw SQL queries to popular ORM libraries. For the JavaScript ecosystem, Drizzle joins Kysely as ORM options.

Read the release notes

V1.0.0 of Docker Image

This release introduces a major refactor of the PowerSync Service to support modular replication, along with alpha support for MongoDB and MySQL source databases. 

MongoDB and MySQL developers can now use the latest version of the Docker image: [.inline-code-snippet]image: journeyapps/powersync-service:latest[.inline-code-snippet]. This release also paves the way for the upcoming beta releases for these database technologies.

See the docs

SQLCipher Support for Flutter

This release allows developers to implement E2E encryption for Flutter apps (note: Flutter Web does not yet support SQLCipher).

Read the release notes

Healthcheck APIs for Self-Hosted PowerSync

New endpoints can be used to check the health of your self-hosted PowerSync Service instances. This provides a way to catch issues before they impact your users.

Read the docs

New Use Case Example: Prioritized Sync

In some scenarios, you may want to sync some tables before others. 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. This use case example explains how to achieve that.

See the use case example

Flutter Web Support Released Into Beta

This Beta release means that our Flutter Web support is now suitable for production use, given that you sufficiently tested your use cases.

This release introduces shared sync coordination across tabs — our final step to full Flutter Web support. This was achieved by offloading the task of synchronizing databases to a separate worker ([.inline-code-snippet]powersync_sync.worker.js[.inline-code-snippet]), allowing it to be coordinated across tabs.

Huge thanks to Simon Binder, the maintainer of Dart’s SQLite3 and Drift packages, who did the bulk of the initial work for this release.

Read the release notes

PowerSync on AWS Marketplace

PowerSync is now available on the AWS Marketplace, simplifying procurement for enterprise customers.

This makes it easier for teams who use AWS to deploy PowerSync into their organizations. Currently, only our Enterprise plan is available on the AWS Marketplace.

Read the blog post

Video: Migrating From MongoDB Atlas Device Sync/Realm

Long-time Realm user, Steve Nosse, joined us to discuss his experience migrating from MongoDB Atlas Device Sync and Realm to PowerSync and Supabase.

Community Focus

Contributions

High-fives to Omnicpie (2nd contribution!) and ImSingee who contributed PRs this month. The first allows users to to specify a type for a given parameter in our diagnostics app and the second adds support for Drizzle’s casing capabilities.

A short guide for self-hosting

A practical guide for hosting self-managed TypeScript apps on a VPS, with tools like Coolify, Postgres, PowerSync, and Supertokens. By Guillem Puche.

Developer Case Study: trakkd

Timo Behrens joined us to discuss their meeting note management app, trakkd.

That's it for the November update, happy coding!

Subscribe to receive updates

Thank you! Your submission has been received.
Oops! Something went wrong while submitting the form. Please try again.