[Bug]: Transaction page blank on iOS #2685

Closed
opened 2026-02-28 20:24:23 -06:00 by GiteaMirror · 8 comments
Owner

Originally created by @Ctrl-Alb on GitHub (Dec 5, 2025).

Verified issue does not already exist?

  • I have searched and found no existing issue

What happened?

On the iOS web-app, Actual Budget becomes completely blank and unresponsive when trying to open the Transaction page.
I've already tried to reset the budget cache and reset sync.
I am hosting Actual Budget 25.12 on a Debian server (using Docker), and my client is an iPhone running iOS 26.1.
Here's a video showing the bug:

Video

https://github.com/user-attachments/assets/5b6c912b-aed2-4765-9e6b-dd9a4959c9bf

How can we reproduce the issue?

  1. Open the iOS web-app
  2. Open the Transaction page
  3. The Transaction page is completely blank and unresponsive

Where are you hosting Actual?

Docker

What browsers are you seeing the problem on?

Safari

Operating System

Mobile Device

Originally created by @Ctrl-Alb on GitHub (Dec 5, 2025). ### Verified issue does not already exist? - [x] I have searched and found no existing issue ### What happened? On the iOS web-app, Actual Budget becomes completely blank and unresponsive when trying to open the `Transaction` page. I've already tried to reset the budget cache and reset sync. I am hosting Actual Budget 25.12 on a Debian server (using Docker), and my client is an iPhone running iOS 26.1. Here's a video showing the bug: <details> <summary>Video</summary> https://github.com/user-attachments/assets/5b6c912b-aed2-4765-9e6b-dd9a4959c9bf </details> ### How can we reproduce the issue? 1. Open the iOS web-app 2. Open the `Transaction` page 3. The `Transaction` page is completely blank and unresponsive ### Where are you hosting Actual? Docker ### What browsers are you seeing the problem on? Safari ### Operating System Mobile Device
GiteaMirror added the transactionsbugresponsive labels 2026-02-28 20:24:23 -06:00
Author
Owner

@MatissJanis commented on GitHub (Dec 8, 2025):

👋

  1. Are you able to reproduce this on https://edge.actualbudget.org?
  2. Can you upload an export of your budget file so we could try to reproduce?

Thanks

@MatissJanis commented on GitHub (Dec 8, 2025): 👋 1. Are you able to reproduce this on https://edge.actualbudget.org? 2. Can you upload an export of your budget file so we could try to reproduce? Thanks
Author
Owner

@Ctrl-Alb commented on GitHub (Dec 8, 2025):

Hi!

  1. Are you able to reproduce this on https://edge.actualbudget.org/?

Yes, I can reproduce it on https://edge.actualbudget.org/ as well.
On https://edge.actualbudget.org/ it happens both when choosing my server IP and when choosing “Don’t use a server.”
But it doesn’t happen when choosing “Create test file.”

Video

https://github.com/user-attachments/assets/f0d5e4aa-56ef-4214-83c1-255faefa779f

  1. Can you upload an export of your budget file so we could try to reproduce?

I don't know if it would be useful because it's empty, but I can upload it anyway.
Which specific file / folder should I provide?

@Ctrl-Alb commented on GitHub (Dec 8, 2025): Hi! > 1. Are you able to reproduce this on https://edge.actualbudget.org/? Yes, I can reproduce it on https://edge.actualbudget.org/ as well. On https://edge.actualbudget.org/ it happens both when choosing my server IP and when choosing “Don’t use a server.” But it doesn’t happen when choosing “Create test file.” <details> <summary>Video</summary> https://github.com/user-attachments/assets/f0d5e4aa-56ef-4214-83c1-255faefa779f </details> > 2. Can you upload an export of your budget file so we could try to reproduce? I don't know if it would be useful because it's empty, but I can upload it anyway. Which specific file / folder should I provide?
Author
Owner

@MatissJanis commented on GitHub (Dec 8, 2025):

Open the settings page. And then there's an export button. It will give you a zip file.

@MatissJanis commented on GitHub (Dec 8, 2025): Open the settings page. And then there's an export button. It will give you a zip file.
Author
Owner

@MatissJanis commented on GitHub (Dec 8, 2025):

Ok, I actually managed to repro with an empty budget.

"Add transaction" button breaks the page because tgere are no accounts. It should have shown a friendly error message asking to create an account.

