Back to Actual

Release 26.4.0

packages/docs/blog/2026-04-06-release-26-4-0.md

26.5.017.0 KB
Original Source

This release contains the following notable improvements, along with numerous fixes:

  • Reorder transactions by drag and drop when they share the same date
  • Concentric donut charts that show category groups in an outer ring
  • Smarter autocomplete with an improved search algorithm for payees and categories
  • Experimental: Payee Locations: Actual can now remember where you've used a payee and suggest payees based on nearby locations
  • Experimental: Actual CLI: a new command-line tool for interacting with your budget, see the docs to get started
<!--truncate-->

Docker Tag: 26.4.0

Version: v26.4.0

Features

  • #6157 MVP for payee locations support, including YNAB5 import — thanks @mannkind
  • #6653 Add drag&drop reordering for transactions within the same day — thanks @StephenBrown2
  • #7208 Actual-cli: tool for accessing your budget via the command line. Useful for AI agents — thanks @MatissJanis

Enhancements

  • #6414 Add the ability to use Formula Rules when setting the split amount. — thanks @sjones512
  • #6620 Add notes to monthly budget cell — thanks @erwannc
  • #6693 Display/save refill templates — thanks @jfdoming
  • #6903 Add a new budgeted type to the custom report widget. — thanks @diepala
  • #6972 Improve autocomplete sorting with tiered ranking for payee and category dropdowns — thanks @J-LCRX
  • #7005 Change Titlebar 'Sync' to syncing icon only to alleviate confusion with Bank Sync. Add disabled state and aria disabled label when offline. — thanks @Juulz
  • #7038 Introduce concentric donut chart for categories in custom reports — thanks @karimkodera
  • #7069 Converted Electron backups to zip with metadata.json for easy importing — thanks @MikesGlitch
  • #7071 Refactor account hooks to return full React Query states, enhancing data handling and component integration. — thanks @joel-jeremy
  • #7078 Add BUDGET_QUERY and QUERY_EXTRACT functions for formula-based budget analysis. — thanks @sys044
  • #7095 Add New Taiwan Dollar (TWD) to the list of available currencies. — thanks @yhc0712
  • #7101 Add an option to swap payee/memo when importing transaction from file. — thanks @sylvercode
  • #7111 Reload server version when visibility to the page changes — thanks @MatissJanis
  • #7139 Add "only import transactions since" to import dialog — thanks @kivikakk
  • #7144 Sort theme catalog items alphabetically by name for improved user interface organization. — thanks @MatissJanis
  • #7145 Custom Themes: separate light and dark theme options when selecting "system default" theme. — thanks @MatissJanis
  • #7151 Add "Notion-inspired Dark Mode" custom theme to the theme catalogue — thanks @vcruzdesigns
  • #7181 Enable strict linting for template expressions, ensuring better error handling and message clarity. — thanks @MatissJanis
  • #7188 Add a confirmation modal when users merge payees in /payees — thanks @AsgerMogensen
  • #7194 Add light/dark mode specificity to custom themes — thanks @MatissJanis
  • #7207 Add admin and password authentication requirements for changing passwords in sessions. — thanks @MatissJanis
  • #7236 Custom Themes: allow adding custom overrides to themes via the textarea box — thanks @MatissJanis
  • #7239 Custom Themes: allow using a custom font — thanks @MatissJanis
  • #7240 cli: improved aql support — thanks @MatissJanis

