Power Apps Remove Function – The Complete Guide to Delete Records

If you’ve built even one Power Apps canvas app, you already know that adding and editing records is straightforward. But deleting them? That’s where most people get stuck, or worse, they write a formula that silently does nothing.

In this tutorial, I’m going to walk you through everything you need to know about the Remove function in Power Apps. I’ll cover how it works, when to use it, how it differs from RemoveIf, and I’ll show you real, copy-paste-ready examples you can drop straight into your app.

Let’s get into it.

Power Apps Remove Function

The Remove function in Power Apps is used to delete one or more specific records from a data source. That data source can be a SharePoint list, a Dataverse table, an Excel table, or even an in-memory collection.

Think of it like clicking the delete button in Excel, except you’re doing it programmatically through a formula.

Here’s the basic syntax:

Remove(DataSource, Record)
  • DataSource – the table or list you’re deleting from
  • Record – the exact record you want to remove

The key thing to understand here is that Remove() needs to know the exact record you want to delete. It doesn’t work with conditions. If you want to delete based on a condition (like “delete all tasks marked as complete”), you’ll need RemoveIf() — which I’ll cover later.

This is the most common use case: you have a Power Apps gallery showing records from a SharePoint list, and you want a delete button or trash icon next to each row.

Here’s how you set it up:

Step 1: Connect your SharePoint list as a data source. Let’s say your list is called ProjectDetails.

Step 2: Add a Gallery control and set its Items property to:

Items = ProjectDetails

Step 3: Inside the gallery, insert a Trash icon (or a button labeled “Delete”). Set its OnSelect property to:

Remove(ProjectDetails, ThisItem)
power apps remove function

That’s it. ThisItem refers to the current row in the gallery, the one the user clicked. When someone taps the trash icon next to a task, that exact record gets deleted from the SharePoint list.

Why does this work?

Because Power Apps galleries keep track of each row’s full record context through ThisItem. So when you pass ThisItem into Remove(). It passes the entire record, including the ID, which Power Apps uses behind the scenes to find and delete the right row.

Method 2: Remove a Record from a Power Apps Detail or Edit Screen

Sometimes you’re not in a gallery. You’re on an edit screen and want a “Delete Record” button that removes the record the user is currently viewing.

Set the Power Apps button’s OnSelect property to:

Remove(ProjectsDetails, EditForm1.LastSubmit);
Navigate(BrowseScreen1)

Or if you’re using Gallery1.Selected to track which record is open:

Remove(ProjectsDetails, Gallery1.Selected);
Navigate(ProjectDetailsScreen)
delete power apps gallery selected record

After the deletion, the Navigate() call takes the user back to the browse/list screen. Always good UX practice to navigate away after a delete, otherwise the user is staring at a blank edit form.

Method 3: Add a Confirmation Popup Before Deleting in Power Apps

One thing I always recommend: never let users delete records without confirming first. Accidental deletes are a real problem, especially in shared apps.

Here’s a simple way to add a confirmation step using a variable:

Step 1: Add a container or a group of controls that acts as your “Are you sure?” pop-up. Set its Visible Property to a variable:

Visible = varShowDeleteConfirm

Step 2: Add a trash icon. Instead of directly calling Remove(), set it to show the pop-up:

OnSelect = UpdateContext({varShowDeleteConfirm: true})

Step 3: On the Confirm button inside the pop-up:

OnSelect = Remove(TaskTracker, Gallery1.Selected);
UpdateContext({varShowDeleteConfirm: false});
Navigate(BrowseScreen1)

Step 4: On the Cancel button:

OnSelect = UpdateContext({varShowDeleteConfirm: false})
power apps confirmation popup before deleting a record

This approach is clean, simple, and saves users from themselves. It takes maybe 10 extra minutes to set up, and it’s 100% worth it.

Method 4: Power Apps RemoveIf Delete Records Based on a Condition

Now let’s talk about RemoveIf(). This function is your go-to when you want to delete multiple records at once based on a condition — rather than a single record.

Syntax:

RemoveIf(DataSource, Condition)

Example 1: Delete all completed tasks

Let’s say your ProjectDetails list has a ProjectStatus column. You want a “Clear Completed” button that removes all rows where ProjectStatus is “Complete”:

RemoveIf(colProjectDetails,ProjectStatus.Value = "Completed")
power apps removeif function example

Done. Power Apps will loop through every row in ProjectDetails, evaluate the condition, and delete any row where the Status value equals “Complete.” Look at the image below; there is no record where the ProjectStatus matches “Complete.”

delete power apps gallery item using remove if function

Example 2: Delete records with multiple conditions

You can stack conditions. Both must be true for a record to be deleted:

