[GH-ISSUE #4811] [Bug]: Unrecoverage UI crash when creating a reconciliation transaction with decimals hidden #43708

Closed
opened 2026-04-26 04:22:44 -05:00 by GiteaMirror · 2 comments
Owner

Originally created by @dgranadam on GitHub (Apr 15, 2025).
Original GitHub issue: https://github.com/actualbudget/actual/issues/4811

Verified issue does not already exist?

  • I have searched and found no existing issue

What happened?

Consistently, and for multiple versions already, the UI crashes when I make a reconciliation transaction. It probably has to do with me having decimals turned off. If I reload the page, everything is fine and the transaction already successfully appears. It also doesn't reproduce reliably, or at least I haven't found out how to, yet.

Image

Logs shown when I select "Show Error" (url replaced with `domain.com)

s8@https://actual.domain.com/static/js/index.EbjK2svi.js:50:39288 an@https://actual.domain.com/static/js/index.EbjK2svi.js:50:39545 MX<@https://actual.domain.com/static/js/index.EbjK2svi.js:269:38353 VC@https://actual.domain.com/static/js/index.EbjK2svi.js:47:19552 h$@https://actual.domain.com/static/js/index.EbjK2svi.js:49:3143 i7@https://actual.domain.com/static/js/index.EbjK2svi.js:49:2355 $7@https://actual.domain.com/static/js/index.EbjK2svi.js:49:47414 k7@https://actual.domain.com/static/js/index.EbjK2svi.js:49:39811 qre@https://actual.domain.com/static/js/index.EbjK2svi.js:49:39737 R1@https://actual.domain.com/static/js/index.EbjK2svi.js:49:39585 P$@https://actual.domain.com/static/js/index.EbjK2svi.js:49:35947 q5@https://actual.domain.com/static/js/index.EbjK2svi.js:49:36752 Tu@https://actual.domain.com/static/js/index.EbjK2svi.js:47:3288 Ha/<@https://actual.domain.com/static/js/index.EbjK2svi.js:49:34273 

Successfully posted transaction despite the crash:

Image

Versions:

v25.4.0 on both. Crash is noticed on Firefox Desktop

Settings

Image

Enabled experimental features:

  • Goal templates
  • Context menus

How can we reproduce the issue?

How can we reproduce the issue?
Please note, I have not reliably recreated this issue. I've been trying but it's a bit of a Heisen-bug. I'll be trying to recreate it more reliably.

  1. Enable "Hide decimal places" for your budget
  2. (maybe?) enable end-to-end encryption
  3. Make sure an account has over 100,000 in it (in my currency that's like $25 USD, don't worry).
  4. Add a few transactions to an account.
  5. In an account, start reconciling the balance with one different than the current balance on Actual. The balance MUST be above 1000, as by default the text box for the reconciliation balance should have a comma in it. Change the value slightly, particularly the least significant digits. In my case, I had 167,046 as my balance and set 167,089 as the new balance.
  6. click the "create reconciliation transaction" button.

Where are you hosting Actual?

Docker

What browsers are you seeing the problem on?

Firefox

Operating System

Windows 11

Originally created by @dgranadam on GitHub (Apr 15, 2025). Original GitHub issue: https://github.com/actualbudget/actual/issues/4811 ### Verified issue does not already exist? - [x] I have searched and found no existing issue ### What happened? Consistently, and for multiple versions already, the UI crashes when I make a reconciliation transaction. It probably has to do with me having decimals turned off. If I reload the page, everything is fine and the transaction already successfully appears. It also doesn't reproduce reliably, or at least I haven't found out how to, yet. ![Image](https://github.com/user-attachments/assets/6ed8bc0e-eeed-47c3-a9b4-da08dee3b116) Logs shown when I select "Show Error" (url replaced with `domain.com) ``` s8@https://actual.domain.com/static/js/index.EbjK2svi.js:50:39288 an@https://actual.domain.com/static/js/index.EbjK2svi.js:50:39545 MX<@https://actual.domain.com/static/js/index.EbjK2svi.js:269:38353 VC@https://actual.domain.com/static/js/index.EbjK2svi.js:47:19552 h$@https://actual.domain.com/static/js/index.EbjK2svi.js:49:3143 i7@https://actual.domain.com/static/js/index.EbjK2svi.js:49:2355 $7@https://actual.domain.com/static/js/index.EbjK2svi.js:49:47414 k7@https://actual.domain.com/static/js/index.EbjK2svi.js:49:39811 qre@https://actual.domain.com/static/js/index.EbjK2svi.js:49:39737 R1@https://actual.domain.com/static/js/index.EbjK2svi.js:49:39585 P$@https://actual.domain.com/static/js/index.EbjK2svi.js:49:35947 q5@https://actual.domain.com/static/js/index.EbjK2svi.js:49:36752 Tu@https://actual.domain.com/static/js/index.EbjK2svi.js:47:3288 Ha/<@https://actual.domain.com/static/js/index.EbjK2svi.js:49:34273 ``` Successfully posted transaction despite the crash: ![Image](https://github.com/user-attachments/assets/5ca4b909-714f-4b2c-b008-4b4614b86ee0) #### Versions: v25.4.0 on both. Crash is noticed on Firefox Desktop #### Settings ![Image](https://github.com/user-attachments/assets/68d10ee2-10cb-4cb2-92bb-73b06f53cd9b) Enabled experimental features: - Goal templates - Context menus ### How can we reproduce the issue? How can we reproduce the issue? Please note, I have not reliably recreated this issue. I've been trying but it's a bit of a Heisen-bug. I'll be trying to recreate it more reliably. 1. Enable "Hide decimal places" for your budget 2. (maybe?) enable end-to-end encryption 3. Make sure an account has over 100,000 in it (in my currency that's like $25 USD, don't worry). 4. Add a few transactions to an account. 5. In an account, start reconciling the balance with one different than the current balance on Actual. The balance MUST be above 1000, as by default the text box for the reconciliation balance should have a comma in it. Change the value slightly, particularly the least significant digits. In my case, I had 167,046 as my balance and set 167,089 as the new balance. 6. click the "create reconciliation transaction" button. ### Where are you hosting Actual? Docker ### What browsers are you seeing the problem on? Firefox ### Operating System Windows 11
GiteaMirror added the bug label 2026-04-26 04:22:44 -05:00
Author
Owner

@dgranadam commented on GitHub (Apr 15, 2025):

Recreated it again.

Console logs: (The heart emojis are when the error occurred).

Syncing since 2025-04-15T01:49:09.517Z-0001-93ab2e2835ee5db8 7 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:53:51.470Z-0006-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:54:05.799Z-0000-93ab2e2835ee5db8 4 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:54:09.208Z-0001-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:54:40.108Z-0000-93ab2e2835ee5db8 7 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:55:31.819Z-0006-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:55:44.446Z-0000-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:55:50.932Z-0000-93ab2e2835ee5db8 3 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Source map error: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Resource URL: https://actual.domain.com/%3Canonymous%20code%3E
Source Map URL: react_devtools_backend_compact.js.map
Source map error: map is undefined
Resource URL: https://actual.domain.com/%3Canonymous%20code%3E
Source Map URL: installHook.js.map
triggering sync because of visibility change index.EbjK2svi.js:276:122594
Syncing since 2025-04-15T01:55:53.725Z-0001-93ab2e2835ee5db8 0 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Unknown locale en-US, falling back to en index.EbjK2svi.js:18:94263
Syncing since 2025-04-15T01:55:53.725Z-0001-93ab2e2835ee5db8 8 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:57:34.777Z-0007-93ab2e2835ee5db8 2 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
Syncing since 2025-04-15T01:58:16.532Z-0001-93ab2e2835ee5db8 8 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978
❤️❤️❤️
Error: safeNumber: number is not an integer: null
    s8 util.ts:358
    an util.ts:378
    MX TransactionsTable.jsx:1540
    React 14
    x usePress.mjs:133
    Ra useEffectEvent.mjs:26
    onClick usePress.mjs:221
    Yc chain.mjs:15
    React 11
<anonymous code>:1:145535
Source map error: Error: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Stack in the worker:parseSourceMapInput@resource://devtools/client/shared/vendor/source-map/lib/util.js:163:15
_factory@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:1066:22
SourceMapConsumer@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:26:12
_fetch@resource://devtools/client/shared/source-map-loader/utils/fetchSourceMap.js:83:19

Resource URL: https://actual.domain.com/%3Canonymous%20code%3E
Source Map URL: installHook.js.map
Syncing since 2025-04-15T01:58:30.209Z-0007-93ab2e2835ee5db8 7 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978
Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978

Error shown on the "Show error" tab:

s8@https://actual.planni.me/static/js/index.EbjK2svi.js:50:39288 an@https://actual.planni.me/static/js/index.EbjK2svi.js:50:39545 MX<@https://actual.planni.me/static/js/index.EbjK2svi.js:269:38353 VC@https://actual.planni.me/static/js/index.EbjK2svi.js:47:19552 h$@https://actual.planni.me/static/js/index.EbjK2svi.js:49:3143 i7@https://actual.planni.me/static/js/index.EbjK2svi.js:49:2355 $7@https://actual.planni.me/static/js/index.EbjK2svi.js:49:47414 k7@https://actual.planni.me/static/js/index.EbjK2svi.js:49:39811 qre@https://actual.planni.me/static/js/index.EbjK2svi.js:49:39737 R1@https://actual.planni.me/static/js/index.EbjK2svi.js:49:39585 P$@https://actual.planni.me/static/js/index.EbjK2svi.js:49:35947 q5@https://actual.planni.me/static/js/index.EbjK2svi.js:49:36752 Tu@https://actual.planni.me/static/js/index.EbjK2svi.js:47:3288 Ha/<@https://actual.planni.me/static/js/index.EbjK2svi.js:49:34273 VoidFunction*Ha@https://actual.planni.me/static/js/index.EbjK2svi.js:49:34249 fo@https://actual.planni.me/static/js/index.EbjK2svi.js:49:33938 Ire@https://actual.planni.me/static/js/index.EbjK2svi.js:47:24898 ux/x<@https://actual.planni.me/static/js/index.EbjK2svi.js:82:91758 Ra/<@https://actual.planni.me/static/js/index.EbjK2svi.js:82:54115 onClick@https://actual.planni.me/static/js/index.EbjK2svi.js:82:93347 Yc/<@https://actual.planni.me/static/js/index.EbjK2svi.js:82:56499 mne@https://actual.planni.me/static/js/index.EbjK2svi.js:46:9873 gne@https://actual.planni.me/static/js/index.EbjK2svi.js:46:10030 vne@https://actual.planni.me/static/js/index.EbjK2svi.js:46:10090 v5@https://actual.planni.me/static/js/index.EbjK2svi.js:46:31563 P6@https://actual.planni.me/static/js/index.EbjK2svi.js:46:31983 Gk/<@https://actual.planni.me/static/js/index.EbjK2svi.js:46:36916 JC@https://actual.planni.me/static/js/index.EbjK2svi.js:49:36971 YW@https://actual.planni.me/static/js/index.EbjK2svi.js:46:9007 Gk@https://actual.planni.me/static/js/index.EbjK2svi.js:46:33273 jC@https://actual.planni.me/static/js/index.EbjK2svi.js:46:17416 One@https://actual.planni.me/static/js/index.EbjK2svi.js:46:17197 

No strange requests on the network, just multiple POST calls to/sync/sync with 200 status.

I had added two transactions (-95,600, -274,070) before I attempted the reconciliation. From a balance of 1,967,022 I reconciled to 1,967,034. In the text box for the reconciliation balance I wrote exactly 1,967,034, only editing the last characters of the string 1,967,022 that was automatically put there. The crash ocurrs exactly when I click "Create reconciliation transaction". After restarting the UI, if I try to reconcile again with a higher amount, the error does NOT reoccurr.

<!-- gh-comment-id:2803551121 --> @dgranadam commented on GitHub (Apr 15, 2025): Recreated it again. Console logs: (The heart emojis are when the error occurred). ``` Syncing since 2025-04-15T01:49:09.517Z-0001-93ab2e2835ee5db8 7 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:53:51.470Z-0006-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:54:05.799Z-0000-93ab2e2835ee5db8 4 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:54:09.208Z-0001-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:54:40.108Z-0000-93ab2e2835ee5db8 7 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:55:31.819Z-0006-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:55:44.446Z-0000-93ab2e2835ee5db8 1 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:55:50.932Z-0000-93ab2e2835ee5db8 3 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Source map error: JSON.parse: unexpected character at line 1 column 1 of the JSON data Resource URL: https://actual.domain.com/%3Canonymous%20code%3E Source Map URL: react_devtools_backend_compact.js.map Source map error: map is undefined Resource URL: https://actual.domain.com/%3Canonymous%20code%3E Source Map URL: installHook.js.map triggering sync because of visibility change index.EbjK2svi.js:276:122594 Syncing since 2025-04-15T01:55:53.725Z-0001-93ab2e2835ee5db8 0 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Unknown locale en-US, falling back to en index.EbjK2svi.js:18:94263 Syncing since 2025-04-15T01:55:53.725Z-0001-93ab2e2835ee5db8 8 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:57:34.777Z-0007-93ab2e2835ee5db8 2 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 Syncing since 2025-04-15T01:58:16.532Z-0001-93ab2e2835ee5db8 8 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 ❤️❤️❤️ Error: safeNumber: number is not an integer: null s8 util.ts:358 an util.ts:378 MX TransactionsTable.jsx:1540 React 14 x usePress.mjs:133 Ra useEffectEvent.mjs:26 onClick usePress.mjs:221 Yc chain.mjs:15 React 11 <anonymous code>:1:145535 Source map error: Error: JSON.parse: unexpected character at line 1 column 1 of the JSON data Stack in the worker:parseSourceMapInput@resource://devtools/client/shared/vendor/source-map/lib/util.js:163:15 _factory@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:1066:22 SourceMapConsumer@resource://devtools/client/shared/vendor/source-map/lib/source-map-consumer.js:26:12 _fetch@resource://devtools/client/shared/source-map-loader/utils/fetchSourceMap.js:83:19 Resource URL: https://actual.domain.com/%3Canonymous%20code%3E Source Map URL: installHook.js.map Syncing since 2025-04-15T01:58:30.209Z-0007-93ab2e2835ee5db8 7 (attempt: 0) kcab.worker.4bc35628d00550b0416b.js:64:7978 Got messages from server 0 kcab.worker.4bc35628d00550b0416b.js:64:7978 ``` Error shown on the "Show error" tab: ``` s8@https://actual.planni.me/static/js/index.EbjK2svi.js:50:39288 an@https://actual.planni.me/static/js/index.EbjK2svi.js:50:39545 MX<@https://actual.planni.me/static/js/index.EbjK2svi.js:269:38353 VC@https://actual.planni.me/static/js/index.EbjK2svi.js:47:19552 h$@https://actual.planni.me/static/js/index.EbjK2svi.js:49:3143 i7@https://actual.planni.me/static/js/index.EbjK2svi.js:49:2355 $7@https://actual.planni.me/static/js/index.EbjK2svi.js:49:47414 k7@https://actual.planni.me/static/js/index.EbjK2svi.js:49:39811 qre@https://actual.planni.me/static/js/index.EbjK2svi.js:49:39737 R1@https://actual.planni.me/static/js/index.EbjK2svi.js:49:39585 P$@https://actual.planni.me/static/js/index.EbjK2svi.js:49:35947 q5@https://actual.planni.me/static/js/index.EbjK2svi.js:49:36752 Tu@https://actual.planni.me/static/js/index.EbjK2svi.js:47:3288 Ha/<@https://actual.planni.me/static/js/index.EbjK2svi.js:49:34273 VoidFunction*Ha@https://actual.planni.me/static/js/index.EbjK2svi.js:49:34249 fo@https://actual.planni.me/static/js/index.EbjK2svi.js:49:33938 Ire@https://actual.planni.me/static/js/index.EbjK2svi.js:47:24898 ux/x<@https://actual.planni.me/static/js/index.EbjK2svi.js:82:91758 Ra/<@https://actual.planni.me/static/js/index.EbjK2svi.js:82:54115 onClick@https://actual.planni.me/static/js/index.EbjK2svi.js:82:93347 Yc/<@https://actual.planni.me/static/js/index.EbjK2svi.js:82:56499 mne@https://actual.planni.me/static/js/index.EbjK2svi.js:46:9873 gne@https://actual.planni.me/static/js/index.EbjK2svi.js:46:10030 vne@https://actual.planni.me/static/js/index.EbjK2svi.js:46:10090 v5@https://actual.planni.me/static/js/index.EbjK2svi.js:46:31563 P6@https://actual.planni.me/static/js/index.EbjK2svi.js:46:31983 Gk/<@https://actual.planni.me/static/js/index.EbjK2svi.js:46:36916 JC@https://actual.planni.me/static/js/index.EbjK2svi.js:49:36971 YW@https://actual.planni.me/static/js/index.EbjK2svi.js:46:9007 Gk@https://actual.planni.me/static/js/index.EbjK2svi.js:46:33273 jC@https://actual.planni.me/static/js/index.EbjK2svi.js:46:17416 One@https://actual.planni.me/static/js/index.EbjK2svi.js:46:17197 ``` No strange requests on the network, just multiple POST calls to/sync/sync with 200 status. I had added two transactions (-95,600, -274,070) before I attempted the reconciliation. From a balance of 1,967,022 I reconciled to 1,967,034. In the text box for the reconciliation balance I wrote exactly `1,967,034`, only editing the last characters of the string `1,967,022` that was automatically put there. The crash ocurrs exactly when I click "Create reconciliation transaction". After restarting the UI, if I try to reconcile again with a higher amount, the error does NOT reoccurr.
Author
Owner

@jfdoming commented on GitHub (Apr 15, 2025):

Thanks for reporting! This will be fixed in next month's release. In the meantime, you should be able to work around it by closing the "New transaction" popup before reconciliation. Let me know if this pops up again with that workaround!

<!-- gh-comment-id:2807685823 --> @jfdoming commented on GitHub (Apr 15, 2025): Thanks for reporting! This will be fixed in next month's release. In the meantime, you should be able to work around it by closing the "New transaction" popup before reconciliation. Let me know if this pops up again with that workaround!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#43708