* [AI] Fix SimpleFin batch sync crash when accounts are missing from response When SimpleFin doesn't return data for all requested accounts during batch sync, the code crashed with a TypeError accessing properties on undefined, resulting in a generic "internal error" message for users. This fix: - Adds a guard in simpleFinBatchSync for missing account data, returning an ACCOUNT_MISSING error instead of crashing - Propagates error entries from the SimpleFin response's errors map for accounts that have no data entry - Adds a user-friendly ACCOUNT_MISSING error message in the UI suggesting to unlink and relink the account - Adds test cases covering both scenarios https://claude.ai/code/session_01XbHgxxrXYR3UTyW6VmYj47 * Add release notes for PR #7152 * [AI] Fix SimpleFIN batch sync error_code TypeError Fix "Cannot read properties of undefined (reading 'error_code')" that occurs during SimpleFIN batch sync by: 1. Adding null check for downloadSimpleFinTransactions result in simpleFinBatchSync (sync.ts) - the function can return undefined when user token is missing 2. Adding .catch() handler on individual processBankSyncDownload promises so a single account failure doesn't crash the entire batch via Promise.all rejection 3. Using optional chaining on syncResponse.res?.error_code in app.ts and handling the case where res is undefined with proper error reporting https://claude.ai/code/session_01XbHgxxrXYR3UTyW6VmYj47 * [AI] Fix SimpleFin batch sync to emit ACCOUNT_MISSING for empty payloads In the batch sync path, if a per-account download payload is an empty object or is missing the transactions array, processBankSyncDownload would crash and the error would be caught as INTERNAL_ERROR. Now we check for these cases explicitly and emit ACCOUNT_MISSING instead, while still allowing entries with error_code to propagate their specific error. https://claude.ai/code/session_01XbHgxxrXYR3UTyW6VmYj47 --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Getting Started
Actual is a local-first personal finance tool. It is 100% free and open-source, written in NodeJS, it has a synchronization element so that all your changes can move between devices without any heavy lifting.
If you are interested in contributing, or want to know how development works, see our contributing document we would love to have you.
Want to say thanks? Click the ⭐ at the top of the page.
Key Links
- Actual discord community.
- Actual Community Documentation
- Frequently asked questions
Installation
There are four ways to deploy Actual:
- One-click deployment via PikaPods (~1.40 $/month) - recommended for non-technical users
- Managed hosting via Fly.io (~1.50 $/month)
- Self-hosted by using a Docker image
- Local-only apps - downloadable Windows, Mac and Linux apps you can run on your device
Learn more in the installation instructions docs.
Ready to Start Budgeting?
Read about Envelope budgeting to know more about the idea behind Actual Budget.
Are you new to budgeting or want to start fresh?
Check out the community's Starting Fresh guide so you can quickly get up and running!
Are you migrating from other budgeting apps?
Check out the community's Migration guide to start jumping on the Actual Budget train!
Documentation
We have a wide range of documentation on how to use Actual, this is all available in our Community Documentation, this includes topics on Budgeting, Account Management, Tips & Tricks and some documentation for developers.
Contributing
Actual is a community driven product. Learn more about contributing to Actual.
Code structure
The Actual app is split up into a few packages:
- loot-core - The core application that runs on any platform
- desktop-client - The desktop UI
- desktop-electron - The desktop app
More information on the project structure is available in our community documentation.
Feature Requests
Current feature requests can be seen here. Vote for your favorite requests by reacting 👍 to the top comment of the request.
To add new feature requests, open a new Issue of the "Feature Request" type.
Translation
Make Actual Budget accessible to more people by helping with the Internationalization of Actual. We are using a crowd sourcing tool to manage the translations, see our Weblate Project. Weblate proudly supports open-source software projects through their Libre plan.
Repo Activity
Sponsors
Thanks to our wonderful sponsors who make Actual Budget possible!
