Skip to content

Conversation

@tabedzki
Copy link
Contributor

@tabedzki tabedzki commented Nov 13, 2025

Feature: add budget analysis report

This feature allows the user to track how the Budget/Spent/Balance of categories as a function of time.

This feature is modelled after the Cash Flow and Net Worth reports. Currently, the user defines the interval resolution unlike "Cash Flow" which has the interval resolution (daily/monthly, etc) defined for each preset option. This can be adjusted based off maintainer feedback.

This feature also allows for both a line chart and bar chart representation, with balance always being a line chart.

Thank you maintainers for looking at this and considering this. This is related to feature request #6116

AI disclaimer: this PR was partly generated with Copilot as indicated in the git history.

Image of cards on report dashboard:

Screenshot 2025-11-13 at 10 36 44 AM
Screenshot 2025-11-13 at 10 38 44 AM

Individual pages:
Screenshot 2025-11-13 at 10 39 11 AM
Screenshot 2025-11-13 at 10 40 26 AM

@actual-github-bot actual-github-bot bot changed the title Feat/add-budget-analysis-report [WIP] Feat/add-budget-analysis-report Nov 13, 2025
@netlify
Copy link

netlify bot commented Nov 13, 2025

Deploy Preview for actualbudget-website canceled.

Name Link
🔨 Latest commit 5dd7922
🔍 Latest deploy log https://app.netlify.com/projects/actualbudget-website/deploys/6966fa3f4175ea00082ec3c0

@netlify
Copy link

netlify bot commented Nov 13, 2025

Deploy Preview for actualbudget ready!

Name Link
🔨 Latest commit 5dd7922
🔍 Latest deploy log https://app.netlify.com/projects/actualbudget/deploys/6966fa3ff5f0ec0008c6f7a5
😎 Deploy Preview https://deploy-preview-6137.demo.actualbudget.org
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 13, 2025

Bundle Stats — desktop-client

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
25 13.84 MB → 13.87 MB (+38.9 kB) +0.27%
Changeset
File Δ Size
src/components/reports/reports/BudgetAnalysis.tsx 🆕 +19.1 kB 0 B → 19.1 kB
src/components/reports/reports/BudgetAnalysisCard.tsx 🆕 +7.9 kB 0 B → 7.9 kB
src/components/reports/spreadsheets/budget-analysis-spreadsheet.ts 🆕 +5.78 kB 0 B → 5.78 kB
src/components/reports/graphs/BudgetAnalysisGraph.tsx 🆕 +5.2 kB 0 B → 5.2 kB
src/components/reports/ReportRouter.tsx 📈 +572 B (+11.69%) 4.78 kB → 5.34 kB
src/components/reports/Overview.tsx 📈 +355 B (+1.81%) 19.17 kB → 19.52 kB
src/components/reports/SnapshotButton.tsx 📈 +2 B (+0.13%) 1.48 kB → 1.48 kB
src/components/reports/GraphButton.tsx 📈 +2 B (+0.13%) 1.56 kB → 1.56 kB
src/components/reports/reports/Crossover.tsx 📈 +10 B (+0.03%) 29.71 kB → 29.72 kB
src/components/reports/reports/CustomReportListCards.tsx 📈 +2 B (+0.02%) 8.4 kB → 8.4 kB
src/components/reports/graphs/CalendarGraph.tsx 📈 +2 B (+0.02%) 10.3 kB → 10.3 kB
src/components/reports/reports/CalendarCard.tsx 📈 +2 B (+0.02%) 12.17 kB → 12.17 kB
src/components/reports/ReportSidebar.tsx 📈 +2 B (+0.01%) 16.63 kB → 16.63 kB
src/components/reports/reports/Spending.tsx 📈 +2 B (+0.01%) 23.07 kB → 23.08 kB
src/components/reports/graphs/DonutGraph.tsx 📉 -2 B (-0.01%) 13.65 kB → 13.65 kB
src/components/reports/graphs/AreaGraph.tsx 📉 -2 B (-0.02%) 11.53 kB → 11.53 kB
src/components/reports/graphs/BarGraph.tsx 📉 -2 B (-0.02%) 10.82 kB → 10.81 kB
src/components/reports/graphs/StackedBarGraph.tsx 📉 -2 B (-0.02%) 9.33 kB → 9.33 kB
src/components/reports/graphs/LineGraph.tsx 📉 -2 B (-0.02%) 8.69 kB → 8.69 kB
src/components/reports/graphs/SpendingGraph.tsx 📉 -2 B (-0.02%) 8.64 kB → 8.64 kB
src/components/reports/graphs/CashFlowGraph.tsx 📉 -2 B (-0.02%) 8.51 kB → 8.5 kB
src/components/reports/graphs/NetWorthGraph.tsx 📉 -2 B (-0.03%) 6.55 kB → 6.55 kB
src/components/reports/graphs/BarLineGraph.tsx 📉 -2 B (-0.03%) 5.76 kB → 5.75 kB
src/components/reports/graphs/CrossoverGraph.tsx 📉 -2 B (-0.04%) 5.39 kB → 5.39 kB
View detailed bundle breakdown

