Wealthfolio logo
Download
3.9.0
Sep 26, 2026

Wealthfolio 3.9.0 — Release Notes

Wealthfolio 3.9 adds separate profiles, app lock, optional database encryption, and portable backups. You can customize your Insights overview, exclude categories from Spending, and use a simpler device setup flow. This release also improves imports, prices, net worth, regional formatting, mobile behavior, and add-on APIs.

Pairing devices? Update receiving devices to 3.9 before pairing. (#1786, #1808)

Profiles, app lock, and recovery

Keep each person’s finances in a separate profile. Set a password, lock the app after inactivity, and use a recovery code if you lose access. Existing data remains in a Personal profile. (#1770)

Native apps can optionally encrypt their local database. Password-protected portable backups can be previewed before restoring, then used to recover on another installation. Wealthfolio makes a verified backup before applying pending database migrations. After a portable restore, reconnect external services. (#1740, #1743)

For self-hosters

Existing WF_DB_PATH deployments and the supplied Docker /data volume continue to work without configuration changes. Existing data appears in a Personal profile; new profiles use separate databases. WF_DATA_DIR is an optional way to select the installation directory. If you set it alongside WF_DB_PATH, both must select the same directory. See the configuration reference for Docker examples.

Continue backing up your persistent data directory or Docker volume and your master key. Copying only the original database file will not include additional profiles. Include any custom WF_SECRET_FILE or WF_ADDONS_DIR location in your backups.

Server database encryption remains optional. WF_DB_REQUIRE_ENCRYPTION=true does not convert existing databases. If you opt in, stop the server and run the offline db encrypt command for each existing profile (use --profile <UUID> for profiles beyond the default) before enabling the requirement.

Existing databases must be encrypted before enabling WF_DB_REQUIRE_ENCRYPTION. The variable enforces the database state; it does not convert a plaintext database. If startup reports a mismatch, the database is not damaged. Either unset the variable to remain plaintext, or stop the service, back up the full data directory, run wealthfolio-server db encrypt with the same volume, service user, and master key, then restart with the flag enabled. Releases before 3.9 ignored the variable, so upgraded databases can be plaintext even when it was already configured.

Insights and Spending

Customizable Insights

Hide, reorder, and resize overview widgets. New widgets show unrealized P&L, top movers, and concentration. Your layout can sync across devices. (#1758)

Spending controls

Exclude categories from spending totals, reports, events, and budgets. The Spending dashboard also supports a custom date range. (#1635, #1512)

Devices and mobile

One guide now handles adding, joining, and recovering a device. On mobile, the portfolio refreshes when you return to the app, navigation and QR scanning are improved, and Connect keeps you signed in when subscription access pauses sync. (#1786, #1808, #1803, #1702, #1711)

More improvements and fixes

  • Net worth: clearer charts when balances cross zero, more useful monthly comparisons, separate portfolio gains from other asset changes, and actions to link properties with mortgages. (#1807, #1801)
  • Imports: better detection of two-digit and named-month dates, plus automatic matching of CSV account values to existing accounts. (#1622, #1764, #1771)
  • Prices and performance: price refreshes preserve older quote history. A separate confirmed action resets provider history when needed. Latest valuations refresh correctly, and volatility uses the actual frequency of the data. (#1761, #1720, #1645)
  • Dates and regions: portfolio and planning dates follow your selected timezone. Switzerland is now available as a formatting region. (#1756, #1767)
  • Add-ons: new APIs provide spending reports, alternative assets, and transfer linking. Network requests can specify a bounded timeout, and custom price providers support Unix timestamp date placeholders. (#1753, #1735, #1307, #1328, #1703)
  • Platforms: initial Android source-build support, iOS launch compatibility updates, and notarized macOS disk images. Android source-build support does not mean a public Android store release. (#1709, #1790)

Thanks

Thanks to everyone who contributed, reported issues, and helped test this release. 💛

Full changelog on GitHub