[PR #6942] [MERGED] Update send function to propagate any errors and fix catchErrors to return the error in result when an unknown command/method is sent to the browser server #13890

Closed
opened 2026-04-10 22:06:04 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/6942
Author: @joel-jeremy
Created: 2/11/2026
Status: Merged
Merged: 2/13/2026
Merged by: @joel-jeremy

Base: masterHead: fix-send-catchErrors


📝 Commits (4)

  • 5e310ef Fix send not returning error when catchErrors option is enabled and an unknown method error is encountered
  • 49ee32d Add release notes for PR #6942
  • 2452d4c Fix send to properly propagate errors from the server
  • 955af44 Update release note

📊 Changes

7 files changed (+95 additions, -29 deletions)

View changed files

📝 packages/loot-core/src/platform/client/fetch/__mocks__/index.ts (+1 -1)
📝 packages/loot-core/src/platform/client/fetch/index-types.ts (+33 -0)
📝 packages/loot-core/src/platform/client/fetch/index.browser.ts (+8 -6)
📝 packages/loot-core/src/platform/client/fetch/index.ts (+8 -6)
📝 packages/loot-core/src/platform/server/connection/index.electron.ts (+19 -8)
📝 packages/loot-core/src/platform/server/connection/index.ts (+20 -8)
upcoming-release-notes/6942.md (+6 -0)

📄 Description

When an unknown command/method is sent to the browser server via send, the error is not returned to the client even though the catchErrors option is enabled. This fixes that.

This PR also updates the send function to properly propagate errors from the server handlers. This gives chance for the callers to handle the errors accordingly via standard try/catch (await) or Promise.catch:

try {
  await send('command');
} catch (error) {
  // Catches the error
}

At the moment, any errors are swallowed and the send promise is not even resolved or rejected if an error occurred:

try {
  // The promise does not get resolved or rejected.
  await send('command');
} catch (error) {
  // Nothing
}

Bundle Stats

Bundle Files count Total bundle size % Changed
desktop-client 27 14.65 MB → 14.65 MB (+112 B) +0.00%
loot-core 1 5.86 MB → 5.86 MB (+402 B) +0.01%
api 1 4.39 MB 0%
View detailed bundle stats

desktop-client

Total

Files count Total bundle size % Changed
27 14.65 MB → 14.65 MB (+112 B) +0.00%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/platform/client/fetch/index.browser.ts 📈 +112 B (+3.08%) 3.56 kB → 3.67 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.48 MB → 9.48 MB (+112 B) +0.00%

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.55 kB 0%
static/js/es.js 173.83 kB 0%
static/js/fr.js 179.62 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/narrow.js 641.33 kB 0%
static/js/TransactionList.js 106.13 kB 0%
static/js/wide.js 164.05 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 → 5.86 MB (+402 B) +0.01%
Changeset
File Δ Size
home/runner/work/actual/actual/packages/loot-core/src/platform/server/connection/index.ts 📈 +402 B (+11.52%) 3.41 kB → 3.8 kB
View detailed bundle breakdown

Added

Asset File Size % Changed
kcab.worker.B8wwp-1f.js 0 B → 5.86 MB (+5.86 MB) -

Removed

Asset File Size % Changed
kcab.worker.NVz4zlvh.js 5.86 MB → 0 B (-5.86 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.39 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.39 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/6942 **Author:** [@joel-jeremy](https://github.com/joel-jeremy) **Created:** 2/11/2026 **Status:** ✅ Merged **Merged:** 2/13/2026 **Merged by:** [@joel-jeremy](https://github.com/joel-jeremy) **Base:** `master` ← **Head:** `fix-send-catchErrors` --- ### 📝 Commits (4) - [`5e310ef`](https://github.com/actualbudget/actual/commit/5e310efed3995ab24c866c15ac12cea60cfabcfe) Fix send not returning error when catchErrors option is enabled and an unknown method error is encountered - [`49ee32d`](https://github.com/actualbudget/actual/commit/49ee32d30a97e3f78043f819111736781f70a84a) Add release notes for PR #6942 - [`2452d4c`](https://github.com/actualbudget/actual/commit/2452d4caa80c16af48ca4d41bd1e23889cb50518) Fix send to properly propagate errors from the server - [`955af44`](https://github.com/actualbudget/actual/commit/955af4451b00540d4a75ba2d7f16f994237afc47) Update release note ### 📊 Changes **7 files changed** (+95 additions, -29 deletions) <details> <summary>View changed files</summary> 📝 `packages/loot-core/src/platform/client/fetch/__mocks__/index.ts` (+1 -1) 📝 `packages/loot-core/src/platform/client/fetch/index-types.ts` (+33 -0) 📝 `packages/loot-core/src/platform/client/fetch/index.browser.ts` (+8 -6) 📝 `packages/loot-core/src/platform/client/fetch/index.ts` (+8 -6) 📝 `packages/loot-core/src/platform/server/connection/index.electron.ts` (+19 -8) 📝 `packages/loot-core/src/platform/server/connection/index.ts` (+20 -8) ➕ `upcoming-release-notes/6942.md` (+6 -0) </details> ### 📄 Description <!-- Thank you for submitting a pull request! Make sure to follow the instructions to write release notes for your PR — it should only take a minute or two: https://github.com/actualbudget/docs#writing-good-release-notes. Try running yarn generate:release-notes *before* pushing your PR for an interactive experience. --> When an unknown command/method is sent to the browser server via `send`, the error is not returned to the client even though the `catchErrors` option is enabled. This fixes that. This PR also updates the `send` function to properly propagate errors from the server handlers. This gives chance for the callers to handle the errors accordingly via standard try/catch (await) or `Promise.catch`: ```typescript try { await send('command'); } catch (error) { // Catches the error } ``` At the moment, any errors are swallowed and the `send` promise is not even resolved or rejected if an error occurred: ```typescript try { // The promise does not get resolved or rejected. await send('command'); } catch (error) { // Nothing } ``` <!--- 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.65 MB (+112 B) | +0.00% loot-core | 1 | 5.86 MB → 5.86 MB (+402 B) | +0.01% api | 1 | 4.39 MB | 0% <details> <summary>View detailed bundle stats</summary> #### desktop-client **Total** Files count | Total bundle size | % Changed ----------- | ----------------- | --------- 27 | 14.65 MB → 14.65 MB (+112 B) | +0.00% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/platform/client/fetch/index.browser.ts` | 📈 +112 B (+3.08%) | 3.56 kB → 3.67 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.48 MB → 9.48 MB (+112 B) | +0.00% **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.55 kB | 0% static/js/es.js | 173.83 kB | 0% static/js/fr.js | 179.62 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/narrow.js | 641.33 kB | 0% static/js/TransactionList.js | 106.13 kB | 0% static/js/wide.js | 164.05 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 → 5.86 MB (+402 B) | +0.01% <details> <summary>Changeset</summary> File | Δ | Size ---- | - | ---- `home/runner/work/actual/actual/packages/loot-core/src/platform/server/connection/index.ts` | 📈 +402 B (+11.52%) | 3.41 kB → 3.8 kB </details> <details> <summary>View detailed bundle breakdown</summary> <div> **Added** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.B8wwp-1f.js | 0 B → 5.86 MB (+5.86 MB) | - **Removed** Asset | File Size | % Changed ----- | --------- | --------- kcab.worker.NVz4zlvh.js | 5.86 MB → 0 B (-5.86 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.39 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.39 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-10 22:06:04 -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#13890