Enforcing the latest version of your Power App

You may also like...

11 Responses

  1. greg says:

    Thanks you for this thorough walkthrough to one of the classic problems. I think the code for when you want to check for version and either navigate to the relaodScreen or carry on is missing from the second code-block (code is is identical to first code-block.)

    All the best

    • iAm_ManCat says:

      Thanks for flagging this – I have removed the second code block – the description below it explained that the upcoming code was for the timer which has the navigate, but I think that was unclear so have removed the whole block as redundant 🙂

  2. Tim says:

    Awesome tutorials
    Is there an place we can download it sample?
    Thank you

    • iAm_ManCat says:


      All the sample code is provided in the blog, there is not much code to copy – and a sample App wouldn’t help as you need to create the SharePoint side yourself and according to your needs 🙂


  3. Clay Collins says:

    Good morning. I have a few question:
    1. Regarding your loading screen – I wasn’t familiar with it (still learning) but looked it up and learned about the built-in LoadingSpinner feature. I also found that some add their own GIF/SVG, etc. And others may create a Loading Screen, which is seems like you did (which looks like the screenshot has the gblVersionNumber I was confused about earlier, so I guess that may have been what you named it when you were going through it that time).
    Whenever I set my Timer.OnTimerEnd = Select(btnReloadApp); (mine’s named differently, but that’s ok) I get the error: “Select of a control that is not on this screen.” It seems like the discrepancy (at least in my case) is that it’s expecting to have access to the Reload button, but can’t do it from the Loading Screen. Could you elaborate a bit more on the design of the loading page and related items.

    2. In regards to versioning – How does that correlate to PowerApps versioning? How do you restore a previous version if needed? To you make any reference/connection between your versioning system and that of Microsoft’s?

    3. Your loading screen shows a progress bar. When looking up progress bar in PowerApps, I’ve found info regarding progressing through multiple pages/screen, but nothing related to a Loading Screen.
    I’m sure I’ll have other questions as I continue through the tutorial, but these are the issues I’m running into so far.

    • iAm_ManCat says:

      Hey Clay!

      Wow that’s quite a few questions – happy to answer 🙂

      The loading screen I created is part of the template I created to theme/brand Power Apps so that all inserted controls are automatically branded – you can get it here – I have SVGs for the spinner, and I never use the default LoadingSpinner.

      When using the Select function, the control you want to Select must be on the same screen as where you are calling the function from – so in my case I have my button on the same screen as the timer, and the timer is not visible.

      The Power Apps versioning is poor at best – I do not find it useful as there’s no element of control especially in regards to whether the item is dev/uat/prod – what I do when editing apps is save the same version notes that I will store on the list in the app version notes when saving.

      The loading bar in this case is just a standard Power Apps control that I modify the width of to turn it into a loading bar – you can see the details of this in the template link I shared above .


  4. Clay Collins says:

    In your timer OnTimerEnd, it looks like a typo, since it references a variable that I hadn’t seen mentioned previously. Shouldn’t the code be:

    !(gblAppVersion = gblAppVersion_List),
    Navigate('Version Mismatch Screen');

    Instead of:

    !(gblVersionNumber = gblAppVersion_List),
    Navigate('Version Mismatch Screen');

  5. Srinivas Thota says:

    Thank you so much for writing a detailed blog on browser caching issues with PowerApps.
    It would be great if you could clarify couple of queries here:
    1. I believe at times, even with reload of the app manually, PowerApps is unable to pick the latest version. So I think the problem may still persist even if we implement this work around unless we clear the cache of the power app when launching it. Sometimes I also feel that it takes a bit of time to load the latest app even after clearing the cache.

    2. Also, what do you think of creating only one table App_Versios with 3 parameters such as DEV Version, Test version, PROD version so we do not need to connect the table in every environment and modify the logic accordingly when we promote to the target environment.

    We have been facing these issues in our app for a long-time now. Thank you once again for putting up all details here.

    • iAm_ManCat says:

      Hi Srinivas,

      Thanks for reaching out – happy to clarify your queries as best I am able:

      1. The caching will always be on the browser side, so if there is a lack of refreshing, this is the browser’s fault (this can be proved by opening the App on a computer that has never opened the app). However, you are right in that there is an approximately 0 to 2 minute delay between hitting publish and the newer version being made available for consumption.

      2. In this example I created three tables, one for each environment – the idea was that in the case of Dataverse, you would HAVE to have three separate tables as you cannot reference a table in another environment (however in Dataverse, you could have them all be the same name as you would be promoting the solution through rather than having three with different names).
      If you are using SharePoint, I would still advise using three tables, and you could reference them with an environment variable that points to different tables but uses the same variable name between your solutions.
      What you have described using a singular list with a column for the parameters is possible, however it’s not something I would advise as there is a lot of room for accidental error and we should, where possible, not have our dev/uat/prod data intermingled.
      I’ll give you an example of why we try and mitigate the potential for downtime/damage – let’s say someone changes the column type for your VersionNumber from text to number – that would immediately break all apps connected to the list – if there are three separate lists then either dev OR prod OR uat are affected but only one of the three, but if you have one singular list and something goes wrong, then all versions will not work.

      I hope this helps shed some further light on it – let me know if you have other questions around this!

      • Srinivas Thota says:

        Thank you once again for clarifying my queries with the detailed explanation.

Leave a Reply

Your email address will not be published. Required fields are marked *