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 65ae6fe
🔍 Latest deploy log https://app.netlify.com/projects/actualbudget-website/deploys/697128017b56e60008f256f3

@netlify
Copy link

netlify bot commented Nov 13, 2025

Deploy Preview for actualbudget ready!

Name Link
🔨 Latest commit 65ae6fe
🔍 Latest deploy log https://app.netlify.com/projects/actualbudget/deploys/69712801abb7d10008ff4f1b
😎 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.

@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.

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, as I implement these changes, I noticed that the CashFlow had a change reported on tooltiphover. Given that we already have Budgeted, Spent, Overspending Adj, and Balance on the tooltip however, would you still include that or does it risk getting too crowded?


## Key Features

### Time Period Controls
Copy link
Member

Choose a reason for hiding this comment

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

Probably remove this and the Filtering sections as that's not specific to this report. Im guessing that was added by copilot.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes that was an oversight by me. However, filtering still works, but it is only for categories. I can update the documentation to reflect that.

@youngcw
Copy link
Member

youngcw commented Jan 19, 2026

2026-01-19-Test Budget.zip
Are you forcing a negative value on the spent numbers? That seems to be throwing off the totals. In the example file the total "spending" is positive because of a large deposit. Then the report shows a large negative spending, but the balance line is correct.
image

@youngcw
Copy link
Member

youngcw commented Jan 21, 2026

Looks like we just need merge conflicts resolved. Thanks for all the work on this

@tabedzki
Copy link
Contributor Author

For the feedback link, should that be a separate PR after this gets merged, or should we make an issue preemptively?

@youngcw
Copy link
Member

youngcw commented Jan 21, 2026

For the feedback link, should that be a separate PR after this gets merged, or should we make an issue preemptively?

Ill make one for you. Thanks for remembering
#6742

@youngcw
Copy link
Member

youngcw commented Jan 21, 2026

I think this is the last thing. PR #6661 updated the number format in the whole app. You will need to apply those changes here as this wasn't in yet.

@tabedzki
Copy link
Contributor Author

When you get the chance, can you also review the lines/commit where I added a filtering capability to the Filter dropdown so that I'm not showing irrelevant filtering options?

I'll take a look merging master into this PR.

@youngcw
Copy link
Member

youngcw commented Jan 21, 2026

When you get the chance, can you also review the lines/commit where I added a filtering capability to the Filter dropdown so that I'm not showing irrelevant filtering options?

So the filter button already had the option to exclude certain filter types? It looks fine to me

@tabedzki
Copy link
Contributor Author

Sounds good, thanks!

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