Reckoner Update September 2025


I finally have a path forward toward a more stable synchronization service. This has been a long time coming, but it is the most complex problem for Reckoner. Let me explain.

🔄 Synchronization

In general, we can divide privacy respecting financial trackers into two categories, the server based and the local data tracker. In general, a server based tracker makes the server the source of truth and clients don’t store any data. Firefly III takes this approach. However, these generally don’t work unless connected to the hosted server.

Local trackers solve that problem by making the primary source of the data on the client device. However, there are a host of issues that pop up with a client centric data. Synchronization isn’t just copying the database, you can have independent changes from the individual clients and you need to handle cases when different clients alter the same data. However, this infrastructure is more robust due to each client having a full copy of the data.

Solving Reckoner’s Sync

There were several issues with the way I initially setup synchronization in Reckoner. The first of the issues is that the list of modified data on the client was inferred by checking data update timestamps. This was the same timestamp used to query the server for changed data. Additionally, certain pieces of data were bundled together into a larger bundle to better obfuscate data.

I ultimately had my moment of inspiration when reading about PowerSync’s architecture. Instead of implicitly getting changes by update date, I should add changed items to a queue of data to be uploaded. Additionally, I flattened out the data being synced so that every data item with and update date would be synced as it’s own row. Finally, I removed soft deletions (a delete date field) to marking the remote row as deleted to have deletes sync.

However, the biggest improvement has been utilizing PocketBase’s bulk sync. This drastically improves the upload time and will be required going forward.

I am very close to releasing this. I expect to have it done later this month. I need to finish a unit test of the migrations and more workflow testing for synchronization. This will be a breaking sync change requiring users to sync there data from an existing device.

🛜 Aggregator Support

After some research, Reckoner will first start supporting SimpleFIN as the first aggregator. This will be very privacy respecting as we can setup aggregator support directly in the client application. I might add it to a custom extension of PocketBase as an option for when people need to support multiple devices. Otherwise I will make synchronization even more complex by needing to handle multiple clients querying SimpleFIN. Maybe that’s OK, but more investigation is needed.

Until next time, take care!



← Reckoner Update August 2025

Reckoner Update October 2025 →