Why Is Your Power App So Slow? Here’s How I Made Mine Lightning Fast

Slow-loading apps make users leave — I’ve been there. After digging in, I realized most performance issues result from a handful of mistakes that can be fixed easily.

Let’s go over the five biggest culprits and how to fix them in your app.

1. Loading Way Too Much Data at Once

Pulling thousands of records when you only need a handful is a performance nightmare.

Use delegated queries that push filters to your data source instead of loading all your data locally.

// Efficient filter with delegation
Filter(Orders, Status = "Active" && StartsWith(CustomerName, "A"))

2. Heavy OnStart Event Logic

If your OnStart property loads many big datasets, your app’s startup will crawl.

Keep OnStart minimal by loading only essential user info and app settings, and load other data on demand.

// Proper OnStart with concurrency
OnStart = Concurrent(
    Set(CurrentUser, User()),
    Set(AppSettings, LoadSettings())
)

3. Too Many Nested Controls Inside Galleries

Each control in a gallery adds rendering time. Simplify gallery items by limiting controls and using container controls.

Use collections for lookup data to avoid multiple calls inside galleries.

4. Frequent Server Calls on User Actions

Calling the server every time a user interacts leads to a chatty app and slow experience.

Cache this data in collections when possible and reference the cached data instead.

// Cache product data once on screen visible
If(IsEmpty(ProductCache), Collect(ProductCache, Products))

5. Complex Formulas in Visibility or Text Properties

If your visibility or text properties contain heavy formulas, they recalc too often, slowing UI updates.

Calculate expensive expressions once, storing results in context variables to be reused.

// Calculate on screen load and reuse 
OnVisible = UpdateContext({ HasPendingOrders: CountRows(Filter(Orders, Status="Pending")) > 0 }) Visible = HasPendingOrders

Leave a comment