If you’ve ever built a Power Apps canvas app and wondered why your gallery isn’t showing the latest data — even after someone just added a new record — the Refresh() Function is your answer.
In this tutorial, I’m going to walk you through exactly what the Refresh function does, when to use it, and how to use it in real scenarios. I’ll also cover some common mistakes people make and how to avoid them. Whether you’re connecting to SharePoint, Dataverse, or SQL Server, this guide has you covered.
Refresh Function in Power Apps
The Refresh() function tells Power Apps to go back to the data source and pull a fresh copy of the data. That’s it. Simple concept — but if you don’t know when and how to use it, you’ll end up with apps that feel stale or out of sync.
Here’s the key thing to understand: Power Apps caches data locally when your app loads. So if someone else updates a SharePoint list while you have the app open, your gallery won’t automatically reflect those changes. The Refresh() function solves exactly this problem.
One important note from the Microsoft documentation: Refresh has no return value. You can only use it in behavior formulas — meaning you can’t plug it into a label’s Text property, for example. It goes in places like OnSelect, OnVisible, or OnSuccess.
Syntax
Refresh( DataSource )
- DataSource – Required. The name of the data source you want to refresh (e.g., a SharePoint list, Dataverse table, SQL table, or Excel file stored in OneDrive).
That’s the entire syntax. One parameter, no return value.
When Should You Use Refresh?
This is where most beginners get confused. They either use it everywhere (which hammers performance) or never use it (which leaves users with stale data).
Here are the common situations where Refresh() genuinely makes sense:
- Multiple users are working in the same app at the same time. If User A updates a record and User B is on the same screen, User B’s gallery won’t update automatically. A refresh button or an automatic refresh on screen load fixes this.
- You’ve submitted a form and want the gallery to show the new record. After
SubmitForm(), Power Apps doesn’t automatically re-query the data source. CallingRefresh()right after ensures the newly added item appears. - You’ve run a Power Automate flow that writes to a data source. The flow might update or create records on the backend, but your app won’t know about it unless you explicitly refresh.
- You navigate between screens. If your app has a home screen with a list and a detail screen where users edit records, calling
Refresh()on theOnVisibleof the home screen ensures that users always see the current data when they return.
How to Use Power Apps Refresh Function
Let’s take some real examples to work with the Power Apps Refresh function.
Example 1: Basic Power Apps Refresh Button
This is the most straightforward use case. You have a Power Apps gallery connected to a SharePoint list called IT Support Tickets, and you want a button that lets users manually pull the latest data.
Steps:
- Insert a Button control on your screen
- Set its
Textproperty to:"Refresh" - Set its
OnSelectproperty to:
Refresh('IT Support Tickets')

When the user clicks the button, Power Apps reaches out to the SharePoint list, pulls the latest records, and the gallery updates automatically. No page reload needed.

This is useful in team environments where multiple people add or update tasks throughout the day.
Example 2: Auto-Refresh When a Power Apps Screen Loads
Sometimes you don’t want users to have to click a button — you just want the data to be fresh every time someone visits a screen.
Steps:
- Select the screen you want to auto-refresh (let’s call it
TaskScreen) - Go to the
OnVisibleproperty of the screen - Enter:
Refresh(ProjectTasks)
Now every time a user navigates to TaskScreen, Power Apps fetches the latest data from ProjectTasks before rendering the gallery. This is especially handy when users return from an edit screen, and you want the list to reflect the changes they just made.
Example 3: Refresh After Submitting a Form
This is probably the most common real-world scenario. You have a form to add a new task, and after submitting it, you want the gallery to display the new entry immediately.
Steps:
- Insert a
Formcontrol and connect it to your SharePoint list (Employee Profiles) - Add a Submit button
- Set the
OnSelectof the submit button to:
SubmitForm(frm_EmpProfile);
Refresh('Employee Profiles');
Notify("Record saved successfully!", NotificationType.Success)

Here’s what happens in sequence: first, SubmitForm() writes the new record to SharePoint. Then Refresh() pulls a fresh copy of the list, which now includes that new record. Your gallery updates without the user having to do anything extra.
Pro tip: If you want to also reset the form after submission, chain it like this:
SubmitForm(TaskForm);
Refresh(ProjectTasks);
ResetForm(TaskForm)
This submits, refreshes the data, and clears the form — all in one go.
Example 4: Refresh After a Power Automate Flow
This one catches a lot of people off guard. Let’s say you have a button in your app that triggers a Power Automate flow. The flow performs processing and writes the results back to a SharePoint list. Your app won’t see those results until you explicitly refresh.
Steps:
- In the
OnSelectof your button, first run the flow, then refresh:
MyFlow.Run();
Refresh(ResultsList)
This tells Power Apps: “Wait, the flow just wrote something to ResultsList — go fetch the latest version.”
Without the Refresh(), users would need to close and reopen the app (or navigate away and come back) to see the flow’s output. That’s a terrible user experience, and a simple one-liner fixes it.
Example 5: Refresh Multiple Data Sources at Once in Power Apps
Your app might connect to more than one data source — say, a IT Support Tickets list and a Employee Profiles list. You can refresh both with a single button click by chaining the calls:
Refresh('IT Support Tickets');
Refresh('Employee Profiles');

