We expect 2025 to be a breakout year for sync engines, driven by growing demand for zero-latency apps and simpler state management. We have some exciting plans to share, but first, let’s look at how PowerSync evolved this past month.
New Sync Rules Functions
In November, we released three new Sync Rules functions, %%substring(text, start, length)%%, %%json_each(data)%% and %%json_keys(data)%%. In December, community member Jorge S (@hyperion) also added two additional functions:
- %%uuid_blob%%: converts a UUID string to bytes. The ID can then be transformed to base64 (e.g. %%base64(uuid_blob(id))%%) for more performant querying on clients.
- %%iif(x,y,z)%%: adds if/else support that returns y if x is true, otherwise returns z.
Thank you, Jorge!
MongoDB Connector in Beta
MongoDB is by far the most popular NoSQL database [1], so supporting it has been key to our vision of prioritizing developer choice as a backend database-agnostic sync engine. In December, we advanced our MongoDB connector to Beta status, meaning that it’s now ready for production use.
Swift Client SDK in Beta
This Beta release introduces a Swift-native wrapper around the core of our Swift SDK generated from our Kotlin Multiplatform SDK. This delivers a more intuitive, Swift-friendly interface with improved type-safety. Other challenges were also addressed, such as introducing multi-threading support for transactions.
SolidJS Hooks for PowerSync Queries
Community member Joakim C kindly shared his %%powersync-solid%% project that implements PowerSync hooks for SolidJS. We’ve added this project under the Notable Community Projects section in our docs. Thanks, Joakim!
New Tutorial Section In Docs
We've released a new Tutorials section in our docs, which already contains some helpful guides, such as:
New Tutorial: Improve Supabase Connector Performance
The demos in our %%powersync-js%% monorepo provide a minimal working example but are not necessarily optimized for performance, and can therefore be improved.
This tutorial demonstrates how to improve the Supabase backend connector’s performance by implementing two batching strategies that reduce the number of database operations for processing uploads to Supabase.
New Tutorial: Use AWS S3 for Attachment Storage
This tutorial covers how to use AWS S3 for handling attachments in our React Native To-Do List example app.
New Tutorial: Using our Attachment Helper for PDF Attachments
The current version of our React Native To-Do List example app implements a %%PhotoAttachmentQueue%% class which enables photo attachments (specifically JPEG) to be synced. This tutorial will guide you on the changes needed to support PDF attachments instead.
New Tutorial: How to Perform a Cascading Delete
Since PowerSync utilizes SQLite views on the client-side instead of standard tables, SQLite features like constraints, foreign keys, or cascading deletes are not available. Currently, there is no direct support for cascading deletes on the client. However, you can achieve this in two different ways, one of which is covered in this tutorial.
New Tutorial: Generating Development Tokens for Self-Hosted Instances
Development tokens are useful for:
- Getting started quickly without implementing full authentication configuration
- Sanity-checking your Sync Rules configuration (whether they were applied correctly)
- Temporarily impersonating a specific user to debug specific issues
This tutorial shows how.
Community Focus
Contributions
Thank you to these contributors!
- js2702 for 2x new Sync Rules functions,
- joakimbeng for SolidJS hooks,
- mkieselmann for adding missing healthcheck endpoints to the PowerSync Service, and
- LucDeCaf for adding support for EdDSA and ECDSA signing algorithms when generating custom JWTs.
Developer Case Study: Aspen Square
Chris Primavera joined us to discuss how Aspen Square uses PowerSync in their property operations management app.
That's it for the December update, happy coding!