Hello,
Over a year ago I built an app that several units use for strategic planning. We did not have access to the premium SQL connector, so we used SharePoint lists as the data source. Because of the relational and unit-specific nature of the data, I've had to add a lot of formulas for filtering/sorting tables and dropdowns. There are also global variables set by user interaction with dropdowns and tables and buttons.
They requested enhancements to the app in January, and we tested and everything was working as expected. Yesterday I heard that the "Add New Actions" screen had a "Saving your data..." popup that was not going away. When I looked at that screen in the studio, I realized I had a second form hidden on that screen (to save the action title and unit to a related list). It's triggered by a timer and includes a data source refresh, so that the new Action would be available in the lookup column when the form tried to save. The popup is supposed to go away after this second form submits successfully, so I determined the hangup was between the Action being saved (which it was - I checked the list) and the second form submission.
I opened the Monitor and tried to add a new action. While changing individual fields everything looked simple. Then I clicked the "Save" button and the number of lines in the monitor exploded. It looks like controls on other screens are requesting data even though those screens are not being viewed. I thought that wasn't supposed to be the case. For example, there is an "Actions View Table" on another screen that is generating hundreds of alternating "getRows" and "getRowsCount" operations. I'm also seeing hundreds of lines of a Text function that has completely blank details, except for the result - "The number passed in is a blank value."
It looks like updating a global variable (VarAction) with the Save button is causing other places that use it to update, and maybe updating the one data source is causing the tables that use it to update. But I'm also seeing a table's filter script that does not include that variable - it also does not use the data source that was refreshed. I have no idea why that table would be doing anything while this other screen is showing. I do have some elements referencing a template screen, but not the other screens.
As a workaround I'm going to be disabling the components that save to that secondary list, so that people can save actions and have the correct popup appear when it's successful. I can set up a Flow to fill in the missing step. But I'm very concerned about the background activity going on with this app. Any suggestions on how to improve its performance are appreciated!