cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
GregLi
Power Apps
Power Apps

New Analysis Engine

Similar to the dependencies between cells in a spreadsheet that drives recalc, Canvas apps depend on understanding all the dependencies between properties of controls so that data can flow between them properly and efficiently.  We call this process "dependency analysis" and it is something that Studio is doing all the time in the background while you are editing an app.

 

For more than a year, we have been rewriting the analysis engine to both perform better and to optimize the results.  The result is that complex Canvas apps that can take minutes to load should load significantly faster.  It is a major change, at the very heart of Canvas apps, that we have been working on for over a year.

 

We are very excited to announce that this feature is now available as an experimental feature for your testing and feedback.  Please make a copy of complex apps, turn on this setting, see if you run into any problems in Studio and at runtime, and provide feedback here in the forum.   

 

Do not use this feature in production!  There could be subtle behavior differences that will take time to discover, just because the app loads and saves doesn't necessarily mean all is well, some testing is needed too.

 

Thank you!  And with your help we hope to turn this feature on for everyone soon.

 

GregLi_1-1701804999605.png

53 REPLIES 53

Sorry it seems to have disappeared

ejs65
Frequent Visitor

Switched this on in one of our apps now it's moved to preview. 

 

It has caused issues with some, but not all collections collected in OnStart.

 

In the maker everything appears to work fine, but in published app the collections are blank. 

 

Turning off new analysis engine and republishing the app has removed the issue entirely. 

 

 

Happy to demonstrate if needed.

I hope they get these bugs worked out.  Looking forward to being able to use UDFs when it's not in preview anymore.  IMO UDF should have been a basic feature rolled out from the get-go.  🙂

Hi @ejs65 , There is an issue about collections in component which team has recently fixed. But this one appears to be collections declared in OnStart. Is it possible for you to share msapp? You can send a private message to me with link to Onedrive where you can share msapp if it's possible for you to do so.

I was really excited for version 3.24054 because of the fixes for New Analisys Engine and we could finally see named formulas in the variables section.

 

I went ahead and enabled the New Analysis Engine for testing and spent all day fixing the errors related to Record Variable schema since the New Analysis engine is much more strict on Schema when setting record/table variables.

 

Everything was working great for a few hours on 3.24054.19 but then at the end of the day I randomly started getting more errors and noticed it had updated to 3.24054.23.  I literally just have to go to any place that I set the variable, cut and paste it back and the errors go away and the app works fine but every time I reload the app, the errors return.

@claytsch , Can you please share more details about the issue? It would help if you can share more details about the scenario and expressions where you are getting the error. I would like to see if I can reproduce the issue on my end.

Sure thing.  I have a global component that use for my header, menu and navigation.  It also has some functions that track and update information about the current task the user is working on.  I have some smaller components that feed properties into my main navigation component to update things like the current step or records related to the current task.

 

After the app updated to 3.24054.23, it didn't like that I had "defined" a record property in one of my smaller components to an "Untyped Record" { }.   In version 3.24054.19 it didn't have an issue with that as long as I used the record structure my main component was expecting { Employee: 0, Request: 10 } in the component instance that was feeding into my main component.

 

Since enabling the New Analysis Engine it seems like each update, has some slightly different preference how record structures are defined.  Before the New Analysis engine, components would accept untyped records and tables, but now they don't.  Maybe that's part of the efficiency improvements of it so it might not be a bad thing.

 

Most of the errors just say "Type Error" but don't offer any sort details on where the conflicts are.  But I can usually just find anywhere that the variable is set and then cut and paste it right back and the errors go away and the app functions as expected.  But after re-loading the app, they re-appear.

 

My main issues are that it's hard to find the root of the errors since there's so many cascading errors.-- It would be helpful if you could filter out indirect errors in the error panel to narrow down the root cause.

 

It would also be helpful if component properties didn't reset the existing values when you update the property schema inside the component.  When we have dozens of components, I have to copy the existing properties for each instance, update the component property schema, then paste all of them back.

For what its worth, an app fell apart and I was initialising with onStart (including not realising the restrictions associated with OnStart() which dont trigger an explicit error- I was referencing components in invisible unloaded screens).

 

I ended up creating a splash screen (which contained some general purpose calculation components- IMHO formulas isnt ready) which navigated to the start screen after 1 second and its onvisible property performed the OnStart stuff --> fixed

 

I continue to have problems with powerapps internal record schema tracking being out of sync with schemas defined in the app and/or components, particularly with component libs.

 

The following has mitigated the problem to some extent... For most of my components they live in component libs and I have an output record 'DefaultConfigRecord' and an input record 'ConfigRecord' whose default is set to DefaultConfigRecord. Most of the properties required within the component are read from componentname.ConfigRecord.

Within an app, if variation from the defaults is needed, I set the components 'ConfigRecord' using Patch(Self.DefaultConfigRecord,{...}) modifying selected properties.

 

I have found that apps often trigger massive error counts when updated component libraries are incorporated. I usually delete and retype the dot for obvious record errors (the internal and actual record schema are discordant), save, then reload.

 

For any Microsoft readers

1). I think we need something like 'record schema refresh' (which seems to happen when the app is reloaded but not when a component lib is 'reviewed' and updated) and perhaps an error akin to 'record schema mismatch with schema defined in ScreenNameOrComponentNameOrControlNameOrFormulaNameOrUDFname[.Propertyname]  ...' to give some clue to both us and you.

 

2) Secondly, there is still inconsistency in implementing sharepoint internal and displaynames. PLEASE, just use the display name consistently. If sharepoint would allow renaming internal names it wouldnt be a problem, but it is. Powerapps records/table still lack the ability to define the equivalent of sharepoint complex columns (choices, images, etc) which makes it much more difficult to develop component libs using tables having those fields.

It sounds like we're having a lot of the same issues.  The new analysis engine seems to change a lot with the OnStart Property behavior.  Reset() is no longer allowed for starters.  I'm also referencing hidden components and screens as well is probably triggering the analysis engine to analyze those screens and components before they're visible.  Which would explain why it seems to be processing so many things when the app loads.

 

Could not agree more with both of your recommendations.  My app always seems to load fine but after it finishes loading, it throws thousands of errors.  The errors are always vague like "Type Error" with no details as to where the conflicts are.  I just have to go anywhere where I've set the variable that giving errors, cut and paste it right back and the errors go away and the app runs as expected... until I reload again.

I actually dont think its the analysis engine- I had many more of the same problems before the engine and it has improved using it. I am sure its some sort of internal caching and/or the deductive logic they are using.

 

As I have posted a number of times, some of the issues could be avoided by allowing optional explicit record schema declarations which would obviate the need for their engine to deduce record structures. Once the defining mechanism is implemented it isnt hard to see being able to pass records in UDF's.

 

It may also allow the use of more complex sharepoint column types in components and elsewhere (powerapps handles those column types when a sharepoint table is attached so it probably isnt that much of a stretch).

 

It is of course useful to 'low code' but sometimes allowing developers, as they 'develop', to access more advanced options is better.

 

When I look at the experimental code view it doesnt show record structures for parameters within components yet, but it gives me the feeling they are headed towards the alternative of a vscode type of editor. 

Also, I didnt quite explain properly what I do with my splash screens. Initialisation is hived of to an icon on the splash screen and global lib components are hosted on the splash screen. The OnVisible property just does a select on the icon and the initialisation runs (including any lib component initialisations). The timer then navigates to the appropriate screen.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (1,490)