Added

No assets were added

Removed

No assets were removed

Bigger

Asset File Size % Changed
static/js/ReportRouter.js 1.08 MB → 1.12 MB (+38.9 kB) +3.51%

Smaller

No assets were smaller

Unchanged

Asset File Size % Changed
static/js/index.js 9.02 MB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 12.94 kB 0%
static/js/workbox-window.prod.es5.js 5.64 kB 0%
static/js/da.js 110.41 kB 0%
static/js/de.js 163.91 kB 0%
static/js/en-GB.js 6.84 kB 0%
static/js/en.js 154.21 kB 0%
static/js/fr.js 171.96 kB 0%
static/js/it.js 165.78 kB 0%
static/js/nl.js 99.93 kB 0%
static/js/pl.js 90.75 kB 0%
static/js/pt-BR.js 147.06 kB 0%
static/js/ru.js 112.25 kB 0%
static/js/th.js 187.39 kB 0%
static/js/uk.js 213.33 kB 0%
static/js/resize-observer.js 18.37 kB 0%
static/js/BackgroundImage.js 120.48 kB 0%
static/js/narrow.js 611.45 kB 0%
static/js/TransactionList.js 101.29 kB 0%
static/js/wide.js 185.6 kB 0%
static/js/AppliedFilters.js 9.42 kB 0%
static/js/usePayeeRuleCounts.js 11.79 kB 0%
static/js/useTransactionBatchActions.js 12.98 kB 0%
static/js/FormulaEditor.js 1.08 MB 0%

@github-actions
Copy link
Contributor

github-actions bot commented Nov 13, 2025

Bundle Stats — loot-core

Hey there, this message comes from a GitHub action that helps you and reviewers to understand how these changes affect the size of this project's bundle.

As this PR is updated, I'll keep you updated on how the bundle size is impacted.

Total

Files count Total bundle size % Changed
1 5.79 MB 0%

Changeset

No files were changed

View detailed bundle breakdown

Added

No assets were added

Removed

No assets were removed

Bigger

No assets were bigger

Smaller

No assets were smaller

Unchanged

Asset File Size % Changed
kcab.worker.BKDwHEvR.js 5.79 MB 0%

@tabedzki tabedzki force-pushed the feat/add-budget-analysis-report branch from 348962c to 7e69c1a Compare November 13, 2025 13:01
@tabedzki
Copy link
Contributor Author

It looks like the functional tests fail due to an artifact naming conflict. I believe this will require action from a maintainer.

@tabedzki
Copy link
Contributor Author

For the maintainers, the new Budget Analysis Report is available on the test budget. (I am also comfortable with a name change if the maintainers prefer a different name.)

@github-actions
Copy link
Contributor

