Reading Time 5 minutes

In my first 50 days of PowerApps, I have encountered a lot of common issues that have challenged my understanding and development skills. These obstacles have taught me valuable lessons and prompted me to find effective solutions.

One of the initial challenges I faced was building navigation via components. The way the navigation is styled, you have to make it be able to generate a menu off a JSON object of the menus with submenus. There is no native control in PowerApps for this, but there is a large amount of tutorials. Unfortunately for me, I needed the differing functionality of two different tutorials (accordion menu and submenus) so it took a while to figure out how to combine them. Another related issue is that I should have defined a colour guide of items at the start when developing initial components, rather than changing each item in the entire application to a specific colour, which would have saved a lot of hassle.

Another hurdle I encountered was building everything with a static Collection filled with subcollections/Nested Collections. At first, it let me see all data at a glance very easily, but as I progressed I realised PowerApps support for subcollections is spotty at best. If I was developing any application again I would avoid subcollections and any modifications to subcollections extensively. Instead what I ended up doing was having multiple collections which were all linked via a common ID. This proved to be much easier and more reliable. I would really recommend avoiding them unless absolutely necessary.

Furthermore, I made the mistake of building out forms without immediately linking them to the appropriate data structures. This oversight led to a disjointed user experience and made it arduous to retrieve and update necessary information. Moving forward, I now prioritise establishing these connections from the start, It also made the app feel like it was closer to being finished so that my estimates for time remaining were further off base. A lot of what I did initially was changed when I actually started building the app as well, because there was a lot of repeating elements in the application.

Additionally, I realised the importance of naming everything clearly.  I was a little lax on this at first, only doing the ‘important’ half of the objects that I would be interacting. With a rapidly growing app, it became increasingly difficult to navigate and maintain my PowerApps without properly labelling each component/Data collection/Variable. This practice of naming everything properly would of saved me more time doing in the first place, and saved a lot of confusion.

Surprisingly, I left Power Automate until last, which resulted in unnecessary complications and delays. Integrating Power Automate early in the development process would have streamlined workflows and improved efficiency. By developing this earlier I could of also tested some of the more key features (PDF generation, Email systems, File uploads etc) earlier and resolved the issues before the app progressed too far and required complete rewrites of every file upload control or of entire data structures for the PDF.

Another issue that arose was the minor visual issues that occurred when copying forms. For some reason PowerApps likes to change values by a few numbers to try and ‘clean up’ the form when copy and pasting, so every second form ended up with a header that overlapped by 1 pixel and had a rounded corner in one of the joins while the other half of the forms had straight lines. Not sure how I could of prevented this, but by the end I knew it was an issue, so as soon as I copied any forms I would proceed to clean it up to match the style guide specifically. Eventually I ended up setting those values to a variable which is loaded at the start of the application, that stopped it from changing the forms as I copied them.

Furthermore, I learned the importance of not loading too much data at once. Overloading the app with excessive information caused performance issues and hindered the overall user experience. There is also a lot of pre-planned formulas and data optimisation tricks you can do in PowerApps loading, which can result in a much optimised experience. No user wants to sit and wait for a grid to load when its only a hundred records.

Another thing I initially overlooked the existence of a search function within PowerApps. Once discovered, this feature was a lifesaver, Especially when everything was named properly. It really sped up development time, but mainly relating to features that weren’t planned out correctly (e.g. needing to update every file upload control to add a specific value to the filenames)

Lastly, I cannot stress enough the significance of source control. Neglecting this crucial aspect of app development can lead to version conflicts, lost work, and unnecessary stress. Implementing a robust source control system from the beginning ensures a smooth and organised development process. I had at least 2 instances where I either saved the project and closed the window mid save, causing a corrupted application which broke all my subcollections, OR where I deleted a large part of code which was saving the entire record to the database, and had no way to retrieve it. I know setting up source control can take a few days the first time, but if you are developing multiple PowerApps, you should set up a basic workflow for source control for each one, that way it should only take a few hours to implement.

Reflecting on my first 50 days of PowerApps, I have encountered and overcome various common issues. These challenges have not only strengthened my understanding and proficiency in PowerApps but have also provided valuable insights for future projects. By learning from these experiences, I am better equipped to create efficient, user-friendly, and scalable PowerApps.