[PR #6474] fix: improve bank sync UX with accurate queue counts #6552

Closed
opened 2026-02-28 21:29:55 -06:00 by GiteaMirror · 0 comments
Owner

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

State: closed
Merged: No


Summary

This PR fixes UX issues with the bank sync queue system, specifically addressing inaccurate notification counts when syncing multiple accounts.

Changes Made

1. Fixed Notification Banner Count Logic

  • Problem: The top notification banner always showed "1 account remaining" regardless of how many accounts were queued for sync
  • Solution: Implemented smart counting logic in BankSyncStatus.tsx:
    • For individual accounts: displays total queued requests (1, 2, 3...)
    • For 'Sync All': displays total accounts being synced

Technical Details

  • Modified BankSyncStatus.tsx to use conditional counting logic based on presence of 'ALL_ACCOUNTS' queue requests
  • Updated SimpleFin batch processing in accountsSlice.ts to progressively update the accountsSyncing array

Testing

  • Manually tested individual account syncing with multiple rapid clicks
  • Manually tested 'Sync All' functionality with 8 SimpleFin accounts
  • Verified notification counts update correctly in real-time
  • Confirmed button styling consistency across desktop and mobile interfaces

Screenshots/Demo

Screenshot 2025-12-22 at 11 15 07

The notification banner now correctly shows:

  • Individual accounts: "Syncing... 1 account remaining", "Syncing... 2 accounts remaining", etc.
  • Sync All: "Syncing... 8 accounts remaining" (total accounts being processed)

Fixes the issue where counts were always showing "1 account remaining" regardless of actual queue size.


Note: This PR was created with AI assistance and should be labeled accordingly.

Summary by CodeRabbit

  • New Features

    • "Sync All" added on desktop and mobile with a new hook exposing linked accounts and a trigger.
  • Improvements

    • Sync requests are now queued and processed sequentially; UI shows accurate "Syncing... X account(s) remaining" and disables controls while active.
    • Progress updates are more reliable across batch and per-account syncs; status rendering simplified.
  • Bug Fixes

    • Per-item errors no longer block the queue; processing continues and recovers gracefully.

✏️ Tip: You can customize this high-level summary in your review settings.


Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 27 14.65 MB → 14.66 MB (+3.49 kB) +0.02%
loot-core 1 5.86 MB 0%
api 1 4.4 MB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
27 14.65 MB → 14.66 MB (+3.49 kB) +0.02%
Changeset
File Δ Size
src/accounts/accountsSlice.ts 📈 +3.55 kB (+31.90%) 11.13 kB → 14.69 kB
src/components/mobile/accounts/AccountPage.tsx 📈 +206 B (+2.03%) 9.93 kB → 10.13 kB
src/components/mobile/accounts/AccountsPage.tsx 📈 +365 B (+1.66%) 21.43 kB → 21.79 kB
src/components/accounts/Account.tsx 📈 +399 B (+0.80%) 48.75 kB → 49.14 kB
src/components/transactions/SelectedTransactionsButton.tsx 📈 +4 B (+0.02%) 18.68 kB → 18.69 kB
src/components/BankSyncStatus.tsx 📉 -30 B (-1.24%) 2.36 kB → 2.33 kB
src/components/sidebar/Accounts.tsx 📉 -1005 B (-11.60%) 8.46 kB → 7.48 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.49 MB → 9.49 MB (+2.54 kB) +0.03%
static/js/narrow.js 638.5 kB → 639.05 kB (+571 B) +0.09%
static/js/wide.js 164.05 kB → 164.44 kB (+403 B) +0.24%

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/da.js 106.62 kB 0%
static/js/de.js 180.44 kB 0%
static/js/en-GB.js 7.18 kB 0%
static/js/en.js 164.99 kB 0%
static/js/es.js 173.83 kB 0%
static/js/fr.js 179.97 kB 0%
static/js/it.js 171.44 kB 0%
static/js/nb-NO.js 157.23 kB 0%
static/js/nl.js 106.65 kB 0%
static/js/pl.js 88.64 kB 0%
static/js/pt-BR.js 154.57 kB 0%
static/js/sv.js 78.2 kB 0%
static/js/th.js 182.35 kB 0%
static/js/uk.js 215.11 kB 0%
static/js/resize-observer.js 18.37 kB 0%
static/js/BackgroundImage.js 120.54 kB 0%
static/js/ReportRouter.js 1.13 MB 0%
static/js/TransactionList.js 106.13 kB 0%
static/js/AppliedFilters.js 9.71 kB 0%
static/js/usePayeeRuleCounts.js 10.05 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.86 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.hYlRL2CV.js 5.86 MB 0%

api

Total

Files count Total bundle size % Changed
1 4.4 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
bundle.api.js 4.4 MB 0%
**Original Pull Request:** https://github.com/actualbudget/actual/pull/6474 **State:** closed **Merged:** No --- ## Summary This PR fixes UX issues with the bank sync queue system, specifically addressing inaccurate notification counts when syncing multiple accounts. ## Changes Made ### 1. Fixed Notification Banner Count Logic - **Problem**: The top notification banner always showed "1 account remaining" regardless of how many accounts were queued for sync - **Solution**: Implemented smart counting logic in BankSyncStatus.tsx: - For individual accounts: displays total queued requests (1, 2, 3...) - For 'Sync All': displays total accounts being synced ## Technical Details - Modified BankSyncStatus.tsx to use conditional counting logic based on presence of 'ALL_ACCOUNTS' queue requests - Updated SimpleFin batch processing in accountsSlice.ts to progressively update the accountsSyncing array ## Testing - Manually tested individual account syncing with multiple rapid clicks - Manually tested 'Sync All' functionality with 8 SimpleFin accounts - Verified notification counts update correctly in real-time - Confirmed button styling consistency across desktop and mobile interfaces ## Screenshots/Demo <img width="310" height="43" alt="Screenshot 2025-12-22 at 11 15 07" src="https://github.com/user-attachments/assets/b4f2f89f-8ed6-4fba-bdb0-9f1dda6397ea" /> The notification banner now correctly shows: - Individual accounts: "Syncing... 1 account remaining", "Syncing... 2 accounts remaining", etc. - Sync All: "Syncing... 8 accounts remaining" (total accounts being processed) Fixes the issue where counts were always showing "1 account remaining" regardless of actual queue size. --- **Note**: This PR was created with AI assistance and should be labeled accordingly. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * "Sync All" added on desktop and mobile with a new hook exposing linked accounts and a trigger. * **Improvements** * Sync requests are now queued and processed sequentially; UI shows accurate "Syncing... X account(s) remaining" and disables controls while active. * Progress updates are more reliable across batch and per-account syncs; status rendering simplified. * **Bug Fixes** * Per-item errors no longer block the queue; processing continues and recovers gracefully. <sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub> <!-- end of auto-generated comment: release notes by coderabbit.ai --> <!--- actual-bot-sections ---> <hr /> <!--- bundlestats-action-comment key:combined start ---> ### Bundle Stats Bundle | Files count | Total bundle size | % Changed ------ | ----------- | ----------------- | --------- desktop-client | 27 | 14.65 MB → 14.66 MB (+3.49 kB) | +0.02% loot-core | 1 | 5.86 MB | 0% api | 1 | 4.4 MB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 27 | 14.65 MB → 14.66 MB (+3.49 kB) | +0.02% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `src/accounts/accountsSlice.ts` | 📈 +3.55 kB (+31.90%) | 11.13 kB → 14.69 kB `src/components/mobile/accounts/AccountPage.tsx` | 📈 +206 B (+2.03%) | 9.93 kB → 10.13 kB `src/components/mobile/accounts/AccountsPage.tsx` | 📈 +365 B (+1.66%) | 21.43 kB → 21.79 kB `src/components/accounts/Account.tsx` | 📈 +399 B (+0.80%) | 48.75 kB → 49.14 kB `src/components/transactions/SelectedTransactionsButton.tsx` | 📈 +4 B (+0.02%) | 18.68 kB → 18.69 kB `src/components/BankSyncStatus.tsx` | 📉 -30 B (-1.24%) | 2.36 kB → 2.33 kB `src/components/sidebar/Accounts.tsx` | 📉 -1005 B (-11.60%) | 8.46 kB → 7.48 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.49 MB → 9.49 MB (+2.54 kB) | +0.03% static/js/narrow.js | 638.5 kB → 639.05 kB (+571 B) | +0.09% static/js/wide.js | 164.05 kB → 164.44 kB (+403 B) | +0.24% **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/da.js | 106.62 kB | 0% static/js/de.js | 180.44 kB | 0% static/js/en-GB.js | 7.18 kB | 0% static/js/en.js | 164.99 kB | 0% static/js/es.js | 173.83 kB | 0% static/js/fr.js | 179.97 kB | 0% static/js/it.js | 171.44 kB | 0% static/js/nb-NO.js | 157.23 kB | 0% static/js/nl.js | 106.65 kB | 0% static/js/pl.js | 88.64 kB | 0% static/js/pt-BR.js | 154.57 kB | 0% static/js/sv.js | 78.2 kB | 0% static/js/th.js | 182.35 kB | 0% static/js/uk.js | 215.11 kB | 0% static/js/resize-observer.js | 18.37 kB | 0% static/js/BackgroundImage.js | 120.54 kB | 0% static/js/ReportRouter.js | 1.13 MB | 0% static/js/TransactionList.js | 106.13 kB | 0% static/js/AppliedFilters.js | 9.71 kB | 0% static/js/usePayeeRuleCounts.js | 10.05 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.86 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.hYlRL2CV.js | 5.86 MB | 0% </div> </details> --- #### api **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 1 | 4.4 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 ----- | --------- | --------- bundle.api.js | 4.4 MB | 0% </div> </details> </details> <!--- bundlestats-action-comment key:combined end --->
GiteaMirror added the pull-request label 2026-02-28 21:29:55 -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#6552