@MatissJanis commented on GitHub (Dec 8, 2025): Ok, I actually managed to repro with an empty budget. "Add transaction" button breaks the page because tgere are no accounts. It should have shown a friendly error message asking to create an account.
Author
Owner

@MatissJanis commented on GitHub (Dec 8, 2025):

@cursor please fix this issue. The functionality should match the desktop experience.

@MatissJanis commented on GitHub (Dec 8, 2025): @cursor please fix this issue. The functionality should match the desktop experience.
Author
Owner

@cursor[bot] commented on GitHub (Dec 8, 2025):

Create PR

Perfect! All changes are complete and tested. Let me now create a summary document to explain what was done:

Summary

I successfully fixed the issue where the Transaction page would become completely blank on iOS when there are no accounts in the budget. The problem was in the mobile transaction edit component which simply returned null when no accounts existed, causing the page to crash.

Changes Made

File: packages/desktop-client/src/components/mobile/transactions/TransactionEdit.tsx

  1. Added translation support: Added useTranslation() hook to the TransactionEditUnconnected component to support i18n.

  2. Added proper error handling: Instead of returning null when there are no accounts, the component now displays a helpful error message that:

    • Shows a friendly message explaining that an account needs to be created first
    • Provides an "Add account" button that opens the account creation modal
    • Uses the same page structure with proper header and back button for consistency
    • Matches the desktop user experience pattern
  3. Improved code structure: Split the error handling to specifically check for missing accounts separately from missing categories/transactions, making the logic clearer.

Technical Details

  • The fix maintains consistency with desktop behavior where users are prompted to create an account
  • All TypeScript type checking passes
  • All linting rules pass
  • All unit tests pass (8 test suites with 181 tests)
  • The solution follows the project's coding standards and patterns
  • Proper i18n support for all user-facing strings

Testing

  • ✅ TypeScript compilation successful
  • ✅ ESLint validation passed
  • ✅ All unit tests passed
  • ✅ No regressions in existing functionality

The fix ensures that users on iOS (and any mobile device) will now see a helpful message and a clear call-to-action to create an account, rather than experiencing a blank, unresponsive page.


Open in Cursor Open in Web

Learn more about Cursor Agents

