"Unable to save changes" #59

Closed
opened 2026-02-28 18:46:57 -06:00 by GiteaMirror · 8 comments
Owner

Originally created by @nref on GitHub (Apr 29, 2022).

If I import a brand-new YNAB4 budget (via zip file), close the budget, and reopen it, I am greeted with the error:

Unable to save changes
This browser only supports using the app in one tab at a time, and another tab has opened the app. No changes will be saved from this tab; please close it and continue working in the other one.

image

Here is the budget. There is one account with one transaction. test~9F711BFB.ynab4.zip

I only have one tab open. Change do actually save. Verified by checking the sqlite db.

I'm using Firefox 99.0.1 on Windows 10 19043. Doesn't seem to happen on Chrome 100.0.4896.127 even while the Firefox tab is still open and even if I open two tabs to Actual in Chrome.

Budget attached.

Originally created by @nref on GitHub (Apr 29, 2022). If I import a brand-new YNAB4 budget (via zip file), close the budget, and reopen it, I am greeted with the error: ``` Unable to save changes This browser only supports using the app in one tab at a time, and another tab has opened the app. No changes will be saved from this tab; please close it and continue working in the other one. ``` ![image](https://user-images.githubusercontent.com/2089725/166069564-f8705e42-fc29-403a-bad6-9719d65dcd1e.png) Here is the budget. There is one account with one transaction. [test~9F711BFB.ynab4.zip](https://github.com/actualbudget/actual-server/files/8594710/test.9F711BFB.ynab4.zip) I only have one tab open. Change do actually save. Verified by checking the sqlite db. I'm using Firefox 99.0.1 on Windows 10 19043. Doesn't seem to happen on Chrome 100.0.4896.127 even while the Firefox tab is still open and even if I open two tabs to Actual in Chrome. Budget attached.
GiteaMirror added the bugtransactionsimporters labels 2026-02-28 18:46:57 -06:00
Author
Owner

@wmertens commented on GitHub (Apr 30, 2022):

I think this issue should be moved to actualbudget/actual. There's already an issue about Firefox there though, so this may be a good repro for it if it's the same problem.

@wmertens commented on GitHub (Apr 30, 2022): I think this issue should be moved to actualbudget/actual. There's already [an issue about Firefox](https://github.com/actualbudget/actual/issues/5) there though, so this may be a good repro for it if it's the same problem.
Author
Owner

@MatissJanis commented on GitHub (Jan 25, 2023):

👋 I believe we have fixed the issue and it will be OK in the upcoming release since I'm no longer able to reproduce the issue with the example file.

@MatissJanis commented on GitHub (Jan 25, 2023): 👋 I believe we have fixed the issue and it will be OK in the upcoming release since I'm no longer able to reproduce the issue with the example file.
Author
Owner

@UnaDeKalamares commented on GitHub (Feb 24, 2025):

I'm sorry to resurrect this issue. but I'm trying to self-host on Docker Compose, and I can see the same error on the latest release (v25.2.1). This are the steps I follow:

  • Create the following compose file:
services:
  actual_server:
    image: docker.io/actualbudget/actual-server:latest
    ports:
      # This line makes Actual available at port 5006 of the device you run the server on,
      # i.e. http://localhost:5006. You can change the first number to change the port, if you want.
      - '5006:5006'
    volumes:
      # Change './actual-data' below to the path to the folder you want Actual to store its data in on your server.
      # '/data' is the path Actual will look for its files in by default, so leave that as-is.
      - /srv/mergerfs/RaspiNAS/Compose-Data/actual-budget/actual-data:/data
    healthcheck:
      # Enable health check for the instance
      test: ['CMD-SHELL', 'node src/scripts/health-check.js']
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 20s
    restart: unless-stopped

I'm storing the server data behind a mergerfs file system
Please notice that I'm not using HTTP, at least for this tests. The server only runs locally.

  • Start the application, and open the url from a client (I've tried Firefox 135.0.1 and Safari 18.3 on MacOS)

  • I'm prompted to enter a new server password and then Sign in:

Image

  • I select "Start fresh"

  • I immediately get the "Unable to save changes" error popup, even though no other tab is open

Image

  • If I refresh the page, I get an unknown problem:

Image

Is there anything I might be missing here? I'm running other applications (Syncthing, Home Assistant) in this Docker Compose setup with no issues.

Thank you for your time.

@UnaDeKalamares commented on GitHub (Feb 24, 2025): I'm sorry to resurrect this issue. but I'm trying to self-host on Docker Compose, and I can see the same error on the latest release (v25.2.1). This are the steps I follow: - Create the following compose file: ``` services: actual_server: image: docker.io/actualbudget/actual-server:latest ports: # This line makes Actual available at port 5006 of the device you run the server on, # i.e. http://localhost:5006. You can change the first number to change the port, if you want. - '5006:5006' volumes: # Change './actual-data' below to the path to the folder you want Actual to store its data in on your server. # '/data' is the path Actual will look for its files in by default, so leave that as-is. - /srv/mergerfs/RaspiNAS/Compose-Data/actual-budget/actual-data:/data healthcheck: # Enable health check for the instance test: ['CMD-SHELL', 'node src/scripts/health-check.js'] interval: 60s timeout: 10s retries: 3 start_period: 20s restart: unless-stopped ``` _I'm storing the server data behind a mergerfs file system_ _Please notice that I'm not using HTTP, at least for this tests. The server only runs locally._ - Start the application, and open the url from a client (I've tried Firefox 135.0.1 and Safari 18.3 on MacOS) - I'm prompted to enter a new server password and then Sign in: ![Image](https://github.com/user-attachments/assets/f6268aa2-b376-4ede-a617-42f634ee61d1) - I select "Start fresh" - I immediately get the "Unable to save changes" error popup, even though no other tab is open ![Image](https://github.com/user-attachments/assets/16a66fc3-ff66-4e9e-bcb0-d0ed232bf74b) - If I refresh the page, I get an unknown problem: ![Image](https://github.com/user-attachments/assets/0e4ee07e-12b6-4ea7-8cdb-baa370e95c9b) Is there anything I might be missing here? I'm running other applications (Syncthing, Home Assistant) in this Docker Compose setup with no issues. Thank you for your time.
Author
Owner

@matt-fidd commented on GitHub (Feb 24, 2025):

Hi @UnaDeKalamares, would you be able to check the browser logs (https://appuals.com/open-browser-console/) and see if there are any errors please?

@matt-fidd commented on GitHub (Feb 24, 2025): Hi @UnaDeKalamares, would you be able to check the browser logs (https://appuals.com/open-browser-console/) and see if there are any errors please?
Author
Owner

@UnaDeKalamares commented on GitHub (Feb 24, 2025):

Thank you for your quick response. Here are the errors that appear on the web developer console:

Image

And this seems to be the JS method throwing that exception:

  async write(writes, cachedFirstBlock, hasLocked) {
    let db = await this.getDb(this.dbName);

    // We need grab a readwrite lock on the db, and then read to check
    // to make sure we can write to it
    let trans = db.transaction(['data'], 'readwrite');
    let store = trans.objectStore('data');

    await new Promise((resolve, reject) => {
      let req = store.get(0);
      req.onsuccess = e => {
        if (hasLocked) {
          if (!isSafeToWrite(req.result, cachedFirstBlock)) {
            if (this.onFallbackFailure && !this.hasAlertedFailure) {
              this.hasAlertedFailure = true;
              this.onFallbackFailure();
            }
            reject(new Error('Fallback mode unable to write file changes'));
            return;
          }
        }

        // Flush all the writes
        for (let write of writes) {
          store.put(write.value, write.key);
        }

        trans.onsuccess = () => resolve();
        trans.onerror = () => reject();
      };
      req.onerror = reject;
    });
  }

In the end, I solved the issue by creating a self-signed certificate, and connecting via HTTPS. I'm not sure if the issue and my solution are related: in theory, HTTPS isn't required, right? As per the documentation on enabling HTTPS

@UnaDeKalamares commented on GitHub (Feb 24, 2025): Thank you for your quick response. Here are the errors that appear on the web developer console: ![Image](https://github.com/user-attachments/assets/c18f79a9-603b-41b2-86af-9c1662549017) And this seems to be the JS method throwing that exception: ``` async write(writes, cachedFirstBlock, hasLocked) { let db = await this.getDb(this.dbName); // We need grab a readwrite lock on the db, and then read to check // to make sure we can write to it let trans = db.transaction(['data'], 'readwrite'); let store = trans.objectStore('data'); await new Promise((resolve, reject) => { let req = store.get(0); req.onsuccess = e => { if (hasLocked) { if (!isSafeToWrite(req.result, cachedFirstBlock)) { if (this.onFallbackFailure && !this.hasAlertedFailure) { this.hasAlertedFailure = true; this.onFallbackFailure(); } reject(new Error('Fallback mode unable to write file changes')); return; } } // Flush all the writes for (let write of writes) { store.put(write.value, write.key); } trans.onsuccess = () => resolve(); trans.onerror = () => reject(); }; req.onerror = reject; }); } ``` In the end, I solved the issue by creating a self-signed certificate, and connecting via HTTPS. I'm not sure if the issue and my solution are related: in theory, HTTPS isn't required, right? [As per the documentation on enabling HTTPS](https://actualbudget.org/docs/config/https/)
Author
Owner

@thaycafe commented on GitHub (Aug 1, 2025):

I'm sorry to resurrect this issue. but I'm trying to self-host on Docker Compose, and I can see the same error on the latest release (v25.2.1). This are the steps I follow:

* Create the following compose file:
services:
  actual_server:
    image: docker.io/actualbudget/actual-server:latest
    ports:
      # This line makes Actual available at port 5006 of the device you run the server on,
      # i.e. http://localhost:5006. You can change the first number to change the port, if you want.
      - '5006:5006'
    volumes:
      # Change './actual-data' below to the path to the folder you want Actual to store its data in on your server.
      # '/data' is the path Actual will look for its files in by default, so leave that as-is.
      - /srv/mergerfs/RaspiNAS/Compose-Data/actual-budget/actual-data:/data
    healthcheck:
      # Enable health check for the instance
      test: ['CMD-SHELL', 'node src/scripts/health-check.js']
      interval: 60s
      timeout: 10s
      retries: 3
      start_period: 20s
    restart: unless-stopped

I'm storing the server data behind a mergerfs file system Please notice that I'm not using HTTP, at least for this tests. The server only runs locally.

* Start the application, and open the url from a client (I've tried Firefox 135.0.1 and Safari 18.3 on MacOS)

* I'm prompted to enter a new server password and then Sign in:

Image

* I select "Start fresh"

* I immediately get the "Unable to save changes" error popup, even though no other tab is open

Image

* If I refresh the page, I get an unknown problem:

Image

Is there anything I might be missing here? I'm running other applications (Syncthing, Home Assistant) in this Docker Compose setup with no issues.

Thank you for your time.

I'm having the same issue

@thaycafe commented on GitHub (Aug 1, 2025): > I'm sorry to resurrect this issue. but I'm trying to self-host on Docker Compose, and I can see the same error on the latest release (v25.2.1). This are the steps I follow: > > * Create the following compose file: > > > ``` > services: > actual_server: > image: docker.io/actualbudget/actual-server:latest > ports: > # This line makes Actual available at port 5006 of the device you run the server on, > # i.e. http://localhost:5006. You can change the first number to change the port, if you want. > - '5006:5006' > volumes: > # Change './actual-data' below to the path to the folder you want Actual to store its data in on your server. > # '/data' is the path Actual will look for its files in by default, so leave that as-is. > - /srv/mergerfs/RaspiNAS/Compose-Data/actual-budget/actual-data:/data > healthcheck: > # Enable health check for the instance > test: ['CMD-SHELL', 'node src/scripts/health-check.js'] > interval: 60s > timeout: 10s > retries: 3 > start_period: 20s > restart: unless-stopped > ``` > > _I'm storing the server data behind a mergerfs file system_ _Please notice that I'm not using HTTP, at least for this tests. The server only runs locally._ > > * Start the application, and open the url from a client (I've tried Firefox 135.0.1 and Safari 18.3 on MacOS) > > * I'm prompted to enter a new server password and then Sign in: > > > ![Image](https://github.com/user-attachments/assets/f6268aa2-b376-4ede-a617-42f634ee61d1) > > * I select "Start fresh" > > * I immediately get the "Unable to save changes" error popup, even though no other tab is open > > > ![Image](https://github.com/user-attachments/assets/16a66fc3-ff66-4e9e-bcb0-d0ed232bf74b) > > * If I refresh the page, I get an unknown problem: > > > ![Image](https://github.com/user-attachments/assets/0e4ee07e-12b6-4ea7-8cdb-baa370e95c9b) > > Is there anything I might be missing here? I'm running other applications (Syncthing, Home Assistant) in this Docker Compose setup with no issues. > > Thank you for your time. I'm having the same issue
Author
Owner

@matt-fidd commented on GitHub (Aug 1, 2025):

@thaycafe Hey! 👋

Could you open the browser console (F12, click console tab at the top) and see what errors come up when the red message appears in your second screenshot please?

@matt-fidd commented on GitHub (Aug 1, 2025): @thaycafe Hey! 👋 Could you open the browser console (F12, click console tab at the top) and see what errors come up when the red message appears in your second screenshot please?
Author
Owner

@logicallypositive commented on GitHub (Aug 18, 2025):

I was having a similar issue. I first started server from my laptop with docker-compose and then switched to running it on a separate local server. Problem was fixed from after i cleared some browser storage.

Image
@logicallypositive commented on GitHub (Aug 18, 2025): I was having a similar issue. I first started server from my laptop with docker-compose and then switched to running it on a separate local server. Problem was fixed from after i cleared some browser storage. <img width="479" height="202" alt="Image" src="https://github.com/user-attachments/assets/feae6883-5073-4286-a5a5-44de96b12094" />
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#59