After seeing our user base double from July through September, momentum has continued with another record for new users in October. To support this growth, we’ve created a new team of exceptional engineers focused on developer success, headed up by Mike Barnes. Last week, the team was joined by Hein von Stein — welcome Hein! We’ve been hard at work shipping too, with multiple releases every week in October. Let’s look at the highlights:
MongoDB Now Supported In PowerSync Cloud
After initially releasing support for MongoDB to our self-hosted Open Edition, we’ve added the ability to connect PowerSync Cloud instances to MongoDB through the PowerSync Dashboard. PowerSync Cloud can connect to either MongoDB Atlas or self-hosted MongoDB environments. It’s an important milestone for our partnership with MongoDB, which was also announced in October.
The short turnaround of this release was made possible because of the new modular architecture of the PowerSync Service.
MySQL Now Supported As Source Database
The modular architecture of the PowerSync Service also paved the way for us to implement support for MySQL as a source database. Although recently less prominent than Postgres, MySQL is still a wildly popular database, and we’re excited about the increased flexibility this additional option will give developers.
MySQL support is in alpha and available in PowerSync Cloud as well as self-hosted PowerSync (Open Edition & Enterprise Self-Hosted Edition).
A Gentler Introduction To Sync Rules
Dominic Bauer wrote a helpful introduction: Sync Rules from First Principles: Partial Replication to SQLite. This is a great starting point for understanding their purpose, structure and operation. Thanks Dom!
Major Client-Side Performance Improvements
As part of a multi-month project to boost performance across our entire stack, we released version 0.3.0 of our %%powersync-sqlite-core%% extension, which addresses performance bottlenecks during incremental sync.
Previously, incremental sync had overhead proportional to the number of synced rows, which typically caused noticeable latency when syncing around 10k-100k+ rows. Now, clients can effectively sync an "unlimited" number of rows without any overhead. Of course, the local storage used and the time for initial sync will still be proportional to the number of rows synced to the client.
This has been released to all client SDKs: upgrade to the latest version to receive this update.
See the release message on the PowerSync Discord
New Docs Site Live
We know how important high-quality documentation is to overall developer experience, so we’ve been investing in upgrading our docs site. It recently went live and we think there’s a lot to love, including:
- Tabs for easily navigating higher-level topics
- Faster loading times
- Syntax highlighting is back!
- Light/dark mode
- (Good) AI-enabled search
- Better styling
Introducing Advanced Instance Monitoring And Alerting
We announced major new monitoring and alerting features for PowerSync Cloud users:
Instance logs are now available for all plans, accessible in the PowerSync Dashboard header.
Fully configurable issue and metric alerting is also available on the Team and Enterprise plans, and issue alerts for fatal issues will come to the Pro plan soon. Webhooks are currently available for wiring up alert notifications to external systems, while support for email alert notifications is planned.
OP-SQLite Supported in React Native SDK, Enabling Client-Side Encryption
We’re excited to add OP-SQLite to our React Native SDK because it allows developers to set up encryption through SQLCipher.
We’re excited to announce support for OP-SQLite in our React Native SDK as an alternative to the %%react-native-quick-sqlite%% package. OP-SQLite has become our preferred SQLite library for React Native.
The support for OP-SQLite also allowed us to implement support for SQLCipher on React Native, enabling client-side database encryption. Support for SQLCipher in our Flutter/Dart client SDK is coming soon.
See the package README to get started
Support for Suspense in React Client SDK
We’ve added support for React Suspense which allows you to suspend rendering parts of an app until a particular condition is met (such as waiting for data to load).
Specifically, the %%useSuspenseQuery%% hook allows you to access the results of a watched query, but its loading and fetching states are handled through %%<Suspense>%%, which, for example, allows you to display a fallback until data has finished loading.
TanStack Query Integration Now Available (Alpha)
In addition to supporting React Suspense, we also implemented an integration with TanStack Query, enabling developers to use its powerful asynchronous state management features for React and React Native, including query caching.
Swift Package Manager Now Supported
We’ve released a version of our %%powersync-sqlite-core%% package that’s compatible with Swift Package Manager (SPM), meaning Swift developers are no longer required to use the Cocoapods version and can remove that reference from their applications.
Include it in your Swift projects with this GitHub URL:
https://github.com/powersync-ja/powersync-sqlite-core-swift
Community Focus
High-fives to community members Omnicpie and LucDeCaf who contributed with PRs this month. We had pull requests adding the ability to set client parameters to our diagnostics app and updating the schema generated by the diagnostics app to use the latest Schema and Table syntax. Both are super useful!
Developer Case Study: Blueprint / Friend
Kei Otani joined us to discuss his AI-enabled app for people in Japan who want to practice English.
Developer Case Study: Portable PPB
Ben Clark and Campbell Kilgour joined us to discuss their infield gold detection app.
Developer Case Study: Octologs
Ben Mahr joined us to discuss his scuba diving experiences logging app, Octologs.
Developer Case Study: Xiroi.cat
Guillem Puche joined us to discuss his app for saving and managing inspirational quotes.
That's it for the October update, happy coding!