Power Apps will execute these sequentially. There’s no built-in “refresh all” command, so just chain them like this. It’s clean and straightforward.
Example 6: Refresh with a Power Apps Loading Indicator
If your data source is large, a refresh might take a few seconds. It’s good practice to show users a loading indicator to let them know something is happening in the background.
Here’s a simple pattern:
- Add a label or spinner icon to your screen (let’s call it
LoadingLabel) - Set its
Visibleproperty to:IsLoading - In the
OnSelectof your refresh button, use:
Set(IsLoading, true);
Refresh('IT Support Tickets');
Set(IsLoading, false)

While the refresh is running, IsLoading is true and the loading indicator appears. Once the refresh completes, IsLoading flips back to false and the indicator disappears. Small detail, but it makes your app feel much more polished.
Power Apps Refresh vs. ClearCollect — What’s the Difference?
This is a question that comes up all the time in the Power Apps community, so let me clear it up.
Refresh(DataSource) — Tells Power Apps to re-query the data source and update its local cache. Your galleries and forms that are bound to that data source will automatically reflect the new data. You’re working directly with the live data source.
ClearCollect(CollectionName, DataSource) — Creates or rebuilds a local collection in memory. This is useful when you want to manipulate data locally (sort, filter, add temporary records) without touching the original source.
Here’s a practical way to think about it:
- If your gallery is directly bound to a SharePoint list, use
Refresh() - If your gallery is bound to a collection (which you loaded from SharePoint), use
ClearCollect()to reload that collection
For example, if you loaded data into a collection like this on the screen’s OnVisible:
ClearCollect(colTasks, ProjectTasks)
Then later, to “refresh” what’s in that gallery, you need to run ClearCollect() again — not Refresh(). Running Refresh(ProjectTasks) updates the underlying SharePoint data but won’t automatically rebuild your collection.
A common pattern that works well together:
Refresh(ProjectTasks);
ClearCollect(colTasks, ProjectTasks)
First, refresh the source, then rebuild the collection from the freshly fetched data.
Common Mistakes to Avoid
1. Calling Refresh() too aggressively
Some people add Refresh() to every timer, every button, every screen. This is a bad idea. Every Refresh() call makes a network round-trip to your data source. If you’re doing this every few seconds or on every single user action, your app will feel sluggish, and you’ll run into throttling issues, especially with SharePoint.
Use Refresh() intentionally — when data is likely to have changed, and the user needs to see the update.
2. Refreshing a collection instead of the data source
You can’t call Refresh() on a collection. Collections live in memory inside your app — they have no external data source to refresh from. If you try Refresh(colTasks), you’ll get an error. Use ClearCollect() for collections.
3. Expecting Refresh() to fix delegation issues
If your gallery is only showing the first 500 records because of a delegation warning, Refresh() won’t help. That’s a data query architecture issue, not a freshness issue. You’d need to revisit your filtering logic.
4. Putting Refresh() in a non-behavior formula
Remember — Refresh() has no return value. You can’t use it in a property like Text, Color, or Visible. It only works in action-based properties like OnSelect, OnVisible, OnSuccess, or OnFailure.
Refresh in Model-Driven Apps
The Refresh() function also works in model-driven apps when used with Power Fx commands. If you’ve added a custom command button to a model-driven view, you can call Refresh() on that view to reload the records after an action.
This is relatively new functionality in model-driven apps — Power Fx support for commands has been expanding over the last couple of years, and Refresh() is one of the supported functions.
Quick Reference — Where to Use Power Apps Refresh()
| Scenario | Property to Use | Example Formula |
|---|---|---|
| Manual refresh button | OnSelect | Refresh(ProjectTasks) |
| Auto-refresh on screen load | OnVisible | Refresh(Employees) |
| After form submission | OnSelect (Submit button) | SubmitForm(Form1); Refresh(Tasks) |
| After Power Automate flow | OnSelect | MyFlow.Run(); Refresh(Results) |
| Refresh multiple sources | OnSelect | Refresh(List1); Refresh(List2) |
Final Thoughts
The Refresh() function is one of those things that seems simple on the surface, but knowing exactly when and where to use it makes a huge difference in how your app behaves. The key things to keep in mind:
- Use it when data is likely to have changed, and you need the app to reflect that
- Don’t overuse it — every call is a network trip
- Know the difference between refreshing a data source vs. rebuilding a collection
- Combine it with loading indicators for a better user experience
- It only works in behavior formulas, not in display properties
Once you get the hang of it, it becomes second nature. You’ll naturally start thinking: “After this action, will the data change? If yes, I probably need a Refresh() here.”
Also, you may like:
- Power Apps GroupBy and Ungroup Functions + 10 Examples
- Power Apps First, FirstN, Last, and LastN Functions
- Power Apps StartsWith and EndsWith Functions + 10 Examples
- PowerApps Functions Tutorial

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.