I created a shared component library and imported it into my power app. I then go back and update the component library and publish it, and when I go back into my power app, I don't see any "Review" button to update the component library... I try clicking on the refresh button beside the insert tab and it says: "there are no component libraries to be updated."
How can I get my component libraries to be updated?
Solved! Go to Solution.
I'm not sure what else to offer as a suggestion at this point except perhaps putting in a ticket with support.
I am able to update a component in any of my libraries and then in the app that uses them, it see the changes immediately. So, at least I know there is not a problem with that process.
The only factor that I know that I set on all component libraries as soon as I make them is to turn on the Enhanced component properties option. I doubt that it makes any difference to what you are seeing, but I thought I would mention it.
To completely test and to demonstrate steps, I :
If you follow the EXACT steps above, you are saying that you do NOT get the same result in step 11?
I'm not sure what else to suggest then except putting in a ticket for it. There must be something wrong in your environment or something else causing this issue. Again I'll mention, component libraries are still experimental, but without the ability to update components in your app based on changes in your library, I'd say the experiment is kind of worthless.
I have the same problem here. I work with component libraries almost every day and always get the update pop-up after republishing a library, but now it seems to have stopped working somewhere during the afternoon. I suspect this is a bug on the PowerApps side.
... you are not alone! 🙂
YES perfect, so its not just me! Thanks for your moral support... Hopefully this gets fixed soon. @RandyHayes did you try your steps before today? Maybe it broke post afternoon?
@FPI-Marc just a side question here, but I'm new to implementing themes across multiple power apps. Want to achieve like an "edit once, update across all power apps" kind of model for theming. My options would be like to set global variables in each power app like shown here
or to make a shared component for each input element I may want to theme.
I want to minimize effort of updating all power apps to get any updates to the central theme. The first option, I believe if a change is needed, I would need to update the color in each power app still. For the 2nd option I would need to accept the component update change for each power app. Both seems to have manual effort, but perhaps the 2nd option can be automated with an api in the future...
Do you generally deal with this problem and if so, which option do you think is better for a company to manage?
I did try the steps I outlined at the time that I responded. So, it's not a today thing (at least not in my environment/region).
As for the styling...I would personally (and have) centralize around data instead of in the app. Essentially having an app style list in SharePoint for example, that has all the information necessary for styling the apps. Then, in the OnStart of the apps, a statement to load the data into a global variable that can then be utilized in the stylistic properties of the controls.
It is a pain to have to set the controls initially, but the process is essentially to create one of each type of control that you will use - button, label, etc. on a separate screen and set all the stylistic properties to be based on values in the global style variable set on start. THEN, every time you want to add a new control of, let's say a label, go to that screen and copy and then paste it into your app screen. This way all the formulas are already done on the control. It's annoying, but there is not much else you can do.
You could try to establish components, but this is problematic because components will not let you access data and they will not access anything in the hosting app.
The advantage of the data-based styles is that, if you need to change them, you do so in the data record and all the apps will reflect it. If you do it in a component, you will have to edit each app in order to get it to reflect the changes and then republish. I usually lean toward not editing apps as much as possible.
@RandyHayes Thanks for this info, I was wondering about loading styles from like a list or json file. I looked up how to read data from a power app coming from a SP Online list or file and load it into global variables but couldn't find any such documentation. One solution involved using a power automate to retrieve data which sounds too complex. Do you have any code snippets I can insert into the formula bar to get this data?
I figured it out. I made a list called Styles and used this formula
Set(PrimaryColor, ColorValue(LookUp(Styles, Title = "PrimaryColor", Value))),
Set(SecondaryColor, ColorValue(LookUp(Styles, Title = "PrimaryColor", Value)))
"Value" is the field name in the list that has the hex color. ColorValue just parses the text into a hex color data format.
It really sort of depends on what you want to style. If you only have a handful of different aspects of your apps to style, then you can create a list with simple columns in it that hold values for properties of your apps.
For example, the screen fill color. Let's stick with that one.
My approach would be - I would keep a Title column with the name of the App in it if you want to have more control over each app, but if you want it to just be "global" to all apps, you can ignore that logic and just put a title of "Global". Then I would create a column in the list called ScreenFill. In that column you could have a value such as "LightBlue" for the color name.
Now, in your app, in the OnStart, you could then get that record from the datasource:
Set(glbAppStyles, LookUp(yourStyleList, Title="Global"))
Now, in the Screen fill property of your screens, you would put. ColorValue(glbAppStyles.ScreenFill)
This would set the screen fill to LightBlue, as set in the list.
The same concept goes for all the properties you want to store. So, if you wanted to set the font sizes for certain controls, you could have something like "LabelSize" in your list and set it to a value. Then for label size properties, the formula would be: glbAppStyles.LabelSize.
There comes a point where you might find it too many columns to deal with. In that case, I move to storing them all as JSON data in a single column.
In fact, I typically do this because, in addition to creating a "Standard" style, we usually offer the user the ability to pick their own theme or colors, in which case, we store their preferences in a list in a single column with the JSON of it.
But, that last bit is a bit more complex to write about in a forum post (and converting JSON to records is not a simple process). I have a video on the bench (way behind on videos) that demonstrates styling an app this way as well as allowing users to store preferences like that. I just need to finish that sucker up.
The concept is pretty much the same. And ultimately, the real struggle is the fact that you cannot "default" properties of new controls, nor can you "Paste formats" in PowerApps. So, you have to do that method of styling a control first, then never use insert again...only copy and paste of the one you styled.
Learn how to create your own user groups today!
Check out the new Power Platform Community Connections gallery!
Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.