Skip to main content

Fixed: "Missing Tab Stop" in the Power Apps App Checker

· 5 min read
Jagdish Kumawat
Founder @ Dewiride

The App checker lists Missing tab stop under Accessibility errors: a control it considers interactive has no place in the keyboard's Tab order. For a gallery, the fix is TabIndex 0. For a plain heading, Microsoft's guidance points the other way, so think before you change it.

The Error​

In the example, the Career Development Plan app's new My Plan screen had a header with a Back button and a title label, lblTitleMPS, and a gallery of competencies, galMyPlanMPS. The App checker (stethoscope icon, right edge of Studio) → Accessibility showed Errors (3):

The Accessibility page of the App checker with Errors (3): Focus isn't showing (1) on lblTitleMPS, and Missing tab stop (2) on lblTitleMPS and galMyPlanMPS

The gallery's details:

The Details pane: Issue Missing tab stop, Location galMyPlanMPS .TabIndex, How to fix Set TabIndex to 0 or greater to ensure that interactive elements have a tab stop, and Why fix explaining that keyboard users can't reach the element

Error details
Missing tab stop
Location: galMyPlanMPS .TabIndex
How to fix: Set TabIndex to 0 or greater to ensure that interactive elements have a tab stop.
Why fix: People who use the keyboard with your app will not be able to access this element without a tab stop.

Why It Happens​

TabIndex decides whether a control takes part in keyboard navigation. Microsoft's accessibility properties say 0 or more puts it in the Tab order and below 0 leaves it out, and recommend using only 0 or -1. In the example, a new gallery started at -1.

The gallery is a scrollable list, and keyboard users need to reach it:

galMyPlanMPS → TabIndex
0

The formula bar with the TabIndex property of galMyPlanMPS set to 0, and the preview strip reading 0 with Data type number

After Recheck, the gallery was gone from the list. The heading's two items remained:

The Accessibility page with Errors (2): Focus isn't showing (1) on lblTitleMPS and Missing tab stop (1) on lblTitleMPS

The Heading: Keep TabIndex -1​

The checker also flagged lblTitleMPS, the screen's main heading (a classic Text label with Role TextRole.Heading1):

The Details pane: Issue Missing tab stop, Location lblTitleMPS .TabIndex, with the same How to fix and Why fix

The heading isn't interactive: its OnSelect is false and it does nothing when selected. Microsoft's guidance for labels is clear:

  • Labels, images, icons and shapes should have TabIndex 0 only if they're interactive, and -1 otherwise (Create accessible canvas apps).
  • Screen readers treat a Label as a button when its TabIndex is 0 or more (Label control).

Setting it to 0 would announce the heading as a button, which is worse for screen reader users than the warning. The Accessibility checker documentation says to weigh each suggestion against what the app needs, and that you can ignore any that do more harm than good (Review a canvas app for accessibility). So the heading keeps -1.

For the record: the Home screen's heading in the same app has the same properties (only its text differs) and the checker doesn't list it.

Common Mistakes​

MistakeWhat happensDo this instead
Setting TabIndex 0 on every flagged controlPlain text and headings are announced as buttonsOnly on controls people need to reach or use
Using values above 0 to force an orderMicrosoft calls this hard to get right and bad for screen readersUse 0 and -1, and containers for order

Troubleshooting​

SymptomLikely causeFix
The item stays after the changeThe checker hasn't rerunSelect Recheck and wait for it to finish
A heading is flaggedThe checker considers it interactiveKeep -1 if it doesn't do anything when selected

FAQ​

What's a tab stop?​

A place the Tab key stops on. Keyboard users move through an app with Tab, so anything they need to use must be one.

Does a modern control use TabIndex?​

Microsoft's reference says modern controls use AcceptsFocus for the same purpose, and classic controls use TabIndex.

Conclusion​

Missing tab stop means the checker thinks keyboard users can't reach a control. Give interactive controls, such as a gallery, TabIndex 0. Keep -1 on headings and plain text, as Microsoft's label guidance says, even if the checker lists them.

Additional Resources​

Stay Updated

Subscribe to our newsletter for the latest tutorials, tech insights, and developer news.

By subscribing, you agree to our privacy policy. Unsubscribe at any time.