Power Apps Accessible Labels: AI Removed the Excuse
Power Apps accessibility
The repetitive part can now be generated by AI. Leaving hundreds of interactive controls unnamed is no longer a scheduling problem; it is a decision not to care.
Three hundred and six. That is not an obscure edge case buried in a complex formula. It is the same basic accessibility omission repeated across an application: interactive controls that a screen reader cannot name properly.
Teams often explain this away with familiar phrases: the deadline was tight, accessibility was scheduled for later, or there was no capacity for manual cleanup. Those arguments were already weak. With coding agents able to inspect a canvas app, infer control intent, write AccessibleLabel formulas, and validate the result, they have become indefensible.
This is not a cosmetic warning
In a Power Apps canvas app, the AccessibleLabel property provides the name announced by a screen reader. A sighted user can look at a floppy-disk icon and infer “Save.” A screen-reader user cannot infer meaning from pixels. The application has to expose that meaning explicitly.
Microsoft classifies a missing accessible label on an interactive control as an accessibility error. Without useful text, a person who cannot see the screen may not understand what an image, icon, or control does. The checker is not asking for polish. It is identifying a broken interaction contract.
The count of 306 is not evidence that the task is difficult. It is evidence that the omission was copied 306 times.
Calling this laziness is deliberately uncomfortable. I do not mean that one exhausted maker is morally defective. I mean that a delivery process chose to repeat an avoidable omission, accepted the warning count, and transferred the cost to users who rely on assistive technology.
A label carries the meaning the pixels cannot
Good labels are short, specific, and action-oriented. A submit icon should not be labeled “Arrow.” It should say what happens: “Submit expense report.” A delete button inside a gallery should include context: “Delete invoice 1042.” An image that is purely decorative should normally remain hidden from screen-reader users rather than receive noisy filler text.
Optimize for an app that makes sense without sight. Silencing the checker with generic text such as “Icon” merely replaces a visible error with an invisible usability failure.
AI removes the repetitive excuse
Accessible labels used to be tedious because someone had to open controls one by one, understand their purpose, and write the property manually. That work still required care, but much of it was repetitive rather than creative.
A coding agent can now inspect the same evidence a maker would use: control type, visible text, tooltip, OnSelect behavior, parent container, screen heading, and gallery context. From that evidence it can propose a concise label, apply it in the app’s YAML, and compile the result.
For example, the intent is easy to encode:
- btnSubmit:
Control: Button
Properties:
Text: ="Submit request"
AccessibleLabel: ="Submit this request"
- icoOpenRecord:
Control: Icon
Properties:
AccessibleLabel: ="Open details for " & ThisItem.Title
This is exactly the kind of bounded, contextual cleanup that AI handles well. It does not remove accountability. It makes the cost argument collapse.
Microsoft has already built the bridge
Microsoft’s open-source Canvas Apps plugin connects an AI coding assistant to a live Power Apps coauthoring session. It can synchronize an existing app into .pa.yaml files, edit those files, discover control properties, and validate the result through the Canvas Authoring MCP server.
The wider Power Platform Skills marketplace supports both Claude Code and GitHub Copilot CLI. The Canvas Apps plugin is currently in preview and requires the .NET 10 SDK. Keep the Power Apps Studio browser tab open while the coauthoring session is active.
Install the plugin
Inside a Claude Code or GitHub Copilot CLI session, add Microsoft’s marketplace and install the Canvas Apps plugin:
/plugin marketplace add microsoft/power-platform-skills
/plugin install canvas-apps@power-platform-skills
You can also use Microsoft’s installer, which detects supported tools and configures the plugins automatically:
curl -fsSL https://raw.githubusercontent.com/microsoft/power-platform-skills/main/scripts/install.js | node
Fix the debt in one focused pass
-
Open the app in Power Apps StudioStart or keep open the coauthoring session. Closing the Studio tab breaks the live connection.
-
Connect the Canvas Authoring MCP serverUse the plugin’s configuration flow to connect the agent to the correct environment and app.
-
Ask for a scoped accessibility editTell the agent to change accessible labels only, preserve behavior and layout, and identify uncertain cases.
-
Let the agent synchronize and editThe plugin pulls the app into YAML, applies the label formulas, and compiles the files against the authoring service.
-
Review and testInspect the proposed labels, return to the Accessibility Checker, and test the critical journeys with a keyboard and screen reader.
Use a prompt that demands quality
Connect to this existing canvas app and synchronize its current state.
Fix every “Missing accessible label” error without changing layout,
business logic, navigation, data sources, or visual styling.
For each interactive control:
- derive a concise, task-oriented AccessibleLabel from the control's
visible text, Tooltip, OnSelect behavior, screen context, parent
container, and gallery item;
- use a dynamic Power Fx formula when the affected record or action
changes at runtime;
- do not use generic labels such as “button”, “icon”, or the control name;
- keep decorative images and icons hidden from screen readers when they
communicate no information and perform no action;
- flag any control whose intent cannot be inferred with high confidence.
Compile until the app validates cleanly. Then return a review table with
screen, control, generated label or formula, rationale, and confidence.
Do not claim completion for any item that still needs human judgment.
The final review table matters. It turns a bulk edit into an auditable change rather than a blind rewrite. A reviewer can quickly focus on low-confidence items while accepting obvious cases such as labeled buttons and standard navigation actions.
AI can generate the baseline. Humans own the experience.
AI is not a substitute for accessibility testing. It may misunderstand an unusual icon, miss business context, or produce a technically valid label that sounds awkward when spoken. It also cannot decide from a warning count alone whether an image is informative, interactive, or decorative.
That is why the correct workflow is generation, review, and testing—not generation and trust. The agent removes mechanical effort so the team can spend its attention where judgment is actually needed.
- Every interactive control has a useful, non-generic accessible name.
- Dynamic controls include the relevant item or state in the label.
- Decorative elements do not create unnecessary screen-reader noise.
- Labels describe the outcome of an action, not merely its visual icon.
- The Accessibility Checker has been run again after the edit.
- Critical journeys work with keyboard navigation and a screen reader.
Accessibility debt is still debt when AI writes the fix. The difference is that the repayment can now take hours instead of becoming a permanent backlog item.
Open the checker. Stop accepting the number.
If your app reports dozens or hundreds of missing accessible labels, do not schedule another discussion about capacity. Connect the Microsoft plugin, generate the first pass, review it properly, and fix the experience.
Comments
Post a Comment