Banktivity Document Model and Rewrite
Ian Gillespie (2025):
Banktivity has traditionally been what’s known as a document-based app. It lets you create and open independent files (or documents), each with its own data. In contrast, many modern apps—Music, Calendar, Photos—are library-based. These apps typically have a single window and a unified data set.
We’ve long appreciated the flexibility our document model provides. But in practice, most of our customers use only a single file. And more critically, this architecture makes it much harder to integrate Banktivity with the broader Apple ecosystem.
[…]
The shift from a document-based model to the new Organizer framework marks a major step forward for Banktivity. It simplifies how users interact with their data while laying the foundation for deeper system integration, background syncing, and a more seamless multi-device experience.
This follows MoneyWell also getting rid of the document model. From my perspective, it’s a shame. I prefer the flexibility of being able to have different accounts in different documents, choosing where to store the documents, and even splitting the same account across multiple documents for performance reasons.
Ian Gillespie (2025):
Ledgers contain an entire, independent set of accounts, categories, investments, goals, budget and so on. Many customers will only have one Ledger for the finances they manage. But we also know there is a good number of customers out there that manage finances across family members, non-profits and small businesses – for these customers, support for multiple Ledgers is crucial.
[…]
While UI is what you see, most of the hard work has been in the architecture. The Library framework — the backbone that replaces our old document system — is in place. That means we can now reliably connect your Banktivity User Account with all of your Ledgers, whether local or synced to the cloud.
Refactoring Banktivity from a document-based app into a library-style app was a significant undertaking. It changed some very fundamental assumptions in the code. Ledgers can now be opened and closed in the background, multiple windows and scenes can be active at once, and the Organizer has to coordinate local files, cloud sync, user accounts and application state in ways the old document architecture never had to.
Banktivity 10.0 laid the foundation for that transition. With Banktivity 10.1, a major focus has been strengthening that foundation. We’ve spent a lot of time simplifying the underlying architecture, eliminating race conditions and threading issues, and improving how ledgers are opened, closed and managed.
Previously:
2 Comments RSS · Twitter · Mastodon
It's interesting. For Cashculator I went from library-base to documents instead. Yes, perhaps many customers don't use multiple documents, but there are some do, and there are some benefits. It's easier even for me to try different cases, and easier for customers to send their documents for support. It was a little bit harder for Sync, which I'm planning to release soon, but there is a way to Sync multiple documents, I was inspired to how DEVONthink handles that.
@Jacob Yeah I don’t see it making sync particularly harder except for weird cases like if the user duplicates a document holding an internal sync ID.