✅ VRT screenshots have been automatically updated.

@github-actions
Copy link
Contributor

✅ VRT screenshots have been automatically updated.

@tabedzki
Copy link
Contributor Author

tabedzki commented Jan 6, 2026

Sorry about the delay. I'll try and rectify the issue soon

@github-actions github-actions bot removed the Stale label Jan 7, 2026
@tabedzki
Copy link
Contributor Author

@youngcw I found the differences between the balance values: this report assumes rollover between months. I personally believe overspending should automatically roll over though I understand that might not be the design philosophy for Actual.

What's your suggestion for how that should behave?


Balances without rollover
Screenshot 2026-01-12 at 18-27-15 Actual

Balances with rollover
Screenshot 2026-01-12 at 18-27-34 Actual

Sept's Balance
Screenshot 2026-01-12 at 18-27-50 Actual

Oct's Balance
Screenshot 2026-01-12 at 18-27-58 Actual

@youngcw
Copy link
Member

youngcw commented Jan 13, 2026

I would expect the report to match the budget table. Anything else seems incorrect to me since this is claiming to report on the budget.

@youngcw
Copy link
Member

youngcw commented Jan 13, 2026

Is the summary in the corner always just the numbers from the last month of the plot? I would expect the budgeted and spent numbers to be the total over the period. The balance one can probably stay as the ending balance, but maybe the text should say "Ending balance"

@tabedzki tabedzki marked this pull request as draft January 13, 2026 20:10
@tabedzki
Copy link
Contributor Author

I can do modify it to reflect the numbers over the period.

I'm uncomfortable/hesitant about the inherent discrepancy that occurs between "balanced" and "budgeted - spent" due to the possibility of not carrying over "overspending". If there's overspending that is not carried over, then the ending balance over the period will not reflect the "budgeted - spent" over the period.

Is that sort of numerical discrepancy acceptable in this case? Should we have this be explicitly noted (and possibly linked to the documentation) so that users are aware of this possibility?


I've moved this back to drafts since I need to write up some docs and generate figures.

@youngcw
Copy link
Member

youngcw commented Jan 13, 2026

Could there be a line for overspending adjustments? That may be useful to know in the report and then the math could all add up

@tabedzki
Copy link
Contributor Author

Adding in the overspending line

@youngcw is there a way to only show certain filters? Currently, I import the header and those filters include irrelevant options such as "Accounts" given that this is focused only on the budget.

@youngcw
Copy link
Member

youngcw commented Jan 13, 2026

Adding in the overspending line

@youngcw is there a way to only show certain filters? Currently, I import the header and those filters include irrelevant options such as "Accounts" given that this is focused only on the budget.

Not that I know of

@tabedzki
Copy link
Contributor Author

Okay thanks. That'd be something nice to have for certain reports but I understand if it isn't doable in the short term. I can write in the comments that only Category filter is used. (Maybe amount as well?)


I also have a problem for currencies in my graph where the Y axis currency gets cut off. Do you know if that's a general formatting issue that would be addressed outside of the report framework, or is this something that I need to fix on my end (formatting, etc)?

Screenshot 2026-01-13 at 6 41 05 PM

@tabedzki tabedzki marked this pull request as ready for review January 14, 2026 00:11
Copy link
Contributor Author

@tabedzki tabedzki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Youngcw, I believe it's ready at this time for a review.

edit: Image for docs added and fixed support for conditionsOp

@youngcw
Copy link
Member

youngcw commented Jan 14, 2026

I don't know if I like that the hover tooltip has a different order of values than the summary does. What do you think about making that order the same? So move the balance value in the tooltip to the bottom.

I like the overspend adjustment number. Im not sure about it being in the month being fixed, vs being in the month after like the budget does. Could that be in the next month like its handled on budget? What do you think?

@youngcw
Copy link
Member

youngcw commented Jan 14, 2026

Also, take a look at the recently merged reports pages PR. It added a copy function to each report and that will need added here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants