[PR #7080] Sync performance notification #6926

Open
opened 2026-02-28 21:34:30 -06:00 by GiteaMirror · 0 comments
Owner

Original Pull Request: https://github.com/actualbudget/actual/pull/7080

State: open
Merged: No


Description

This PR addresses performance issues for users with a large number of messages (hundreds of thousands) during sync.

It introduces an informational notification that appears after a successful sync if the total message count exceeds 20,000. This notification informs the user about the high message count and offers a "Reset sync" button to help mitigate potential performance problems. The notification can be dismissed, and its dismissal state is persisted in local storage per budget, preventing it from reappearing until local storage is cleared.

N/A (no specific issue provided)

Testing

To test this feature:

  1. Simulate a high message count: Manually adjust the messages_crdt table in your local database to contain more than 20,000 rows (e.g., by duplicating existing rows).
  2. Perform a sync: Initiate a sync operation in the app.
  3. Verify notification: Observe if the "High message count" notification appears.
  4. Test dismissal: Dismiss the notification and perform another sync to ensure it does not reappear.
  5. Test "Reset sync": Click the "Reset sync" button and verify that the sync reset process is initiated.
  6. Clear local storage: Clear local storage for the budget and perform a sync to ensure the notification reappears.

Checklist

  • Release notes added (see link above)
  • No obvious regressions in affected areas
  • Self-review has been performed - I understand what each change in the code does and why it is needed

Open in Web Open in Cursor 


Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 27 14.85 MB → 14.85 MB (+1.13 kB) +0.01%
loot-core 1 5.82 MB → 5.82 MB (+216 B) +0.00%
api 1 4.43 MB → 4.43 MB (+188 B) +0.00%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
27 14.85 MB → 14.85 MB (+1.13 kB) +0.01%
Changeset
File Δ Size
src/sync-events.ts 📈 +1.13 kB (+11.12%) 10.19 kB → 11.33 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
static/js/index.js 9.54 MB → 9.54 MB (+1.13 kB) +0.01%

Smaller
No assets were smaller

Unchanged

Asset File Size % Changed
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/ca.js 188.15 kB 0%
static/js/da.js 106.35 kB 0%
static/js/de.js 180.07 kB 0%
static/js/en-GB.js 7.18 kB 0%
static/js/en.js 170.37 kB 0%
static/js/es.js 174.55 kB 0%
static/js/fr.js 179.6 kB 0%
static/js/it.js 171.16 kB 0%
static/js/nb-NO.js 156.96 kB 0%
static/js/nl.js 106.37 kB 0%
static/js/pl.js 88.37 kB 0%
static/js/pt-BR.js 154.22 kB 0%
static/js/th.js 181.87 kB 0%
static/js/uk.js 214.74 kB 0%
static/js/resize-observer.js 18.37 kB 0%
static/js/BackgroundImage.js 120.54 kB 0%
static/js/ReportRouter.js 1.16 MB 0%
static/js/narrow.js 637.68 kB 0%
static/js/TransactionList.js 106.22 kB 0%
static/js/wide.js 164.15 kB 0%
static/js/AppliedFilters.js 9.71 kB 0%
static/js/usePayeeRuleCounts.js 10.04 kB 0%
static/js/useTransactionBatchActions.js 13.23 kB 0%
static/js/FormulaEditor.js 1.04 MB 0%

loot-core

Total

Files count Total bundle size % Changed
1 5.82 MB → 5.82 MB (+216 B) +0.00%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts 📈 +216 B (+1.19%) 17.71 kB → 17.92 kB
View detailed bundle breakdown

Added

Asset File Size % Changed
kcab.worker.B39FYKI5.js 0 B → 5.82 MB (+5.82 MB) -

Removed

Asset File Size % Changed
kcab.worker.BwrdDDMW.js 5.82 MB → 0 B (-5.82 MB) -100%

Bigger
No assets were bigger

Smaller
No assets were smaller

Unchanged
No assets were unchanged


api

Total

Files count Total bundle size % Changed
1 4.43 MB → 4.43 MB (+188 B) +0.00%
Changeset
File Δ Size
src/server/sync/index.ts 📈 +188 B (+1.19%) 15.42 kB → 15.6 kB
View detailed bundle breakdown

Added
No assets were added

Removed
No assets were removed

Bigger

Asset File Size % Changed
bundle.api.js 4.43 MB → 4.43 MB (+188 B) +0.00%

Smaller
No assets were smaller

Unchanged
No assets were unchanged

**Original Pull Request:** https://github.com/actualbudget/actual/pull/7080 **State:** open **Merged:** No --- ## Description This PR addresses performance issues for users with a large number of messages (hundreds of thousands) during sync. It introduces an informational notification that appears after a successful sync if the total message count exceeds 20,000. This notification informs the user about the high message count and offers a "Reset sync" button to help mitigate potential performance problems. The notification can be dismissed, and its dismissal state is persisted in local storage per budget, preventing it from reappearing until local storage is cleared. ## Related issue(s) N/A (no specific issue provided) ## Testing To test this feature: 1. **Simulate a high message count:** Manually adjust the `messages_crdt` table in your local database to contain more than 20,000 rows (e.g., by duplicating existing rows). 2. **Perform a sync:** Initiate a sync operation in the app. 3. **Verify notification:** Observe if the "High message count" notification appears. 4. **Test dismissal:** Dismiss the notification and perform another sync to ensure it does not reappear. 5. **Test "Reset sync":** Click the "Reset sync" button and verify that the sync reset process is initiated. 6. **Clear local storage:** Clear local storage for the budget and perform a sync to ensure the notification reappears. ## Checklist - [ ] Release notes added (see link above) - [ ] No obvious regressions in affected areas - [ ] Self-review has been performed - I understand what each change in the code does and why it is needed --- <p><a href="https://cursor.com/agents/bc-c6637493-134f-41fc-a5c0-0a27a7387a34"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-c6637493-134f-41fc-a5c0-0a27a7387a34"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</p> <!--- actual-bot-sections ---> <hr /> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 27 | 14.85 MB → 14.85 MB (+1.13 kB) | +0.01% loot-core | 1 | 5.82 MB → 5.82 MB (+216 B) | +0.00% api | 1 | 4.43 MB → 4.43 MB (+188 B) | +0.00% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 27 | 14.85 MB → 14.85 MB (+1.13 kB) | +0.01% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `src/sync-events.ts` | 📈 +1.13 kB (+11.12%) | 10.19 kB → 11.33 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/index.js | 9.54 MB → 9.54 MB (+1.13 kB) | +0.01% **Smaller** No assets were smaller **Unchanged** Asset | File Size | % Changed ----- | --------- | --------- 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/ca.js | 188.15 kB | 0% static/js/da.js | 106.35 kB | 0% static/js/de.js | 180.07 kB | 0% static/js/en-GB.js | 7.18 kB | 0% static/js/en.js | 170.37 kB | 0% static/js/es.js | 174.55 kB | 0% static/js/fr.js | 179.6 kB | 0% static/js/it.js | 171.16 kB | 0% static/js/nb-NO.js | 156.96 kB | 0% static/js/nl.js | 106.37 kB | 0% static/js/pl.js | 88.37 kB | 0% static/js/pt-BR.js | 154.22 kB | 0% static/js/th.js | 181.87 kB | 0% static/js/uk.js | 214.74 kB | 0% static/js/resize-observer.js | 18.37 kB | 0% static/js/BackgroundImage.js | 120.54 kB | 0% static/js/ReportRouter.js | 1.16 MB | 0% static/js/narrow.js | 637.68 kB | 0% static/js/TransactionList.js | 106.22 kB | 0% static/js/wide.js | 164.15 kB | 0% static/js/AppliedFilters.js | 9.71 kB | 0% static/js/usePayeeRuleCounts.js | 10.04 kB | 0% static/js/useTransactionBatchActions.js | 13.23 kB | 0% static/js/FormulaEditor.js | 1.04 MB | 0% </div> </details> --- #### loot-core **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 5.82 MB → 5.82 MB (+216 B) | +0.00% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/server/sync/index.ts` | 📈 +216 B (+1.19%) | 17.71 kB → 17.92 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.B39FYKI5.js | 0 B → 5.82 MB (+5.82 MB) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.BwrdDDMW.js | 5.82 MB → 0 B (-5.82 MB) | -100% **Bigger** No assets were bigger **Smaller** No assets were smaller **Unchanged** No assets were unchanged </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 4.43 MB → 4.43 MB (+188 B) | +0.00% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `src/server/sync/index.ts` | 📈 +188 B (+1.19%) | 15.42 kB → 15.6 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 ----- | --------- | --------- bundle.api.js | 4.43 MB → 4.43 MB (+188 B) | +0.00% **Smaller** No assets were smaller **Unchanged** No assets were unchanged </div> </details> </details> <!--- bundlestats-action-comment key:combined end --->
GiteaMirror added the pull-request label 2026-02-28 21:34:30 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#6926