Tutorials/Power Apps/Adding a Visible Blank Option to Power Apps Dropdowns
Power Appsintermediate

Adding a Visible Blank Option to Power Apps Dropdowns

Go beyond AllowEmptySelection. Inject a genuine empty row into your dropdown items list for a clearer user experience.

NA
Narmer Abader
@narmer · Published June 3, 2026

The AllowEmptySelection property in Power Apps gives the ability to deselect an item by clicking it again. From a UX perspective, that gesture is completely hidden — most users never think to tap the already-selected value to clear their choice. The cleanest way to offer an empty starting state is to inject a visible blank record directly into the dropdown's data source using Table and Ungroup.

Scenario: Timesheet Entry App

I ran into this problem while building a phone-friendly timesheet entry app for a construction crew. Foremen needed to log daily activities: Site Prep, Concrete Work, Framing, Roofing, and Finishing. The form included a dropdown for the activity and another for the job site. Without a visible blank option, the dropdown always defaulted to the first alphabetically sorted value, causing constant data-entry errors. The fix was to add a blank entry at the data level so the foreman could consciously choose an option rather than accidentally submitting a wrong one.

Setting Up the Data Sources

Instead of hardcoding options, store them in a SharePoint list so updates are easy without republishing the app.

Create a SharePoint list called LookupValues with two columns:

  • Category (Single line of text)
  • OptionValue (Single line of text)

Populate it like this:

CategoryOptionValue
ActivitySite Prep
ActivityConcrete Work
ActivityFraming
ActivityRoofing
ActivityFinishing
JobSite55 Main St
JobSite120 Oak Ave
JobSite400 Elm Dr

Create a second list called TimeEntries that will hold the submitted rows:

Column NameData Type
TitleSingle line of text
DateDate and Time
ActivitySingle line of text
HoursNumber
JobSiteSingle line of text

Step-by-Step Implementation

Create the App and Form

Open Power Apps Studio and create a blank canvas app (phone layout). Connect both SharePoint lists. Insert an Edit form and bind it to the TimeEntries list. Set the form's DefaultMode to FormMode.New.

Replace Text Inputs with Dropdowns

For the Activity card, delete the default text input and insert a Dropdown control. Name it drp_Activity. You'll see a red error badge on the card — ignore it for now.

Inject the Blank Option

The logic lives in the Items property of the dropdown. This is the key pattern:

powerfxItems property of the Activity dropdown
Ungroup(
  Table(
      {Options: Table({OptionValue: Blank()})},
      {Options: Filter(LookupValues, Category = "Activity").OptionValue}
  ),
  "Options"
)

How it works:

  1. Table({OptionValue: Blank()}) creates a single-row table where the value is blank.
  2. Filter(LookupValues, Category = "Activity").OptionValue returns a single-column table containing all the real activity options.
  3. The outer Table(...) wraps these two pieces into a table with a column named Options.
  4. Ungroup(..., "Options") flattens everything back into a single-column table for the dropdown. The blank entry ends up at index zero, making it the default.
Column name matching

The column name inside the inner Table(...) — in this case OptionValuemust exactly match the column name returned by your Filter(...) call. If the names don't match, Ungroup will collapse the schema and the dropdown will show nothing or break.

Wire Up the Card Properties

Now fix the red error badge by pointing the card's Update property to the dropdown:

powerfxUpdate property of the Activity card
drp_Activity.Selected.OptionValue

Set the card's standard properties to inherit the form's behavior:

powerfxDefault and DisplayMode properties
Default: Parent.Default
DisplayMode: Parent.DisplayMode

Repeat for Job Site

Follow the same process for the JobSite card. Delete the text input, add a dropdown named drp_JobSite, and use this Items formula:

powerfxItems property of the JobSite dropdown
Ungroup(
  Table(
      {Options: Table({OptionValue: Blank()})},
      {Options: Filter(LookupValues, Category = "JobSite").OptionValue}
  ),
  "Options"
)

Update property:

powerfxUpdate property of the JobSite card
drp_JobSite.Selected.OptionValue

Add the Submit Button

Insert a button below the form with the text "Log Entry". Set its OnSelect property:

powerfxSubmit button OnSelect
SubmitForm(frm_TimeEntry)

To allow logging multiple entries without navigating away, add a reset in the form's OnSuccess:

powerfxForm OnSuccess
ResetForm(frm_TimeEntry)

Troubleshooting Common Mistakes

MistakeSolution
Dropdown shows no items or a "schema mismatch" errorEnsure the column name inside the inner Table({OptionValue: Blank()}) matches the column name from the Filter result exactly.
Red error badge persists on the cardThe card's Update property is still pointing to the deleted text input. Change it to drp_Activity.Selected.OptionValue.
The blank option displays the word "Blank" instead of nothingYour column might be a Choice type. Use Single line of text for OptionValue. Alternatively, pass a zero-length string "" instead of Blank().
Users can submit with the blank value selectedAdd validation on the form's OnOk event or configure required fields in the data source.
Why not just rely on AllowEmptySelection?

AllowEmptySelection works technically, but its behavior is invisible. Users have no clue they can tap the current value to clear it. Adding a real blank row makes the possibility obvious and eliminates training overhead.

Delegation and Performance

The Filter function used in this pattern is fully delegable with SharePoint connectors, meaning performance stays consistent even when your lookup list grows to tens of thousands of rows. The Table and Ungroup operations happen entirely on the client side and operate on the already-filtered, small result set.

Final Recommendation

Stop hiding the empty state. By building the blank option directly into the dropdown's items list you create a visible, discoverable, and foolproof interaction model. Store your options in SharePoint, apply the Ungroup / Table / Blank() pattern, and avoid the need to train users on obscure gestures like re-clicking a selected item.

References