---
title: Release 25.5.0
description: New release of Actual.
date: 2025-05-03T10:00
slug: release-25.5.0
tags: [announcement, release]
hide_table_of_contents: false
authors: jfdoming
---

This release has many notable improvements. Some highlights:

- Download custom reports as an image
- Merge different transactions into a single transaction
- Run Actual outside of a Docker container without building from source—for more information, please check out the [docs](https://actualbudget.org/docs/install/cli-tool)
- Use Cloudflare Access tunnels to connect to an Actual instance (newly fixed)

<!--truncate-->

**Docker tag: 25.5.0**

#### Features

- [#4219](https://github.com/actualbudget/actual/pull/4219) Add functionality to download custom reports as an image. — thanks @ADRROE
- [#4593](https://github.com/actualbudget/actual/pull/4593) Add option to control whether notes are imported during transaction imports — thanks @iaewing
- [#4739](https://github.com/actualbudget/actual/pull/4739) added ability to merge transactions — thanks @alecbakholdin
- [#4798](https://github.com/actualbudget/actual/pull/4798) Add new sync-server CLI tool to allow users to run the server with one command — thanks @MikesGlitch
- [#4807](https://github.com/actualbudget/actual/pull/4807) Adds a feature to resize the category names in the budget table. — thanks @misu-dev

#### Enhancements

- [#4421](https://github.com/actualbudget/actual/pull/4421) Added `ACTUAL_USER_CREATION_MODE=login` enviroment variable to create users on login — thanks @lelemm
- [#4446](https://github.com/actualbudget/actual/pull/4446) OpenID first login changed to confirm password — thanks @lelemm
- [#4484](https://github.com/actualbudget/actual/pull/4484) [Mobile] Drag and drop to reorder expense categories in budget page (only supports for Chromium-based browsers for now) — thanks @joel-jeremy
- [#4567](https://github.com/actualbudget/actual/pull/4567) Don't include hidden categories or groups in totals in tracking budget. — thanks @psybers, @lelemm, & @youngcw
- [#4584](https://github.com/actualbudget/actual/pull/4584) Show closed accounts on mobile Accounts page. — thanks @alcroito
- [#4599](https://github.com/actualbudget/actual/pull/4599) [Mobile] Drag and drop to reorder expense category groups in budget page (only supports for Chromium-based browsers for now). — thanks @joel-jeremy
- [#4692](https://github.com/actualbudget/actual/pull/4692) Add previous/next month buttons to the MonthPicker — thanks @misu-dev
- [#4714](https://github.com/actualbudget/actual/pull/4714) You can now unlink accounts from bank sync settings — thanks @Triscal
- [#4743](https://github.com/actualbudget/actual/pull/4743) Add KBCBE (`KBC_KREDBEBB`) to banks with limited history — thanks @bddvlpr
- [#4770](https://github.com/actualbudget/actual/pull/4770) Missing translations [rules and to budget] — thanks @lelemm
- [#4847](https://github.com/actualbudget/actual/pull/4847) Allowing the UI to call internal sync server commands when running in the Desktop app — thanks @MikesGlitch
- [#4857](https://github.com/actualbudget/actual/pull/4857) Flip transaction amounts for Strawberry credit cards — thanks @vincegio

#### Bugfix

- [#4715](https://github.com/actualbudget/actual/pull/4715) Reworked import to accept all amount options at the same time to fix UI lockout when using In/Out mode with existing split columns. — thanks @Gmanicus
- [#4719](https://github.com/actualbudget/actual/pull/4719) Fixed issue where early-posted scheduled transactions used the scheduled future date instead of today's date. — thanks @Bhautik2902
- [#4724](https://github.com/actualbudget/actual/pull/4724) Persist filters in Custom Report on interval or date range change — thanks @tostasmistas
- [#4733](https://github.com/actualbudget/actual/pull/4733) Fixed issue where sidebar wouldn't persist pinning preference on page reload — thanks @alecbakholdin
- [#4735](https://github.com/actualbudget/actual/pull/4735) Got rid of unnecessary warning when developing Actual — thanks @alecbakholdin
- [#4749](https://github.com/actualbudget/actual/pull/4749) Fix template goals not being removed in certain conditions — thanks @youngcw
- [#4756](https://github.com/actualbudget/actual/pull/4756) Gocardless bank sync: improved error handling for initial account linking. — thanks @MatissJanis
- [#4769](https://github.com/actualbudget/actual/pull/4769) Fixed issue with close account flow not properly validating transfer or category — thanks @alecbakholdin
- [#4774](https://github.com/actualbudget/actual/pull/4774) [Mobile] Fix income categories not changing colors based on active month — thanks @joel-jeremy
- [#4780](https://github.com/actualbudget/actual/pull/4780) Add support for longer running SimpleFIN transaction requests — thanks @matt-fidd
- [#4812](https://github.com/actualbudget/actual/pull/4812) Fix crash on transactions table with new transaction popup open — thanks @jfdoming
- [#4825](https://github.com/actualbudget/actual/pull/4825) Fix CLI issue where `ACTUAL_DATA_DIR` env variable was not being respected when no config is present — thanks @MikesGlitch
- [#4836](https://github.com/actualbudget/actual/pull/4836) Fix for returnUrl in OpenID auth — thanks @lelemm
- [#4837](https://github.com/actualbudget/actual/pull/4837) Fixed saving falsy values in saveGlobalPrefs — thanks @alecbakholdin
- [#4838](https://github.com/actualbudget/actual/pull/4838) Fix HTML bug in ofx2json logic — thanks @jfdoming
- [#4844](https://github.com/actualbudget/actual/pull/4844) Reload on all redirects to handle Cloudflare Access expiration. — thanks @rgoldfinger
- [#4845](https://github.com/actualbudget/actual/pull/4845) Escape Payee for Commerzbank RegExp — thanks @misu-dev
- [#4853](https://github.com/actualbudget/actual/pull/4853) Fix load backup modal giving a blank screen when opened in the desktop app — thanks @MikesGlitch
- [#4860](https://github.com/actualbudget/actual/pull/4860) Fix some desktop app menu links — thanks @MikesGlitch
- [#4875](https://github.com/actualbudget/actual/pull/4875) [Mobile] Fix overspent banner showing previously active month's overspent categories. — thanks @joel-jeremy
- [#4880](https://github.com/actualbudget/actual/pull/4880) [Mobile] Fix hidden category groups not being hidden — thanks @joel-jeremy
- [#4881](https://github.com/actualbudget/actual/pull/4881) Fix running balance on split schedule previews — thanks @youngcw
- [#4902](https://github.com/actualbudget/actual/pull/4902) Fix OpenID first login using config.json or ENV vars — thanks @lelemm

#### Maintenance

- [#4544](https://github.com/actualbudget/actual/pull/4544) Use AQL query to query category groups in loot-core server handlers and add a new `categories` query option for `category_groups` table to include/exclude querying of associated categories i.e. `q('category_groups').options({ categories: 'all' }).select('*')` — thanks @joel-jeremy
- [#4547](https://github.com/actualbudget/actual/pull/4547) Extract budget file related server handlers from main.ts to server/budgetfiles/app.ts — thanks @joel-jeremy
- [#4660](https://github.com/actualbudget/actual/pull/4660) Extract auth related server handlers from main.ts to server/auth/app.ts — thanks @joel-jeremy
- [#4662](https://github.com/actualbudget/actual/pull/4662) Extract encryption related server handlers from main.ts to server/encryption/app.ts — thanks @joel-jeremy
- [#4672](https://github.com/actualbudget/actual/pull/4672) Converted IndexedDB files to strict TypeScript. — thanks @MatissJanis
- [#4674](https://github.com/actualbudget/actual/pull/4674) Added initial Playwright tests for Electron — thanks @MikesGlitch
- [#4700](https://github.com/actualbudget/actual/pull/4700) Upgrade to React v19 — thanks @MatissJanis
- [#4710](https://github.com/actualbudget/actual/pull/4710) improving typechecker and lint local performance — thanks @MatissJanis
- [#4740](https://github.com/actualbudget/actual/pull/4740) Fix bump versions script behaviour — thanks @jfdoming
- [#4752](https://github.com/actualbudget/actual/pull/4752) Added Electron Playwright test fixture — thanks @MikesGlitch
- [#4757](https://github.com/actualbudget/actual/pull/4757) add eslint auto-fixer to lint-staged — thanks @MatissJanis
- [#4767](https://github.com/actualbudget/actual/pull/4767) Fix loot core resolution for electron in dev mode — thanks @MikesGlitch
- [#4768](https://github.com/actualbudget/actual/pull/4768) Remove ngrok from electron. In future we'll move to a plugin. — thanks @MikesGlitch
- [#4816](https://github.com/actualbudget/actual/pull/4816) Move loot-core/client codes over to desktop-client package — thanks @joel-jeremy
- [#4824](https://github.com/actualbudget/actual/pull/4824) Slow improvements to Account.tsx (1/many) — thanks @jfdoming
- [#4832](https://github.com/actualbudget/actual/pull/4832) Bump http-proxy-middleware from 3.0.3 to 3.0.5 — thanks @jfdoming
- [#4833](https://github.com/actualbudget/actual/pull/4833) Bump vite from 5.4.8 to 5.4.18 — thanks @jfdoming
- [#4834](https://github.com/actualbudget/actual/pull/4834) Bump nanoid from 3.3.7 to 3.3.11 — thanks @jfdoming
- [#4840](https://github.com/actualbudget/actual/pull/4840) Move sync-server to vitest — thanks @jfdoming
- [#4851](https://github.com/actualbudget/actual/pull/4851) Move crdt to vitest — thanks @jfdoming
- [#4856](https://github.com/actualbudget/actual/pull/4856) Move api/desktop-client/eslint-plugin-actual to the newest vitest — thanks @jfdoming
- [#4859](https://github.com/actualbudget/actual/pull/4859) Move loot-core to vitest — thanks @jfdoming
- [#4862](https://github.com/actualbudget/actual/pull/4862) Move some .d.ts files to .ts — thanks @jfdoming
