Custom components not saved

Hello! I'm only getting help from Forum, but I'm writing for the first time.
Last week, I updated the retool version to Retool version 3.12.5. After the update, if you create a custom component and refresh it without any modifications, the custom component disappears. Is this a problem depending on the version? Or is there something I'm missing?
I am using Business Plan, self-hosted
Thank you
ezgif.com-video-to-gif

Hi @jaeweon Thanks for reaching out! I hope the forums have been helpful so far :slightly_smiling_face:

For this issue, I don't think you're missing anything! It is very strange :thinking:

Do you see it in the component tree?

What does it say in the app history?

Are there any console errors? and does it happen with any other component types?

Just in case, you'll want to ensure you don't have this app open in edit mode on other tabs/windows - and you want to make sure no one else is editing the app at the same time as you.

One idea is to try to trigger a save manually - even though it should be happening automatically. (command + s on mac triggers a page save)

Thank you for your reply @Tess :smiley:
When you create custom components, they are visible in the component tree, but disappear from the component tree after refreshing.
It is not being updated in the app history and does not occur in other component types.
It is also not saved normally when you manually save it on your Mac.
There is no error in the console, and when creating custom components, only the log called Performance log: handling commit changeset: 25.448974609375 ms is created.
When you refresh or enter the page,
Failed to load resource: the server responded with a status of 403 () /api/organization/instrumentation:1
Failed to load resource: the server responded with a status of 400 ()
/api/secretsManager/listSecrets:1
I get an error on the console, is it related to this error?

Thank you for the follow up, @jaeweon! Hmm I don't think those errors are related. I am looking into this internally!

I'd also recommend trying this in an incognito window, and if possible, upgrading to the latest version of 3.12 (there were a couple more releases in 3.12 after 3.12.5)

Is this happening in multiple apps?

Thank you for your checking @Tess !
I updated it to the latest version today and tested it on 3.16.1, but the same thing is happening :smiling_face_with_tear:
The same is happening with multiple apps in the same version, but the custom component was working normally in my locally tested retool version 2.116.3. Please keep that in mind!

Hi @jaeweon Is there anything in the console when you try to manually save? (command + s) Does using command + s save any changes to the canvas (adding a different type of component, moving a component, etc)

A teammate pointed out that in your screen recording, it also doesn't seem like the button move persists on page load. This makes it seem like there is a problem with page saves. Can you check if there are any failed save requests?

It may also be worth checking to see if there are any errors in your container logs.

Hi @Tess !
Manual storage using command + S does not respond (only custom components are applicable, and other components have a notification that they have been saved successfully!)
The reason why I moved the button on the screen recording is to show that even if I do other tasks after creating custom components, it is not being saved normally :slightly_smiling_face:
I also checked the container log and found that there was no error.

However, the interesting part is that when you create another component, you call url that calls save, but custom component doesn't call url that calls url calling save. :thinking:
Attached is the log below!

Ordinary components

{
  "level": "info",
  "message": {
    "http": {
      "method": "POST",
      "url_base": "{url}",
      "url_path": "/api/hasViewed/ide-redesign-onboarding-nux"
    },
    "type": "REQUEST_BEGIN"
  },
  "organization": {
    "id": 1,
    "name": "-"
  },
  "pid": 53,
  "requestId": "40d052b1-763f-4d98-8375-803d63d3543e",
  "timestamp": "2023-10-25T02:30:15.911Z",
  "user": {
    "email": "-",
    "sid": "-"
  }
}
{
  "level": "info",
  "message": {
    "http": {
      "method": "POST",
      "status_code": 200,
      "url_base": "{url}",
      "url_path": "/api/hasViewed/ide-redesign-onboarding-nux"
    },
    "type": "REQUEST_FINISH"
  },
  "organization": {
    "id": 1,
    "name": "-"
  },
  "pid": 53,
  "requestId": "40d052b1-763f-4d98-8375-803d63d3543e",
  "timestamp": "2023-10-25T02:30:15.916Z",
  "user": {
    "email": "-",
    "sid": "-"
  }
}
{
  "level": "info",
  "message": {
    "http": {
      "method": "POST",
      "url_base": "{url}",
      "url_path": "/api/pages/uuids/a0e12c52-7215-11ee-a162-73fb328542b9/save"
    },
    "type": "REQUEST_BEGIN"
  },
  "organization": {
    "id": 1,
    "name": "-"
  },
  "pid": 84,
  "requestId": "038ea2ca-19a3-48c0-815d-fe493c9b9688",
  "timestamp": "2023-10-25T02:30:15.950Z",
  "user": {
    "email": "-",
    "sid": "-"
  }
}
{
  "level": "info",
  "message": {
    "http": {
      "method": "POST",
      "status_code": 200,
      "url_base": "{url}",
      "url_path": "/api/pages/uuids/a0e12c52-7215-11ee-a162-73fb328542b9/save"
    },
    "type": "REQUEST_FINISH"
  },
  "organization": {
    "id": 1,
    "name": "-"
  },
  "page": {
    "embed": true,
    "folderId": 12,
    "name": "testtt",
    "uuid": "a0e12c52-7215-11ee-a162-73fb328542b9"
  },
  "pid": 84,
  "requestId": "038ea2ca-19a3-48c0-815d-fe493c9b9688",
  "timestamp": "2023-10-25T02:30:15.979Z",
  "user": {
    "email": "-",
    "sid": "-"
  }
}

