---
title: Release 23.12.0
description: New release of Actual.
date: 2023-12-03T10:00
slug: release-23.12.0
tags: [announcement, release]
hide_table_of_contents: false
authors: MatissJanis
---

The release has the following notable improvements:

- Dark theme is complete and no longer an experimental feature
- Transactions are now locked after reconciling
- Mobile: account creation
- Mobile: pull-down-to-sync available in the budget page
- Mobile: swipe up in the footer menu to reveal more pages

We are also proud to announce two new experimental features:

- Custom reports (please report bugs/feedback [here](https://github.com/actualbudget/actual/issues/1918))
- Sankey report (please report bugs/feedback [here](https://github.com/actualbudget/actual/issues/1919))

<!--truncate-->

**Docker tag: 23.12.0**

### Actual

Version: 23.12.0

#### Features

- [#1739](https://github.com/actualbudget/actual/pull/1739) Added a Sankey chart report as an experimental feature. — thanks @shaankhosla
- [#1789](https://github.com/actualbudget/actual/pull/1789) Lock transactions after reconciliation. — thanks @zachwhelchel
- [#1791](https://github.com/actualbudget/actual/pull/1791) Create and implement a customizable charts page. Currently hidden under feature flag (experimental). To include ability to save charts and show tiles on Overview page (future PR) — thanks @carkom
- [#1925](https://github.com/actualbudget/actual/pull/1925) Dark theme is live!! — thanks @carkom

#### Enhancements

- [#1758](https://github.com/actualbudget/actual/pull/1758) Swipe up mobile navbar to reveal more menus. — thanks @joel-jeremy
- [#1780](https://github.com/actualbudget/actual/pull/1780) Goals: Add indicator of goal status. Add db entries for saving the goal, and for the template json. — thanks @shall0pass & @youngcw
- [#1788](https://github.com/actualbudget/actual/pull/1788) Added option to select in/out field during import. — thanks @Jessseee
- [#1798](https://github.com/actualbudget/actual/pull/1798) Consolidating and making more consistent the warning and upcoming colors. Also includes some dark mode fixes. — thanks @carkom
- [#1833](https://github.com/actualbudget/actual/pull/1833) Not allowed duplicated Category names in Category Groups — thanks @Shazib
- [#1853](https://github.com/actualbudget/actual/pull/1853) Mobile create account. — thanks @joel-jeremy
- [#1858](https://github.com/actualbudget/actual/pull/1858) Mobile budget pull down to sync. — thanks @joel-jeremy
- [#1862](https://github.com/actualbudget/actual/pull/1862) Allow month names and abbreviations in dates (e.g. "December 24 2020") when importing — thanks @jamescostian
- [#1874](https://github.com/actualbudget/actual/pull/1874) Standardizes mobile colors so that the mobile view feels much more unified. — thanks @carkom
- [#1876](https://github.com/actualbudget/actual/pull/1876) Support import of OFX transactions of type INVSTMTMSGSRSV1 — thanks @joel-jeremy
- [#1880](https://github.com/actualbudget/actual/pull/1880) Mobile report budget — thanks @joel-jeremy
- [#1887](https://github.com/actualbudget/actual/pull/1887) Updates dark theme sidebar color and clean up theme files. — thanks @carkom
- [#1900](https://github.com/actualbudget/actual/pull/1900) Larger mobile autocomplete component fonts and paddings. — thanks @joel-jeremy
- [#1944](https://github.com/actualbudget/actual/pull/1944) Create category rules during ynab imports — thanks @twk3
- [#1980](https://github.com/actualbudget/actual/pull/1980) Validates minimum node version to 18.12.0 for @actual-app/api npm package — thanks @Marethyu1

#### Bugfix

- [#1765](https://github.com/actualbudget/actual/pull/1765) Dark mode - darker tint for pageTextLink. — thanks @Evomatic
- [#1820](https://github.com/actualbudget/actual/pull/1820) Fix styling of transaction page on mobile. — thanks @KaiBelmo
- [#1836](https://github.com/actualbudget/actual/pull/1836) UPDATES NYNAB import to support importing transactions that contain sub transactions that are account transfers — thanks @Marethyu1
- [#1840](https://github.com/actualbudget/actual/pull/1840) Schedule creation modal notify user of weekend skip option — thanks @sethgillett
- [#1864](https://github.com/actualbudget/actual/pull/1864) Make Select All respect filters and splits — thanks @jamescostian
- [#1867](https://github.com/actualbudget/actual/pull/1867) Fix account filter for budgeted and offbudget accounts, fixes #1577 — thanks @sreetamdas
- [#1885](https://github.com/actualbudget/actual/pull/1885) Fix crash when hitting undo after applying a rule to some transactions — thanks @jfdoming
- [#1911](https://github.com/actualbudget/actual/pull/1911) Fixing duplicate color issue. — thanks @carkom
- [#1916](https://github.com/actualbudget/actual/pull/1916) Fix mobile accounts page padding regression. — thanks @joel-jeremy
- [#1917](https://github.com/actualbudget/actual/pull/1917) Goals: Fix infinite loop situation with Schedule keyword — thanks @shall0pass
- [#1921](https://github.com/actualbudget/actual/pull/1921) Experimental OFX parser: Support multiple months in OFX file — thanks @joel-jeremy
- [#1926](https://github.com/actualbudget/actual/pull/1926) Fix issue with electron builds being stuck on a blank screen. — thanks @Shazib
- [#1929](https://github.com/actualbudget/actual/pull/1929) Fix flickering scroll bar that may appear when interacting with the new transaction input amount. — thanks @miqh
- [#1930](https://github.com/actualbudget/actual/pull/1930) Bug fixes for custom reports. — thanks @carkom
- [#1933](https://github.com/actualbudget/actual/pull/1933) Fix switching budget from rollover budget to report budget and immediately back does not work — thanks @paulsukow
- [#1934](https://github.com/actualbudget/actual/pull/1934) Sets minimum node version to 18.12.0 for @actual-app/api npm package — thanks @Marethyu1
- [#1938](https://github.com/actualbudget/actual/pull/1938) Fix space-comma format for newer NodeJS versions (18.18, and 21.x), fixes #1937 — thanks @twk3
- [#1951](https://github.com/actualbudget/actual/pull/1951) Consistent button sizes in budget title bar — thanks @joel-jeremy
- [#1955](https://github.com/actualbudget/actual/pull/1955) "Transfer" and "Off Budget" categories in mobile transaction page — thanks @joel-jeremy
- [#1962](https://github.com/actualbudget/actual/pull/1962) Fix broken modals. Unlock transactions moved to another account. — thanks @zachwhelchel
- [#1965](https://github.com/actualbudget/actual/pull/1965) Fix mobile budget cell save issue — thanks @joel-jeremy
- [#1970](https://github.com/actualbudget/actual/pull/1970) Style: change GoCardless success button color — thanks @MatissJanis
- [#1975](https://github.com/actualbudget/actual/pull/1975) Bug fixes for cancel add category group. — thanks @williamk19
- [#1976](https://github.com/actualbudget/actual/pull/1976) Fix bug in rule transaction apply preventing amount overrides — thanks @jfdoming
- [#1984](https://github.com/actualbudget/actual/pull/1984) Goals: Fix Schedule over-budget condition — thanks @shall0pass
- [#1987](https://github.com/actualbudget/actual/pull/1987) Fix rule ranker in API. — thanks @carkom
- [#1992](https://github.com/actualbudget/actual/pull/1992) Fix locked amount sign in schedule editor — thanks @youngcw
- [#2000](https://github.com/actualbudget/actual/pull/2000) Goals: Fix priority sorting — thanks @youngcw

#### Maintenance

- [#1834](https://github.com/actualbudget/actual/pull/1834) Convert Titlebar, BudgetPageHeader, DynamicBudgetTable, Tooltips components to Typescript. — thanks @MikesGlitch
- [#1860](https://github.com/actualbudget/actual/pull/1860) Added dark mode VRT (screenshot) tests — thanks @MatissJanis
- [#1868](https://github.com/actualbudget/actual/pull/1868) Consolidating colors so they are more consistent across the app from one page to the next — thanks @carkom
- [#1871](https://github.com/actualbudget/actual/pull/1871) Consolidating colors so they are more consistent across the app from one page to the next. — thanks @carkom
- [#1875](https://github.com/actualbudget/actual/pull/1875) Removing the last of the static colors and replacing with theme colors. — thanks @carkom
- [#1879](https://github.com/actualbudget/actual/pull/1879) Convert BudgetSummaries, MonthPicker, SidebarCategory components to Typescript. — thanks @MikesGlitch
- [#1888](https://github.com/actualbudget/actual/pull/1888) Goals: Move goal target calculations to individual files. — thanks @shall0pass
- [#1893](https://github.com/actualbudget/actual/pull/1893) Enabled `react/no-unstable-nested-components` eslint rule. — thanks @MatissJanis
- [#1895](https://github.com/actualbudget/actual/pull/1895) Add budget tables to AQL schema — thanks @youngcw
- [#1897](https://github.com/actualbudget/actual/pull/1897) Convert ExpenseGroup, ExpenseCategory, IncomeCategory components to Typescript. — thanks @MikesGlitch
- [#1902](https://github.com/actualbudget/actual/pull/1902) Upgrade `yarn` to v4 and better-sqlite3 to v9.1.1. — thanks @MatissJanis
- [#1909](https://github.com/actualbudget/actual/pull/1909) Type hardening action operator in rules.tsx — thanks @Marethyu1
- [#1923](https://github.com/actualbudget/actual/pull/1923) Convert CloseAccount, AccountAutocomplete, SavedFilterAutocomplete, PayeeAutocomplete components to Typescript. — thanks @MikesGlitch
- [#1936](https://github.com/actualbudget/actual/pull/1936) Refactor AmountInput component to TypeScript. — thanks @kymckay
- [#1941](https://github.com/actualbudget/actual/pull/1941) Ported `GoCardless` file to TypeScript — thanks @MatissJanis
- [#1942](https://github.com/actualbudget/actual/pull/1942) Ported `global-events` to TypeScript — thanks @MatissJanis
- [#1946](https://github.com/actualbudget/actual/pull/1946) Refactor DiscoverSchedules component to tsx and enrich types for schedules discover endpoint. — thanks @muhsinkamil
- [#1948](https://github.com/actualbudget/actual/pull/1948) Refactor Payee table to TypeScript and harden generic `Table` component typing. — thanks @kymckay
- [#1949](https://github.com/actualbudget/actual/pull/1949) eslint: disallow using 'var': no-var rule — thanks @MatissJanis
- [#1950](https://github.com/actualbudget/actual/pull/1950) Split up large payee management components file. — thanks @kymckay
- [#1956](https://github.com/actualbudget/actual/pull/1956) ESLint prefer-const rule — thanks @joel-jeremy
- [#1958](https://github.com/actualbudget/actual/pull/1958) ESLint prefer-const rule — thanks @joel-jeremy
- [#1959](https://github.com/actualbudget/actual/pull/1959) Eslint: enable object-shorthand:properties eslint rule — thanks @MatissJanis
- [#1960](https://github.com/actualbudget/actual/pull/1960) Make screenshot comparisons more strict to improve reliability — thanks @MatissJanis
- [#1972](https://github.com/actualbudget/actual/pull/1972) Update ConfirmCategoryDelete, GoCardlessExternalMsg, ManageRulesModal to tsx — thanks @MikesGlitch

### Actual Server

Version: 23.12.0

#### Enhancements

- [#267](https://github.com/actualbudget/actual-server/pull/267) Ability to add and run database/fs migrations — thanks @MatissJanis
- [#282](https://github.com/actualbudget/actual-server/pull/282) Improved error handling of GoCardless issues — thanks @MatissJanis

#### Bugfix

- [#274](https://github.com/actualbudget/actual-server/pull/274) Add "docker.io/" registry prefix to docker compose image — thanks @Valloric
- [#275](https://github.com/actualbudget/actual-server/pull/275) Fix: add missing migrations folder for docker — thanks @MatissJanis
- [#278](https://github.com/actualbudget/actual-server/pull/278) Fix: GoCardless bank sync not working as expected after last migration PR merge — thanks @MatissJanis
- [#281](https://github.com/actualbudget/actual-server/pull/281) Fix: `ERR_UNSUPPORTED_ESM_URL_SCHEME` by upgrading node-migrate to v2.0.1 — thanks @MikesGlitch & @MatissJanis
- [#283](https://github.com/actualbudget/actual-server/pull/283) Fix: non-unique transactionId values for Belfius bank causing missing data. — thanks @Nudded
- [#285](https://github.com/actualbudget/actual-server/pull/285) Fix: add fixes for BNP Paribas Fortis and Hello Bank — thanks @feliciaan

#### Maintenance

- [#277](https://github.com/actualbudget/actual-server/pull/277) Upgrade `yarn` to v4 and `better-sqlite3` to v9.1.1 — thanks @MatissJanis