Bugfixes

  • #6741 When filtering for accounts in e.g. the net worth graph the modal closes the filter tooltip so it's impossible to add e.g. accounts to the filter. — thanks @mnil
  • #6926 Import: added override option allowing users to control whether previously deleted (or merged) transactions are reimported. — thanks @totallynotjon
  • #7041 [Mobile] Show running balance on upcoming transactions when respective setting is toggled — thanks @LeviBorodenko
  • #7047 Make mobile account page colors more consistent — thanks @Juulz
  • #7057 Fix skipping schedules that move before weekend — thanks @Triscal
  • #7092 Stop font size fluctuations showing in summary cards — thanks @matt-fidd
  • #7118 Fix budget analysis report padding when the value is large. — thanks @mnil
  • #7125 Refactor error handling to isolate errors per account in SimpleFin batch synchronization. — thanks @MatissJanis
  • #7146 Fix migrations retrieval when running the docker images — thanks @MikesGlitch
  • #7149 Fix CSV import incorrectly parsing transaction amounts that contain trailing whitespace (e.g. amounts from Excel-saved CSV files). — thanks @mibragimov
  • #7152 Handle missing accounts in SimpleFin batch sync with localized error messaging for users. — thanks @MatissJanis
  • #7155 Fixed a privilege escalation issue affecting password changes — thanks @MatissJanis
  • #7166 Fixed a bug where selecting an item in autocomplete on mobile required two taps. — thanks @Alieksieiev0
  • #7172 Fix multi-tab sync by sharing a single backend via SharedWorker — thanks @MikesGlitch
  • #7177 Fix schedule link being lost when merging transactions — thanks @okxint
  • #7179 Number formatting: normalize apostrophe-dot thousands separator to U+2019 for consistency across Node/ICU versions. — thanks @StephenBrown2
  • #7191 Fix Spending Analysis report to use tracking budgets when tracking budgeting is enabled — thanks @pranayseela
  • #7202 Fix navigator access error in Node.js environments by adding existence checks and defaults. — thanks @MatissJanis
  • #7219 Fix adm-zip dependency resolution in @actual-app/core — thanks @MatissJanis
  • #7243 Fix balance_current not syncing to API clients after bank sync — thanks @lwarrenthompson
  • #7245 Fix schedule advancement tracking by saving timestamps only on successful sync completions. — thanks @dearlordylord
  • #7264 This PR fixes a bug where the transaction context menu (right-click) would remain stuck on the screen if opened while a transaction cell was in edit mode. — thanks @nathaliaacouto
  • #7267 Fix mobile transactions view hiding older transactions when hiding reconciled transactions is enabled — thanks @matt-fidd
  • #7268 Fix transaction amounts sometimes not being saved when adding through the desktop view on a touch device — thanks @matt-fidd
  • #7272 Fixed an issue that prevented category's leftover from being able to cover an overbudgeted amount. — thanks @JSkinnerUK
  • #7274 Fixes a bug that prevented scheduled transactions from being included in the selected balance when selecting multiple transactions — thanks @iaewing
  • #7275 Fix a typo in the Repair Transactions paragraph — thanks @tdavis6
  • #7305 Amend maintainer points counting script docs file filter — thanks @matt-fidd
  • #7309 Change maintainer points counting script to fetch the release note from the PR directly — thanks @matt-fidd
  • #7322 Fix mobile Post transaction today on All Accounts, On budget, and Off budget lists so scheduled previews post with today's date, matching single-account mobile and desktop. — thanks @pranayseela
  • #7334 Fix password login functionality when OIDC is enabled, ensuring proper authentication method handling. — thanks @MatissJanis
  • #7361 Fix unrecoverable UI error after login when command bar encounters items with missing names. — thanks @MatissJanis
  • #7372 Fix split transaction popover not rendering properly — thanks @youngcw & @victle

