Modern Text Input in Power Apps: What You Need to Know
- Patrick Cooley
- Jun 6
- 3 min read
If you're building custom forms in Power Apps and want a cleaner, more flexible input experience, you can take advantage of the Modern Text Input control. It's designed to be simpler, more accessible, and more in line with current design standards. While there are some great features to try, there are some buggy tradeoffs that make us not quite ready to completely give up the Classic Text Input.
This post breaks down what matters most—especially for developers skipping the Form control and building a custom form. We'll look at some of the properties that have changed, what the new ones do, and how to handle validation. All in less than 5 minutes.

Classic vs. Modern Property Mapping
Here's a quick table to highlight what's changed:
Modern Property | Classic Equivalent | Notes |
Value | Default | Holds a default input value of "". No need to replace "Text input". |
Placeholder | HintText | Shows hint text when empty. |
Mode | Mode | SingleLine or MultiLine only (no Password--see Type). |
Type | (None) | New. Choose "Text", "Password", or "Search"--see Type below. |
TriggerOutput | DelayOutput | New. More flexible—see TriggerOutput below. |
Required | (None) | New. Marks the input as required. |
ValidationState | (Manual styling) | New. Set to "Error" to show a red border. |
Note: Values like Type and Align properties are set using text strings (e.g. "Password", "Center")—not Enum syntax like Align.Center.
Type property
This property gives the text input a specific role:
"Text" – Default. Accepts any text.
"Password" – Masks input with dots. Shows a selectable view input toggle.
"Search" – Meant for search bars. Currently, there's no difference from a "Text" type. (However, it may show a search icon or clear button in the future.)
If you're asking for login info or PINs, use Type = "Password". Otherwise, stick with "Text" or "Search".
TriggerOutput property
This one's important if you're doing logic as you type. It controls when OnChange fires and when the control's Value updates:
"FocusOut" – Default. Fires when the user leaves the field.
"Delayed" – About 500ms after typing stops.
"WhileTyping" – Updates as the user types, but throttled.
"KeyPress" – Fires on every keystroke (use with caution).
Pro tip: Use "WhileTyping" if you're building responsive custom forms. It's smoother than "KeyPress" and doesn’t trigger on every character. If you're tabbing through inputs, use the "FocusOut".
Required and ValidationState
These two make field validation easier:
Required = true – Tags the control as required (mostly informational unless you're using forms).
ValidationState = "Error" – Turns the border red. You control this manually.
Here’s a quick example you can include in OnChange or OnSelect of a control:
If(IsBlank(TextInputName.Value)
UpdateContext({varNameError: true}),
UpdateContext({varNameError: false})
)
Then bind the property:
ValidationState = If(varNameError, "Error", "None")
Boom—built-in red border.

Bonus Tip: Use the Number Input control for Numbers
If you're asking for a number, don’t use a text input. The new Number Input control:
Opens the right keyboard on mobile
Has increment/decrement buttons (with a customizable Step)
Enforces numeric input by default
It’s mostly better all around.
Why We're Not Ready to Give Up the Classic Text Input
While the Modern Text Input is sleek and evolving quickly, it’s not quite feature-complete yet. Here are a few frustrations:
There is no "Clear button" (or "Enable spell check") option.
The AcceptsFocus property isn’t available, so using SetFocus() can get wonky, especially when paired with TriggerOutput = "WhileTyping". Customizing tab navigation isn't an option.
The FontSize property (Size in the Classic Text Input) is too small when you first insert the control, prompting you to adjust it.
The OnSelect property is missing, so if you need to do something when a user taps the field, you’ll need a workaround.
Until these gaps are closed, the Classic Text Input still earns its spot in certain custom form scenarios.
Wrap-Up
As with other Modern controls, the Modern Text Input shows true promise, but it isn't quite what we're expecting, yet. They're stylish and clean and have a growing range of options. They can enhance the look and feel of your app, but some things they still can't do.
There's still a place in our toolbox for the Classic Text Input.
Comments