[PR #7356] [MERGED] Fix custom report editor retaining unsaved settings #37300

Closed
opened 2026-04-21 00:14:11 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/7356
Author: @tmchow
Created: 4/2/2026
Status: Merged
Merged: 4/7/2026
Merged by: @youngcw

Base: masterHead: fix/7332-clear-unsaved-report-state


📝 Commits (2)

  • 594ccc0 Fix custom report editor retaining unsaved settings
  • c90f0ed Add release notes for PR #7356

📊 Changes

2 files changed (+7 additions, -1 deletions)

View changed files

📝 packages/desktop-client/src/components/reports/reports/CustomReport.tsx (+1 -1)
upcoming-release-notes/7356.md (+6 -0)

📄 Description

Summary

Custom report settings (like graph type) were persisting between visits even when not saved. Changed the session storage clear condition so it fires whenever the stored URL differs from the current path, not just when coming from /reports.

Root cause

The URL tracking in CustomReportInner stores the current path in sessionStorage.url. The clear condition only checked if (['/reports'].includes(prevUrl)), but since this tracking code runs inside the report component (not the dashboard), the stored URL always pointed to a report path, never /reports. So the clear never fired when revisiting the same report.

Changes

One-line change in CustomReport.tsx (line 186): replaced the /reports check with a path comparison (prevUrl !== location.pathname). This clears session storage whenever the user navigates to the report from any different page (dashboard, another report, or external link), while preserving state during same-page interactions like switching tabs or resizing.

Reproduction (from issue)

  1. Create custom report "test" (bar graph default)
  2. Go back to reports dashboard
  3. Open "test"
  4. Change graph to donut (don't save)
  5. Navigate back
  6. Open "test" again -- previously showed donut, now correctly shows bar graph

Fixes #7332

This contribution was developed with AI assistance (Claude Code).


Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 28 12.18 MB → 12.18 MB (+2.95 kB) +0.02%
loot-core 1 4.83 MB 0%
api 4 4.06 MB 0%
cli 1 7.88 MB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
28 12.18 MB → 12.18 MB (+2.95 kB) +0.02%
Changeset
File Δ Size
locale/zh-Hans.json 📈 +2.5 kB (+2.75%) 91.07 kB → 93.57 kB
locale/ca.json 📈 +456 B (+0.24%) 182.91 kB → 183.36 kB
src/components/reports/reports/CustomReport.tsx 📉 -1 B (-0.00%) 41.28 kB → 41.28 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
static/js/zh-Hans.js 91.07 kB → 93.57 kB (+2.5 kB) +2.75%
static/js/ca.js 182.91 kB → 183.36 kB (+456 B) +0.24%

Smaller

Asset File Size % Changed
static/js/ReportRouter.js 1.02 MB → 1.02 MB (-1 B) -0.00%

Unchanged

Asset File Size % Changed
static/js/index.js 3.23 MB 0%
static/js/BackgroundImage.js 119.98 kB 0%
static/js/FormulaEditor.js 846.44 kB 0%
static/js/TransactionList.js 81.29 kB 0%
static/js/da.js 104.66 kB 0%
static/js/de.js 174.79 kB 0%
static/js/en-GB.js 7.16 kB 0%
static/js/en.js 170.76 kB 0%
static/js/es.js 182.18 kB 0%
static/js/fr.js 177.47 kB 0%
static/js/indexeddb-main-thread-worker-e59fee74.js 13.46 kB 0%
static/js/it.js 166.25 kB 0%
static/js/narrow.js 354.5 kB 0%
static/js/nb-NO.js 152.2 kB 0%
static/js/nl.js 108.93 kB 0%
static/js/pl.js 88.34 kB 0%
static/js/pt-BR.js 177.84 kB 0%
static/js/resize-observer.js 18.03 kB 0%
static/js/sv.js 80.58 kB 0%
static/js/th.js 179.94 kB 0%
static/js/theme.js 30.68 kB 0%
static/js/uk.js 213.14 kB 0%
static/js/useTransactionBatchActions.js 4.29 MB 0%
static/js/wide.js 418 B 0%
static/js/workbox-window.prod.es5.js 7.28 kB 0%

loot-core

Total

Files count Total bundle size % Changed
1 4.83 MB 0%
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.B--GR9z4.js 4.83 MB 0%

api

Total

Files count Total bundle size % Changed
4 4.06 MB 0%
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
index.js 3.84 MB 0%
from-Bl-Hslp4.js 167.73 kB 0%
multipart-parser-BnDysoMr.js 8.1 kB 0%
src-iMkUmuwR.js 43.64 kB 0%

cli

Total

Files count Total bundle size % Changed
1 7.88 MB 0%
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
cli.js 7.88 MB 0%

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/actualbudget/actual/pull/7356 **Author:** [@tmchow](https://github.com/tmchow) **Created:** 4/2/2026 **Status:** ✅ Merged **Merged:** 4/7/2026 **Merged by:** [@youngcw](https://github.com/youngcw) **Base:** `master` ← **Head:** `fix/7332-clear-unsaved-report-state` --- ### 📝 Commits (2) - [`594ccc0`](https://github.com/actualbudget/actual/commit/594ccc0ff6d7dbcd4074eaad63cf22be33af892d) Fix custom report editor retaining unsaved settings - [`c90f0ed`](https://github.com/actualbudget/actual/commit/c90f0ed9a27056dd8943e20a3b43464ac8921a3a) Add release notes for PR #7356 ### 📊 Changes **2 files changed** (+7 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `packages/desktop-client/src/components/reports/reports/CustomReport.tsx` (+1 -1) ➕ `upcoming-release-notes/7356.md` (+6 -0) </details> ### 📄 Description ## Summary Custom report settings (like graph type) were persisting between visits even when not saved. Changed the session storage clear condition so it fires whenever the stored URL differs from the current path, not just when coming from `/reports`. ## Root cause The URL tracking in `CustomReportInner` stores the current path in `sessionStorage.url`. The clear condition only checked `if (['/reports'].includes(prevUrl))`, but since this tracking code runs inside the report component (not the dashboard), the stored URL always pointed to a report path, never `/reports`. So the clear never fired when revisiting the same report. ## Changes One-line change in `CustomReport.tsx` (line 186): replaced the `/reports` check with a path comparison (`prevUrl !== location.pathname`). This clears session storage whenever the user navigates to the report from any different page (dashboard, another report, or external link), while preserving state during same-page interactions like switching tabs or resizing. ## Reproduction (from issue) 1. Create custom report "test" (bar graph default) 2. Go back to reports dashboard 3. Open "test" 4. Change graph to donut (don't save) 5. Navigate back 6. Open "test" again -- previously showed donut, now correctly shows bar graph Fixes #7332 This contribution was developed with AI assistance (Claude Code). <!--- actual-bot-sections ---> <hr /> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 28 | 12.18 MB → 12.18 MB (+2.95 kB) | +0.02% loot-core | 1 | 4.83 MB | 0% api | 4 | 4.06 MB | 0% cli | 1 | 7.88 MB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 28 | 12.18 MB → 12.18 MB (+2.95 kB) | +0.02% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `locale/zh-Hans.json` | 📈 +2.5 kB (+2.75%) | 91.07 kB → 93.57 kB `locale/ca.json` | 📈 +456 B (+0.24%) | 182.91 kB → 183.36 kB `src/components/reports/reports/CustomReport.tsx` | 📉 -1 B (-0.00%) | 41.28 kB → 41.28 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** No assets were added **Removed** No assets were removed **Bigger** Asset | File Size | % Changed ----- | --------- | --------- static/js/zh-Hans.js | 91.07 kB → 93.57 kB (+2.5 kB) | +2.75% static/js/ca.js | 182.91 kB → 183.36 kB (+456 B) | +0.24% **Smaller** Asset | File Size | % Changed ----- | --------- | --------- static/js/ReportRouter.js | 1.02 MB → 1.02 MB (-1 B) | -0.00% **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- static/js/index.js | 3.23 MB | 0% static/js/BackgroundImage.js | 119.98 kB | 0% static/js/FormulaEditor.js | 846.44 kB | 0% static/js/TransactionList.js | 81.29 kB | 0% static/js/da.js | 104.66 kB | 0% static/js/de.js | 174.79 kB | 0% static/js/en-GB.js | 7.16 kB | 0% static/js/en.js | 170.76 kB | 0% static/js/es.js | 182.18 kB | 0% static/js/fr.js | 177.47 kB | 0% static/js/indexeddb-main-thread-worker-e59fee74.js | 13.46 kB | 0% static/js/it.js | 166.25 kB | 0% static/js/narrow.js | 354.5 kB | 0% static/js/nb-NO.js | 152.2 kB | 0% static/js/nl.js | 108.93 kB | 0% static/js/pl.js | 88.34 kB | 0% static/js/pt-BR.js | 177.84 kB | 0% static/js/resize-observer.js | 18.03 kB | 0% static/js/sv.js | 80.58 kB | 0% static/js/th.js | 179.94 kB | 0% static/js/theme.js | 30.68 kB | 0% static/js/uk.js | 213.14 kB | 0% static/js/useTransactionBatchActions.js | 4.29 MB | 0% static/js/wide.js | 418 B | 0% static/js/workbox-window.prod.es5.js | 7.28 kB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 4.83 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **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.B--GR9z4.js | 4.83 MB | 0% </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 4 | 4.06 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **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 ----- | --------- | --------- index.js | 3.84 MB | 0% from-Bl-Hslp4.js | 167.73 kB | 0% multipart-parser-BnDysoMr.js | 8.1 kB | 0% src-iMkUmuwR.js | 43.64 kB | 0% </div> </details> --- #### cli **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 7.88 MB | 0% <details> <summary>View detailed bundle breakdown</summary> <div> **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 ----- | --------- | --------- cli.js | 7.88 MB | 0% </div> </details> </details> <!--- bundlestats-action-comment key:combined end ---> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-21 00:14:11 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#37300