Maintenance

  • #6809 Remove cyclic dependency between API and loot-core — thanks @MatissJanis
  • #7044 Bump ajv dependency — thanks @matt-fidd
  • #7050 Remove reliance on the API package in YNAB importers — thanks @MatissJanis
  • #7051 TypeScript: strengthen schedule type — thanks @MatissJanis
  • #7053 TypeScript: move ImportTransactionsOpts from the api package to loot-core — thanks @MatissJanis
  • #7055 Lint: add "--quiet" flag to stop reporting warnings — thanks @MatissJanis
  • #7062 TypeScript: start using composite references — thanks @MatissJanis
  • #7073 Bump bn.js dependency — thanks @matt-fidd
  • #7074 Move some sync-server utilities to TypeScript — thanks @jfdoming
  • #7075 Move migrations CI script to typescript + ci-actions — thanks @jfdoming
  • #7091 TypeScript: clean up some types — thanks @MatissJanis
  • #7096 Fix API reference documentation discrepancies — thanks @tifandotme
  • #7104 Allow "unfreeze" workflow to work in fork PRs — thanks @MatissJanis
  • #7105 Add reference to AGENTS.md in CLAUDE.md for improved documentation connectivity. — thanks @MatissJanis
  • #7107 Skip AI-generated release notes for PRs originating from release/* branches to avoid redundancy. — thanks @jfdoming
  • #7117 Automatically publish to Flathub when the GitHub release is published — thanks @MikesGlitch
  • #7140 Bump express-rate-limit dependency version from 8.2.1 to 8.3.0 for improvements. — thanks @dependabot
  • #7141 Adding more retries to the Docker test in the pipeline — thanks @MikesGlitch
  • #7142 Refactor TypeScript typings by moving window import to globals.ts for cleaner configuration. — thanks @MatissJanis
  • #7153 Establish centralized AI governance documentation for commit and pull request standards. — thanks @MatissJanis
  • #7163 Lint: fix typescript/unbound-method issues — thanks @MatissJanis
  • #7168 Lint: fix 'typescript/no-floating-promises' and 'typescript/require-array-sort-compare' issues — thanks @MatissJanis
  • #7180 Refactor TypeScript build process to use project references for improved incremental builds. — thanks @MatissJanis
  • #7183 TypeScript: upgrade to tsgo — thanks @MatissJanis
  • #7184 Upgrade to Vite 8 — thanks @jfdoming
  • #7187 Remove deep-equal package — thanks @jfdoming
  • #7193 Elevate typescript/no-for-in-array lint rule from warning to error, refactor affected code. — thanks @MatissJanis
  • #7195 Remove crdt import aliases in favour of package.json exports — thanks @MatissJanis
  • #7196 lint: enable more lint rules that should be fixed over time — thanks @MatissJanis
  • #7199 Fix documentation formatting by removing duplicated content for improved readability in accounts section. — thanks @gaffneyd4
  • #7200 Publish loot-core package and rename it to "@actual-app/core" — thanks @MatissJanis
  • #7209 api: simplify bundling by removing loot-core type inlining — thanks @MatissJanis
  • #7222 Mid-month dependency update — thanks @matt-fidd
  • #7223 Bump react types — thanks @matt-fidd
  • #7224 Bump react-spring — thanks @matt-fidd
  • #7227 Migrate get-next-package-version.js to TypeScript — thanks @jfdoming
  • #7229 Add Yarn constraints to ensure consistent dependency versions across all workspace packages. — thanks @MatissJanis
  • #7230 Run yarn install when switching branches if yarn.lock changed — thanks @MatissJanis
  • #7232 Remove development theme from all configurations and components across multiple packages. — thanks @MatissJanis
  • #7234 Bump GitHub actions versions — thanks @matt-fidd
  • #7248 Add post-merge hook to automatically install dependencies when yarn.lock changes after merges. — thanks @MatissJanis
  • #7286 Bump yaml from 1.10.2 to 1.10.3 — thanks @dependabot
  • #7287 Bump picomatch from 2.3.1 to 2.3.2 — thanks @dependabot
  • #7293 Bump convict from 6.2.4 to 6.2.5 — thanks @dependabot
  • #7298 Bump handlebars from 4.7.8 to 4.7.9 — thanks @dependabot
  • #7306 Bump brace-expansion from 1.1.12 to 1.1.13 — thanks @dependabot
  • #7307 Bump node-forge from 1.3.2 to 1.4.0 — thanks @dependabot
  • #7308 Bump axios from 1.12.2 to 1.14.0 — thanks @dependabot
  • #7343 Pin axios dependency to version 1.14.0 to mitigate vulnerabilities in version 1.14.1. — thanks @MatissJanis
  • #7348 Bump @xmldom/xmldom from 0.8.11 to 0.8.12 — thanks @dependabot