Differences in behavior in listView / tabbed containers between public and edit

I'm experiencing something really weird. When testing my app in the edit or preview modes, everything works correctly. However, upon using a public link or having an external user log in, suddenly, I am experiencing very odd behavior.

Specifically, this occurs with a listView component containing a tabbed container with several textInput components and a few selection components.

When entering data into the textInputs or choosing an option in a selection in the edit page, the JS Query I have triggering to update an array holding that information working perfectly - and my table displays the data as it is entered.

However, when I am in a public link, this is no longer the case. The array and table will still update, but the text input boxes and selection boxes are suddenly 'blanked' out. I cannot enter more than one box's data at a time before the whole thing sort of collapses.

I'm uploading a super sanitized version of this JSON here - I don't think I've mangled it in sanitizing, but I may have. You'll also probably scoff at my spaghetti code, and if that's the issue I'll be very happy.
Sanitized page for submission.json (77.9 KB)

Super appreciate any replies! Thanks!

Just adding a follow-up here.

I have not been able to figure out what is wrong here, but I did end up completely rebuilding this page using a wizard to loop users through adding multiple items to the table instead of a listView component... Most of the code is still the same between the two pages, just the implementation is different.

And that seems to work.

So, the page that I submitted in this thread is still broken, and I believe this is still an actual bug. But I have gotten around this by completely rebuilding the page.

Hi @Chris_Doty,

Thanks for reporting this! I'm glad you have a workaround.

I'm able to reproduce the issue with your export, so I'll report this to our team for a fix :crossed_fingers:

1 Like

Hi @Tess - thanks for the follow-up and for sending it to the team!

Hey @Tess just wanted to check in here to see if this was in the backlog? I'm running into a second instance of this same issue breaking an app and I'm debating whether I need to build a full workaround again.

Hi @Tess / Retool team - I spent a good long while yesterday and today trying to create workarounds that don't require a wizard or another method to replace the listView component.

In that testing I have:

  • Removed the listView from the tabbed container and moved them to containers that I'm programmatically hiding / showing based on similar logic to what I was doing within the tabbed container
  • I have tried creating new listView components using every repeatable offered in the component library
  • I have tried removing the container that is around the listView from other containers
  • I have tried leaving the listView completely orphaned in the UI not in a container
  • I have tried completely re-writing the functions that I am using and making them nearly exactly mirror the one listView that I have in an app that does, for some reason, work externally -- and I cannot for the life of me get the behavior to match.

None of these work and all experience the same issues as I documented two months ago.

I'm left wondering if there is any way for me to get listViews to work externally at all? Everything works on the dev side, but text or dropdown selections are lost seemingly no matter what. I've considered if it's worth using the legacy listView at this point but I also worry that the legacy component will be sunset before a fix is implemented.

I'd really appreciate some direction here because this has been a significant blocker for me for quite a while. Having repeatables working / available in public-facing applications is something that I would think is a high priority to fix.

Hi @Chris_Doty,

Thanks for checking in! We haven't been able to prioritize this issue over other projects on our roadmap yet :disappointed:

If it's working better, you're certainly welcome to leverage the legacy list view until we sort this out. The downsides with switching to a legacy component are: the legacy version isn't as performant, there isn't a migration path between new & legacy, and we won't be adding new features to the legacy version. Eventually, we'll move it to be a deprecated component, but even then, you can still use it.