Custom Component

{
  "level": "info",
  "message": {
    "http": {
      "method": "POST",
      "url_base": "{url}",
      "url_path": "/api/hasViewed/ide-redesign-onboarding-nux"
    },
    "type": "REQUEST_BEGIN"
  },
  "organization": {
    "id": 1,
    "name": "-"
  },
  "pid": 84,
  "requestId": "2f4c5a3b-7723-46f4-b96f-b044cdff138a",
  "timestamp": "2023-10-25T02:34:36.548Z",
  "user": {
    "email": "-",
    "sid": "-"
  }
}
{
  "level": "info",
  "message": {
    "http": {
      "method": "POST",
      "status_code": 200,
      "url_base": "{url}",
      "url_path": "/api/hasViewed/ide-redesign-onboarding-nux"
    },
    "type": "REQUEST_FINISH"
  },
  "organization": {
    "id": 1,
    "name": "-"
  },
  "pid": 84,
  "requestId": "2f4c5a3b-7723-46f4-b96f-b044cdff138a",
  "timestamp": "2023-10-25T02:34:36.550Z",
  "user": {
    "email": "-",
    "sid": "-"
  }
}

I hope it helps

Thank you for the update, @jaeweon! :disappointed: Super strange! Any chance you can share an export of the app? If so, feel free to send as a direct message. The data from resources doesn't get exported so it would just be the components and app configuration. I think that would help us to either replicate the issue & fix it, or figure out what's different about our environment versus yours

Hi @jaeweon,

Thank you for sending over the export! I haven't been able to reproduce this issue after importing your app into my own instance :thinking: Our team also hasn't been able to reproduce this on past instances & we haven't found any PRs that could have caused this. All this to say, we're wondering if there's something different with the instance you're on than what we're testing on.

-Have you tested in this an incognito window? It's rare, but occasionally a browser extension can impact the app functionality

-Can you share a list of the environment variables set on your instance?

-Can you check for any global javascript? Settings->Advanced->Preloaded JavaScript Again, it would be unusual, but maybe something there is messing with the app

Hi @Tess
I'm sorry I didn't help you :smiling_face_with_tear:

  • I tested it in this an incognito window, but it happened the same way and it was not resolved.

  • Can you tell me how to check and share the list of environmental variables? I tried to share it, but I couldn't find where to check it

  • I checked, but I didn't enter anything in Global JavaScript.

I hope this problem will be solved soon! Please feel free to let me know if you need any more information:slightly_smiling_face:

Hi @jaeweon,

The way you set environment variables depends on your deployment method. For instance if you're using docker-compose, your env vars will be in your docker.env file.

How are you deploying Retool? What browser/os are you using? Do you have any teammates that are also experiencing this?

Hi @jaeweon,

Thanks for sending over the env vars! Unfortunately, I don't see anything there that would cause issues :disappointed:

Since we haven't been able to reproduce this, it would be helpful to know the exact device you're using & the exact version # of Chrome.

If you import the attached app (it's a dummy app with a custom component), does it work?
custom-20component-20export.json

Hi, @Tess
Currently, the Chrome version is 119.0.6045.160 :slight_smile:

image
If you import the JSON file you sent from the list, you get an error like the image, and if you create the file and import it from the inside, it will be drawn normally, but if you refresh it, it will disappear as before :smiling_face_with_tear:

I think that something may not be missing during the installation process while upgrading the current retool version.

  1. Is there any way to downgrade the version?
  2. Is there an easy way to reinstall without losing what you've been working on?

I agree that it seems there is some issue with the instance post-upgrade, but I would expect to see some container logs errors about this :thinking: Can you confirm that you've turned on logging to the most verbose setting? Logs could help us better understand how/when this happened.

Generally, we try to fix forward unless absolutely necessary. Database migrations that run with major updates aren't guaranteed to be backwards compatible. Is your db externalized or are you using the docker container? I'd want to make sure we have a backup of your database before doing any rollbacks.

Since we don't have any other reports of this, I'm not sure what would be the best version to consider rolling back to :thinking: I know that you mentioned custom components were working on 2.116.3, but that would be a significant rollback and I'd be worried about breaking changes. Do you know if there is a more recent version where it was working? Ideally, we can minimize the number of versions back. After we decide on a version, I can try to check in with our team about any major migrations prior to rolling back

Hi @Tess Thank you so much for always helping me :smile:

Logging is turned on, and logs for these issues could not be verified separately :smiling_face_with_tear:

Currently, our DB is not externalized separately Also, we are distributing to Docker, so we are using Docker containers

I don't remember the latest version that worked, but I was using the latest version from the version that had the same GUI as version 2.116.3
Can you tell me what version this is?