Q01 - Question
A gallery shows 100 orders. A label in each gallery row uses LookUp against a related data source to show the customer name. The gallery takes minutes to render. You need to reduce the render time without changing the data model. What should you do?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Add a Refresh function to the OnVisible property of the screen
- B. Cache the related data in a collection and run LookUp against the collection
- C. Replace the data source connection with a larger delegation limit
- D. Move the LookUp formula from the label to the gallery Items property
B is correct.
Explanation: A LookUp function on a label inside a gallery runs once for every record. For 100 records, the app performs 100 individual calls to the data source. Caching the related data in a collection means the LookUp executes locally instead of across the network, which significantly reduces the render time.
A is incorrect: Refresh forces an update of data that Power Apps often refreshes automatically. This adds redundant work and does not remove the per-row calls.
C is incorrect: A larger delegation limit changes how many rows are returned locally. It does not remove the 100 individual LookUp calls across the network.
D is incorrect: Moving the formula to the Items property is not a supported fix. The supported options are using a details screen or a cached collection.
Q02 - Question
Several screens use drop-down controls with Items set to Filter(DepartmentList, Status = "Active"). The data is static. You want one query for the whole session and no repeated network calls when users move between screens. Where should you load the data?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. In a collection created in the OnVisible property of each screen
- B. In the Items property of each drop-down, with a Refresh call added
- C. In a collection created with ClearCollect in the OnStart property of the app
- D. In a collection created in the OnSelect property of a navigation button
C is correct.
Explanation: The OnStart property is an app-level property that runs only once when the app starts. Loading the data into a collection there with ClearCollect allows every drop-down to use the cached collection, ensuring the data source is not queried again when navigating between screens.
A is incorrect: The OnVisible property runs each time a user navigates to the screen. This queries the data source repeatedly and loses the caching advantage.
B is incorrect: Keeping the Filter function in each drop-down queries the data source for every control. Adding a Refresh function creates even more redundant network calls.
D is incorrect: A button OnSelect property runs only when the user selects the button. The collection might not exist when the screen renders the drop-down control.
Q03 - Question
A button builds a collection from a data source, and a Timer control shows 4,000 milliseconds. You need to determine whether the delay comes from the app, the network, or the data source. Which tool should you use while the app is in Preview mode?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Monitor, to review the duration of each network call
- B. The Variables view, to review variable values
- C. A version label on the welcome screen
- D. A second Timer control on the same screen
A is correct.
Explanation: The Monitor tool logs each network call and displays details such as duration, data source, and the selected control. Reviewing these durations helps you determine if the time measured by the Timer control is spent waiting for the data source to filter and respond.
B is incorrect: The Variables view displays your variables, their current values, and where they are used. It does not provide network call durations or performance metrics.
C is incorrect: Adding a version label helps identify which published version of the app appears to avoid caching confusion. It does not help locate performance delays.
D is incorrect: Adding another Timer control only measures the total elapsed time again. It cannot separate the delay into app, network, and data source processing times.
Q04 - Question
The OnStart property runs three ClearCollect formulas in sequence. Each takes about 3 seconds, so the app takes about 9 seconds to start. The collections do not depend on each other. You need to reduce the start time. What should you do?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Move all three formulas to the OnVisible property of the first screen
- B. Wrap the three ClearCollect formulas in a Concurrent function
- C. Replace ClearCollect with Collect in each formula
- D. Add a Refresh call before each ClearCollect formula
B is correct.
Explanation: Formulas in the OnStart property normally process one at a time. The Concurrent function allows you to process independent formulas at the same time. Wrapping the three calls in Concurrent means they run simultaneously, reducing the load time from nine seconds to three seconds.
A is incorrect: The OnVisible property runs when a user navigates to the screen. Moving the formulas there does not make them process at the same time.
C is incorrect: Collect is not delegable, so only the first 500 items are returned by default. It does not make the formulas run in parallel.
D is incorrect: Using the Refresh function adds extra redundant calls to the data source. It does not reduce the sequential processing time of the collection formulas.
Q05 - Question
You compare two buttons that build the same two collections. One uses sequential ClearCollect formulas. The other wraps both in Concurrent. You want to display the elapsed milliseconds for each run. Which approach matches the documented test?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Store Now() in a variable before the formulas, then use DateDiff with Now() after them
- B. Select each button in the app while in Preview mode and read the Timer control
- C. Open Monitor and compare the event timestamps for each button
- D. Add a version number label and compare the labels after each run
A is correct.
Explanation: The documented exercise sets a start variable with the Now function before the formulas run. It then calculates the DateDiff in milliseconds using Now after the formulas finish. A label displays the result for each button, allowing you to compare the time saved by Concurrent.
B is incorrect: A Timer control is a different documented technique for measuring data connections. This specific exercise measures time using variables and a text label instead.
C is incorrect: Monitor tracks network calls. Because these collections are built from inline records rather than a data source, Monitor is not the method used here.
D is incorrect: A version label only identifies which published version of the app you are viewing. It does not measure the elapsed time of a formula.
Q06 - Question
A canvas app loads quickly in development but slowly in production. The Data row limit is set to 2,000 to avoid delegation warnings, and OnStart runs ClearCollect(colDesks,Desks). Development has a few rows. Production is fully populated. What should you do first?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Turn off the Debug published app option
- B. Eliminate the delegation warnings and reduce the Data row limit
- C. Enable the Navigate function in App.OnStart setting
- D. Add a loading image to the initial screen
B is correct.
Explanation: The raised Data row limit allows the ClearCollect function to retrieve up to 2,000 rows in the production environment, but only a few rows in development. Eliminating delegation warnings is a better approach than raising the limit, so you should reduce the limit to remove the cause of the slower production load.
A is incorrect: Debug published app can hurt performance, but it does not explain the difference between small development data and full production data.
C is incorrect: Enabling Navigate in OnStart delays rendering the first screen until all OnStart expressions are evaluated, so it would not help.
D is incorrect: A loading image gives visual feedback and improves perception, but it does not speed up loading the production rows.
Q07 - Question
You must measure how long OnStart takes for a canvas app and avoid influence from data caching. You add Trace() calls before and after the ClearCollect formula. Which approach gives reliable Monitor results?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Rerun OnStart manually from Power Apps Studio, then open Monitor
- B. Rerun OnVisible on the first screen several times, then compare the traces
- C. Enable Debug published app, save, publish, and launch Monitor from make.powerapps.com
- D. Use browser developer tools to capture the control names and formulas
C is correct.
Explanation: A cold start keeps captured events free of data caching effects. To ensure a cold start, you must enable the Debug published app setting, save, publish, and launch Monitor from make.powerapps.com. The custom Trace messages will then accurately mark the start and end of the OnStart processing in the event log.
A is incorrect: Manually rerunning OnStart from within Power Apps Studio can introduce data caching, which negatively influences the captured events and invalidates the test.
B is incorrect: Rerunning OnVisible manually from within the studio also risks data caching influence and does not provide a cold start of the published app.
D is incorrect: Browser developer tools show similar event information but lack specific app context details such as the control name and the exact formula.
Q08 - Question
An older app must open ChooseLocation when the current user has no address and HomeScreen otherwise. The logic uses Navigate() in App.OnStart, and the first screen waits for OnStart to finish. How should you implement the conditional start screen?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Set App.StartScreen to a formula that uses User() and a data lookup
- B. Move Navigate() into the OnVisible property of HomeScreen
- C. Store the selected screen in a global variable in OnStart and read it in StartScreen
- D. Keep Navigate() in OnStart and turn on Use non-blocking OnStart rule
A is correct.
Explanation: Using the Navigate function in OnStart is retired, and the App.StartScreen property is the recommended replacement. Because StartScreen is a data flow property, it can use the User function and data source lookups to conditionally choose the first screen without waiting for the OnStart processing to finish.
B is incorrect: The OnVisible property of HomeScreen runs only after the screen is presented, so it cannot determine which screen appears first during startup.
C is incorrect: Global variables and collections, including any that are created during the OnStart processing, are not available for use in the StartScreen property.
D is incorrect: The non-blocking rule allows OnStart formulas to run concurrently with other rules, but it does not replace the retired Navigate function approach.
Q09 - Question
OnStart loads Desks, 'Desk Features', and the Office365Users profile with three sequential statements. Each statement is independent of the others. You want to reduce startup time without changing the data loaded. Which change should you make?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. Wrap the three statements in the Concurrent() function
- B. Replace the collections with direct data source binding
- C. Move all three statements to a screen's OnVisible property
- D. Call Office365Users.MyProfileV2() once for each profile property
A is correct.
Explanation: When preloading data from connectors, multiple items run sequentially one at a time by default. Because each statement preloads data independently, wrapping them in the Concurrent function runs them in parallel. This approach reduces the total startup time without changing the actual data being loaded.
B is incorrect: Direct binding changes how data is retrieved and removes the loading indicator option. It does not parallelize the independent preload statements.
C is incorrect: Moving the logic to OnVisible defers the load until the screen is used, but it does not make the independent statements run in parallel.
D is incorrect: Calling the connector once per property adds unnecessary calls. Saving a single call result in a variable is a more efficient approach for profiles.
Q10 - Question
A screen's OnVisible property preloads colDesks with ClearCollect(colDesks,Desks). Users navigate to the screen often, and the collection reloads every time. You want to load the data only the first time the screen is used. Which formula should you use?
Domain: Implement Power Apps improvements (5–10%) Type: Single choice
- A. If(IsEmpty(colDesks),ClearCollect(colDesks,Desks))
- B. ClearCollect(colDesks,Desks);SaveData(colDesks,"LocalDesks")
- C. Refresh(Desks)
- D. If(Connection.Connected,ClearCollect(colDesks,Desks))
A is correct.
Explanation: The OnVisible property runs each time the screen is navigated to, which causes the ClearCollect function to refresh the collection too frequently. By checking IsEmpty first, the ClearCollect function only runs when the collection has no data, ensuring the data load happens exactly once.
B is incorrect: The SaveData function persists data to local storage, but the ClearCollect function will still run and retrieve data on every visit to the screen.
C is incorrect: The Refresh function updates data from the data source for direct bindings, but it does not control when a collection is initially loaded.
D is incorrect: Checking the Connection.Connected property tests connectivity only, so the ClearCollect function still runs on every navigation whenever the user is connected.