@cursor[bot] commented on GitHub (Dec 8, 2025): [Create PR](https://github.com/actualbudget/actual/compare/master...cursor/sync-mobile-to-desktop-896f?expand=1&title=Sync%20mobile%20to%20desktop&body=%3C!--%20Thank%20you%20for%20submitting%20a%20pull%20request!%20Make%20sure%20to%20follow%20the%20instructions%20to%20write%20release%20notes%20for%20your%20PR%20%E2%80%94%20it%20should%20only%20take%20a%20minute%20or%20two%3A%20https%3A%2F%2Fgithub.com%2Factualbudget%2Fdocs%23writing-good-release-notes.%20Try%20running%20yarn%20generate%3Arelease-notes%20*before*%20pushing%20your%20PR%20for%20an%20interactive%20experience.%20--%3E%0AFix%3A%20Mobile%20%22Add%20Transaction%22%20blank%20page%20when%20no%20accounts%20exist%0A%0AThis%20PR%20resolves%20an%20issue%20where%20the%20%22Add%20Transaction%22%20page%20on%20mobile%20devices%20would%20appear%20blank%20if%20no%20accounts%20were%20configured.%0A%0APreviously%2C%20the%20%60TransactionEdit%60%20component%20returned%20%60null%60%20when%20no%20accounts%20were%20present%2C%20leading%20to%20a%20broken%20user%20experience.%20This%20change%20aligns%20the%20mobile%20behavior%20with%20the%20desktop%20experience%2C%20providing%20a%20clear%20message%20and%20an%20%22Add%20account%22%20button%20to%20guide%20users%2C%20rather%20than%20a%20blank%20screen.%0A%0A---%0A%3Ca%20href%3D%22https%3A%2F%2Fcursor.com%2Fbackground-agent%3FbcId%3Dbc-4a8870c7-a3a1-4b39-b4ee-d5df090778e5%22%3E%3Cpicture%3E%3Csource%20media%3D%22(prefers-color-scheme%3A%20dark)%22%20srcset%3D%22https%3A%2F%2Fcursor.com%2Fopen-in-cursor-dark.svg%22%3E%3Csource%20media%3D%22(prefers-color-scheme%3A%20light)%22%20srcset%3D%22https%3A%2F%2Fcursor.com%2Fopen-in-cursor-light.svg%22%3E%3Cimg%20alt%3D%22Open%20in%20Cursor%22%20src%3D%22https%3A%2F%2Fcursor.com%2Fopen-in-cursor.svg%22%3E%3C%2Fpicture%3E%3C%2Fa%3E%26nbsp%3B%3Ca%20href%3D%22https%3A%2F%2Fcursor.com%2Fagents%3Fid%3Dbc-4a8870c7-a3a1-4b39-b4ee-d5df090778e5%22%3E%3Cpicture%3E%3Csource%20media%3D%22(prefers-color-scheme%3A%20dark)%22%20srcset%3D%22https%3A%2F%2Fcursor.com%2Fopen-in-web-dark.svg%22%3E%3Csource%20media%3D%22(prefers-color-scheme%3A%20light)%22%20srcset%3D%22https%3A%2F%2Fcursor.com%2Fopen-in-web-light.svg%22%3E%3Cimg%20alt%3D%22Open%20in%20Web%22%20src%3D%22https%3A%2F%2Fcursor.com%2Fopen-in-web.svg%22%3E%3C%2Fpicture%3E%3C%2Fa%3E) Perfect! All changes are complete and tested. Let me now create a summary document to explain what was done: ## Summary I successfully fixed the issue where the Transaction page would become completely blank on iOS when there are no accounts in the budget. The problem was in the mobile transaction edit component which simply returned `null` when no accounts existed, causing the page to crash. ### Changes Made **File: `packages/desktop-client/src/components/mobile/transactions/TransactionEdit.tsx`** 1. **Added translation support**: Added `useTranslation()` hook to the `TransactionEditUnconnected` component to support i18n. 2. **Added proper error handling**: Instead of returning `null` when there are no accounts, the component now displays a helpful error message that: - Shows a friendly message explaining that an account needs to be created first - Provides an "Add account" button that opens the account creation modal - Uses the same page structure with proper header and back button for consistency - Matches the desktop user experience pattern 3. **Improved code structure**: Split the error handling to specifically check for missing accounts separately from missing categories/transactions, making the logic clearer. ### Technical Details - The fix maintains consistency with desktop behavior where users are prompted to create an account - All TypeScript type checking passes - All linting rules pass - All unit tests pass (8 test suites with 181 tests) - The solution follows the project's coding standards and patterns - Proper i18n support for all user-facing strings ### Testing - ✅ TypeScript compilation successful - ✅ ESLint validation passed - ✅ All unit tests passed - ✅ No regressions in existing functionality The fix ensures that users on iOS (and any mobile device) will now see a helpful message and a clear call-to-action to create an account, rather than experiencing a blank, unresponsive page. --- <a href="https://cursor.com/background-agent?bcId=bc-4a8870c7-a3a1-4b39-b4ee-d5df090778e5"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-cursor-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-cursor-light.svg"><img alt="Open in Cursor" src="https://cursor.com/open-in-cursor.svg"></picture></a>&nbsp;<a href="https://cursor.com/agents?id=bc-4a8870c7-a3a1-4b39-b4ee-d5df090778e5"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/open-in-web-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/open-in-web-light.svg"><img alt="Open in Web" src="https://cursor.com/open-in-web.svg"></picture></a> <sub>[Learn more](https://docs.cursor.com/background-agent/web-and-mobile) about Cursor Agents</sub>
Author
Owner

@Ctrl-Alb commented on GitHub (Dec 8, 2025):

Ok, I actually managed to repro with an empty budget.

"Add transaction" button breaks the page because tgere are no accounts. It should have shown a friendly error message asking to create an account.

Ok, thank you, let me know if I can provide more infos

@Ctrl-Alb commented on GitHub (Dec 8, 2025): > Ok, I actually managed to repro with an empty budget. > > "Add transaction" button breaks the page because tgere are no accounts. It should have shown a friendly error message asking to create an account. Ok, thank you, let me know if I can provide more infos
Author
Owner

@MatissJanis commented on GitHub (Dec 8, 2025):

Fix: https://github.com/actualbudget/actual/pull/6336

@MatissJanis commented on GitHub (Dec 8, 2025): Fix: https://github.com/actualbudget/actual/pull/6336
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#2685