RemoveIf(ProjectDetails, Status = "Complete", AssignedTo = "John")

This deletes only tasks that are both complete AND assigned to John. It’s essentially an AND condition; all conditions must be true.

Example 3: Delete records where a number meets a threshold

RemoveIf(EmployeeList, Age < 18)

Simple and practical, removes all employees under 18 from the list.

Method 5: Remove Records from a Power Apps Collection

Power Apps Collections are temporary, in-memory tables that live only while your app is running. They don’t connect to a live data source unless you explicitly push changes to one.

You can use Remove() with collections just like with SharePoint lists.

Set up a collection first:

ClearCollect(colProjectDetails,ProjectsDetails);
Remove Records from a Power Apps Collection

Remove a selected item from the collection:

Remove(colProjectDetails, Gallery1.Selected)
reomove power apps gallery selected item

Important: Removing from a collection does NOT automatically delete from the underlying SharePoint list. You’re only modifying the in-memory copy. If you want changes to reflect back in SharePoint, you need a separate Patch() or Remove() Call on the actual data source.

Method 6: Power Apps Remove Multiple Specific Records Using ForAll

What if you want to remove a bunch of records, but not based on a simple condition, maybe you have a checkbox system where users select multiple rows to delete?

Here’s how to handle batch deletion using Power Apps ForAll Function:

Step 1: When a user checks a checkbox in your gallery, add that row to a collection:

OnCheck = Collect(colSelectedProjects, ThisItem)
OnUnCheck = RemoveIf(colSelectedProjects, ID = ThisItem.ID)
Default = ThisItem.ID in colSelectedProjects.ID

Step 2: On a “Delete Selected” button:

ForAll(
colSelectedProjects,
With(
{varID: ThisRecord.ID},
Remove(
ProjectsDetails,
LookUp(ProjectsDetails, ID = varID)
)
)
)
Remove Multiple Specific Records Using ForAll in Power Apps

This loops through every record in colSelectedProjects and removes the matching row from ProjectsDetails.

Power Apps Remove vs RemoveIf

Here’s a simple way to decide which one to use:

ScenarioUse This
Delete the row the user clickedRemove(DataSource, ThisItem)
Delete the record open on an edit screenRemove(DataSource, Gallery1.Selected)
Delete all rows matching a conditionRemoveIf(DataSource, Condition)
Delete rows matching multiple conditionsRemoveIf(DataSource, Condition1, Condition2)
Delete a row from a collectionRemove(CollectionName, Record)
Delete all rows from a collectionClear(CollectionName)

Common Errors and How to Fix Them

1. “The function ‘Remove’ has some invalid arguments.”

This usually happens when you’re passing a value (like a text string or ID number) instead of an actual record. Remove() needs the full record — not just the ID. Use LookUp() to fetch the record first:

Remove(TaskTracker, LookUp(TaskTracker, ID = selectedID))

2. Nothing happens when you click delete

Check two things:

  • Make sure your data source is connected and not in an offline/delegated error state
  • Make sure you’re calling Remove() on the correct data source name (it’s case-sensitive)

3. Deleting from a collection removes SharePoint records, too

This happens when your gallery items are set directly to the SharePoint list, not a collection. If you Remove() delete from the list, it deletes from SharePoint. If you want local-only deletion, first ClearCollect() the list into a collection and work with that.

4. “Delegation warning” on RemoveIf

Power Apps can delegate some filter operations to the data source, but not always. If you see a delegation warning on RemoveIf, it means Power Apps might only process the first 500 (or 2000) records locally. To avoid this, try to filter your data first with a delegable query and then apply RemoveIf on the filtered set.

Wrapping Up

The Remove Function is one of those Power Apps basics that seems simple on the surface, but has a few quirks that trip people up. Once you understand that Remove() wants the full record (not just an ID) and that RemoveIf() is your batch-delete tool, the whole thing clicks into place.

Start with the simple gallery delete pattern, add a confirmation pop-up, and you’ve already covered 90% of real-world use cases. From there, RemoveIf and ForAll handle the rest.

Also, you may like:

Live Webinar

Build an IT Help Desk App using Power Apps and Power Automate

Join this free live session and learn how to build a fully functional IT Help Desk application using Power Apps and Power Automate—step by step.

📅 29th Apr 2026 – 10:00 AM EST | 7:30 PM IST

Download User registration canvas app

DOWNLOAD USER REGISTRATION POWER APPS CANVAS APP

Download a fully functional Power Apps Canvas App (with Power Automate): User Registration App

Power Platform Tutorial

FREE Power Platform Tutorial PDF

Download 135+ Pages FREE PDF on Microsoft Power Platform Tutorial. Learn Now…